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
# 1.1.1.12 ALTER TABLE <maintenance> PARTITION
43
#========================================================================
44
#------------------------------------------------------------------------
45
# 1 ALTER ... ANALYZE PARTITION
46
#------------------------------------------------------------------------
47
# 1.1 ALTER ... ANALYZE PARTITION part_1;
48
DROP TABLE IF EXISTS t1;
54
f_charbig VARCHAR(1000)
57
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
58
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
60
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
61
ALTER TABLE t1 ANALYZE PARTITION part_1;
62
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
63
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
64
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
65
# Start usability test (inc/partition_check.inc)
69
t1 CREATE TABLE `t1` (
70
`f_int1` int(11) DEFAULT NULL,
71
`f_int2` int(11) DEFAULT NULL,
72
`f_char1` char(20) DEFAULT NULL,
73
`f_char2` char(20) DEFAULT NULL,
74
`f_charbig` varchar(1000) DEFAULT NULL
75
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */
77
# check prerequisites-1 success: 1
78
# check COUNT(*) success: 1
79
# check MIN/MAX(f_int1) success: 1
80
# check MIN/MAX(f_int2) success: 1
81
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
82
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
83
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
84
WHERE f_int1 IN (2,3);
85
# check prerequisites-3 success: 1
86
DELETE FROM t1 WHERE f_charbig = 'delete me';
87
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
88
# check read via f_int1 success: 1
89
# check read via f_int2 success: 1
91
# check multiple-1 success: 1
92
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
94
# check multiple-2 success: 1
95
INSERT INTO t1 SELECT * FROM t0_template
96
WHERE MOD(f_int1,3) = 0;
98
# check multiple-3 success: 1
99
UPDATE t1 SET f_int1 = f_int1 + @max_row
100
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
101
AND @max_row_div2 + @max_row_div4;
103
# check multiple-4 success: 1
105
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
106
AND @max_row_div2 + @max_row_div4 + @max_row;
108
# check multiple-5 success: 1
109
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
111
SET f_int1 = @cur_value , f_int2 = @cur_value,
112
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
113
f_charbig = '#SINGLE#';
115
# check single-1 success: 1
116
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
118
SET f_int1 = @cur_value , f_int2 = @cur_value,
119
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
120
f_charbig = '#SINGLE#';
122
# check single-2 success: 1
123
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
124
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
125
UPDATE t1 SET f_int1 = @cur_value2
126
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
128
# check single-3 success: 1
130
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
131
UPDATE t1 SET f_int1 = @cur_value1
132
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
134
# check single-4 success: 1
135
SELECT MAX(f_int1) INTO @cur_value FROM t1;
136
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
138
# check single-5 success: 1
139
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
141
# check single-6 success: 1
142
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
144
# check single-7 success: 1
145
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
146
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
147
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
148
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
149
f_charbig = '#NULL#';
151
SET f_int1 = NULL , f_int2 = -@max_row,
152
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
153
f_charbig = '#NULL#';
154
# check null success: 1
156
# check null-1 success: 1
157
UPDATE t1 SET f_int1 = -@max_row
158
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
159
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
161
# check null-2 success: 1
162
UPDATE t1 SET f_int1 = NULL
163
WHERE f_int1 = -@max_row 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-3 success: 1
168
WHERE f_int1 IS NULL 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-4 success: 1
173
WHERE f_int1 = 0 AND f_int2 = 0
174
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
175
AND f_charbig = '#NULL#';
177
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
178
SELECT f_int1, f_int1, '', '', 'was inserted'
179
FROM t0_template source_tab
180
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
182
# check transactions-1 success: 1
185
# check transactions-2 success: 1
188
# check transactions-3 success: 1
189
DELETE FROM t1 WHERE f_charbig = 'was inserted';
193
# check transactions-4 success: 1
194
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
195
SELECT f_int1, f_int1, '', '', 'was inserted'
196
FROM t0_template source_tab
197
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
199
# check transactions-5 success: 1
202
# check transactions-6 success: 1
203
# INFO: Storage engine used for t1 seems to be transactional.
206
# check transactions-7 success: 1
207
DELETE FROM t1 WHERE f_charbig = 'was inserted';
209
SET @@session.sql_mode = 'traditional';
210
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
211
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
212
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
213
'', '', 'was inserted' FROM t0_template
214
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
215
ERROR 22012: Division by 0
218
# check transactions-8 success: 1
219
# INFO: Storage engine used for t1 seems to be able to revert
220
# changes made by the failing statement.
221
SET @@session.sql_mode = '';
223
DELETE FROM t1 WHERE f_charbig = 'was inserted';
225
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
227
# check special-1 success: 1
228
UPDATE t1 SET f_charbig = '';
230
# check special-2 success: 1
231
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
232
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
233
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
235
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
236
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
237
'just inserted' FROM t0_template
238
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
239
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
241
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
242
f_charbig = 'updated by trigger'
243
WHERE f_int1 = new.f_int1;
245
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
246
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
249
# check trigger-1 success: 1
251
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
252
f_int2 = CAST(f_char1 AS SIGNED INT),
253
f_charbig = 'just inserted'
254
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
256
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
257
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
258
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
259
'just inserted' FROM t0_template
260
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
261
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
263
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
264
f_charbig = 'updated by trigger'
265
WHERE f_int1 = new.f_int1;
267
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
268
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
269
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
271
# check trigger-2 success: 1
273
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
274
f_int2 = CAST(f_char1 AS SIGNED INT),
275
f_charbig = 'just inserted'
276
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
278
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
279
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
280
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
281
'just inserted' FROM t0_template
282
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
283
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
285
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
286
f_charbig = 'updated by trigger'
287
WHERE f_int1 = new.f_int1;
289
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
290
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
292
# check trigger-3 success: 1
294
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
295
f_int2 = CAST(f_char1 AS SIGNED INT),
296
f_charbig = 'just inserted'
297
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
299
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
300
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
301
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
302
'just inserted' FROM t0_template
303
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
304
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
306
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
307
f_charbig = 'updated by trigger'
308
WHERE f_int1 = - old.f_int1;
310
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
311
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
313
# check trigger-4 success: 1
315
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
316
f_int2 = CAST(f_char1 AS SIGNED INT),
317
f_charbig = 'just inserted'
318
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
320
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
321
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
322
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
323
'just inserted' FROM t0_template
324
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
325
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
327
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
328
f_charbig = 'updated by trigger'
329
WHERE f_int1 = new.f_int1;
331
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
332
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
334
# check trigger-5 success: 1
336
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
337
f_int2 = CAST(f_char1 AS SIGNED INT),
338
f_charbig = 'just inserted'
339
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
341
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
342
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
343
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
344
'just inserted' FROM t0_template
345
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
346
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
348
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
349
f_charbig = 'updated by trigger'
350
WHERE f_int1 = - old.f_int1;
352
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
353
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
355
# check trigger-6 success: 1
357
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
358
f_int2 = CAST(f_char1 AS SIGNED INT),
359
f_charbig = 'just inserted'
360
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
362
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
363
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
364
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
365
'just inserted' FROM t0_template
366
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
367
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
369
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
370
f_charbig = 'updated by trigger'
371
WHERE f_int1 = - old.f_int1;
374
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
376
# check trigger-7 success: 1
378
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
379
f_int2 = CAST(f_char1 AS SIGNED INT),
380
f_charbig = 'just inserted'
381
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
383
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
384
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
385
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
386
'just inserted' FROM t0_template
387
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
388
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
390
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
391
f_charbig = 'updated by trigger'
392
WHERE f_int1 = - old.f_int1;
395
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
397
# check trigger-8 success: 1
399
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
400
f_int2 = CAST(f_char1 AS SIGNED INT),
401
f_charbig = 'just inserted'
402
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
404
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
406
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
407
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
409
SET new.f_int1 = old.f_int1 + @max_row,
410
new.f_int2 = old.f_int2 - @max_row,
411
new.f_charbig = '####updated per update trigger####';
414
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
415
f_charbig = '####updated per update statement itself####';
417
# check trigger-9 success: 1
419
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
420
f_int2 = CAST(f_char1 AS SIGNED INT),
421
f_charbig = CONCAT('===',f_char1,'===');
422
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
424
SET new.f_int1 = new.f_int1 + @max_row,
425
new.f_int2 = new.f_int2 - @max_row,
426
new.f_charbig = '####updated per update trigger####';
429
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
430
f_charbig = '####updated per update statement itself####';
432
# check trigger-10 success: 1
434
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
435
f_int2 = CAST(f_char1 AS SIGNED INT),
436
f_charbig = CONCAT('===',f_char1,'===');
437
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
439
SET new.f_int1 = @my_max1 + @counter,
440
new.f_int2 = @my_min2 - @counter,
441
new.f_charbig = '####updated per insert trigger####';
442
SET @counter = @counter + 1;
445
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
446
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
447
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
448
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
449
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
453
# check trigger-11 success: 1
455
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
456
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
457
AND f_charbig = '####updated per insert trigger####';
458
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
460
SET new.f_int1 = @my_max1 + @counter,
461
new.f_int2 = @my_min2 - @counter,
462
new.f_charbig = '####updated per insert trigger####';
463
SET @counter = @counter + 1;
466
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
467
INSERT INTO t1 (f_char1, f_char2, f_charbig)
468
SELECT CAST(f_int1 AS CHAR),
469
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
474
# check trigger-12 success: 1
476
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
477
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
478
AND f_charbig = '####updated per insert trigger####';
480
Table Op Msg_type Msg_text
481
test.t1 analyze status OK
482
CHECK TABLE t1 EXTENDED;
483
Table Op Msg_type Msg_text
484
test.t1 check status OK
485
CHECKSUM TABLE t1 EXTENDED;
489
Table Op Msg_type Msg_text
490
test.t1 optimize status OK
491
# check layout success: 1
492
REPAIR TABLE t1 EXTENDED;
493
Table Op Msg_type Msg_text
494
test.t1 repair note The storage engine for the table doesn't support repair
495
# check layout success: 1
498
# check TRUNCATE success: 1
499
# check layout success: 1
500
# End usability test (inc/partition_check.inc)
507
f_charbig VARCHAR(1000)
510
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
511
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
512
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
513
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
514
ALTER TABLE t1 ANALYZE PARTITION part_1;
515
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
516
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
517
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
518
# Start usability test (inc/partition_check.inc)
520
SHOW CREATE TABLE t1;
522
t1 CREATE TABLE `t1` (
523
`f_int1` int(11) DEFAULT NULL,
524
`f_int2` int(11) DEFAULT NULL,
525
`f_char1` char(20) DEFAULT NULL,
526
`f_char2` char(20) DEFAULT NULL,
527
`f_charbig` varchar(1000) DEFAULT NULL
528
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */
530
# check prerequisites-1 success: 1
531
# check COUNT(*) success: 1
532
# check MIN/MAX(f_int1) success: 1
533
# check MIN/MAX(f_int2) success: 1
534
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
535
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
536
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
537
WHERE f_int1 IN (2,3);
538
# check prerequisites-3 success: 1
539
DELETE FROM t1 WHERE f_charbig = 'delete me';
540
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
541
# check read via f_int1 success: 1
542
# check read via f_int2 success: 1
544
# check multiple-1 success: 1
545
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
547
# check multiple-2 success: 1
548
INSERT INTO t1 SELECT * FROM t0_template
549
WHERE MOD(f_int1,3) = 0;
551
# check multiple-3 success: 1
552
UPDATE t1 SET f_int1 = f_int1 + @max_row
553
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
554
AND @max_row_div2 + @max_row_div4;
556
# check multiple-4 success: 1
558
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
559
AND @max_row_div2 + @max_row_div4 + @max_row;
561
# check multiple-5 success: 1
562
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
564
SET f_int1 = @cur_value , f_int2 = @cur_value,
565
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
566
f_charbig = '#SINGLE#';
568
# check single-1 success: 1
569
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
571
SET f_int1 = @cur_value , f_int2 = @cur_value,
572
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
573
f_charbig = '#SINGLE#';
575
# check single-2 success: 1
576
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
577
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
578
UPDATE t1 SET f_int1 = @cur_value2
579
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
581
# check single-3 success: 1
583
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
584
UPDATE t1 SET f_int1 = @cur_value1
585
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
587
# check single-4 success: 1
588
SELECT MAX(f_int1) INTO @cur_value FROM t1;
589
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
591
# check single-5 success: 1
592
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
594
# check single-6 success: 1
595
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
597
# check single-7 success: 1
598
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
599
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
600
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
601
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
602
f_charbig = '#NULL#';
604
SET f_int1 = NULL , f_int2 = -@max_row,
605
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
606
f_charbig = '#NULL#';
607
# check null success: 1
609
# check null-1 success: 1
610
UPDATE t1 SET f_int1 = -@max_row
611
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
612
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
614
# check null-2 success: 1
615
UPDATE t1 SET f_int1 = NULL
616
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
617
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
619
# check null-3 success: 1
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-4 success: 1
626
WHERE f_int1 = 0 AND f_int2 = 0
627
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
628
AND f_charbig = '#NULL#';
630
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
631
SELECT f_int1, f_int1, '', '', 'was inserted'
632
FROM t0_template source_tab
633
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
635
# check transactions-1 success: 1
638
# check transactions-2 success: 1
641
# check transactions-3 success: 1
642
DELETE FROM t1 WHERE f_charbig = 'was inserted';
646
# check transactions-4 success: 1
647
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
648
SELECT f_int1, f_int1, '', '', 'was inserted'
649
FROM t0_template source_tab
650
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
652
# check transactions-5 success: 1
655
# check transactions-6 success: 1
656
# INFO: Storage engine used for t1 seems to be transactional.
659
# check transactions-7 success: 1
660
DELETE FROM t1 WHERE f_charbig = 'was inserted';
662
SET @@session.sql_mode = 'traditional';
663
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
664
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
665
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
666
'', '', 'was inserted' FROM t0_template
667
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
668
ERROR 22012: Division by 0
671
# check transactions-8 success: 1
672
# INFO: Storage engine used for t1 seems to be able to revert
673
# changes made by the failing statement.
674
SET @@session.sql_mode = '';
676
DELETE FROM t1 WHERE f_charbig = 'was inserted';
678
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
680
# check special-1 success: 1
681
UPDATE t1 SET f_charbig = '';
683
# check special-2 success: 1
684
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
685
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
686
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
687
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
688
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
689
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
690
'just inserted' FROM t0_template
691
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
692
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
694
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
695
f_charbig = 'updated by trigger'
696
WHERE f_int1 = new.f_int1;
698
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
699
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
700
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
702
# check trigger-1 success: 1
704
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
705
f_int2 = CAST(f_char1 AS SIGNED INT),
706
f_charbig = 'just inserted'
707
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
709
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
710
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
711
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
712
'just inserted' FROM t0_template
713
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
714
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
716
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
717
f_charbig = 'updated by trigger'
718
WHERE f_int1 = new.f_int1;
720
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
721
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
722
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
724
# check trigger-2 success: 1
726
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
727
f_int2 = CAST(f_char1 AS SIGNED INT),
728
f_charbig = 'just inserted'
729
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
731
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
732
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
733
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
734
'just inserted' FROM t0_template
735
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
736
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
738
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
739
f_charbig = 'updated by trigger'
740
WHERE f_int1 = new.f_int1;
742
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
743
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
745
# check trigger-3 success: 1
747
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
748
f_int2 = CAST(f_char1 AS SIGNED INT),
749
f_charbig = 'just inserted'
750
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
752
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
753
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
754
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
755
'just inserted' FROM t0_template
756
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
757
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
759
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
760
f_charbig = 'updated by trigger'
761
WHERE f_int1 = - old.f_int1;
763
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
764
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
766
# check trigger-4 success: 1
768
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
769
f_int2 = CAST(f_char1 AS SIGNED INT),
770
f_charbig = 'just inserted'
771
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
773
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
774
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
775
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
776
'just inserted' FROM t0_template
777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
778
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
780
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
781
f_charbig = 'updated by trigger'
782
WHERE f_int1 = new.f_int1;
784
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
785
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
787
# check trigger-5 success: 1
789
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
790
f_int2 = CAST(f_char1 AS SIGNED INT),
791
f_charbig = 'just inserted'
792
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
794
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
795
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
796
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
797
'just inserted' FROM t0_template
798
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
799
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
801
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
802
f_charbig = 'updated by trigger'
803
WHERE f_int1 = - old.f_int1;
805
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
806
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
808
# check trigger-6 success: 1
810
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
811
f_int2 = CAST(f_char1 AS SIGNED INT),
812
f_charbig = 'just inserted'
813
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
815
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
816
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
817
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
818
'just inserted' FROM t0_template
819
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
820
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
822
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
823
f_charbig = 'updated by trigger'
824
WHERE f_int1 = - old.f_int1;
827
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
829
# check trigger-7 success: 1
831
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
832
f_int2 = CAST(f_char1 AS SIGNED INT),
833
f_charbig = 'just inserted'
834
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
836
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
837
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
838
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
839
'just inserted' FROM t0_template
840
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
841
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
843
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
844
f_charbig = 'updated by trigger'
845
WHERE f_int1 = - old.f_int1;
848
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
850
# check trigger-8 success: 1
852
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
853
f_int2 = CAST(f_char1 AS SIGNED INT),
854
f_charbig = 'just inserted'
855
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
857
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
859
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
860
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
862
SET new.f_int1 = old.f_int1 + @max_row,
863
new.f_int2 = old.f_int2 - @max_row,
864
new.f_charbig = '####updated per update trigger####';
867
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
868
f_charbig = '####updated per update statement itself####';
870
# check trigger-9 success: 1
872
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
873
f_int2 = CAST(f_char1 AS SIGNED INT),
874
f_charbig = CONCAT('===',f_char1,'===');
875
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
877
SET new.f_int1 = new.f_int1 + @max_row,
878
new.f_int2 = new.f_int2 - @max_row,
879
new.f_charbig = '####updated per update trigger####';
882
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
883
f_charbig = '####updated per update statement itself####';
885
# check trigger-10 success: 1
887
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
888
f_int2 = CAST(f_char1 AS SIGNED INT),
889
f_charbig = CONCAT('===',f_char1,'===');
890
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
892
SET new.f_int1 = @my_max1 + @counter,
893
new.f_int2 = @my_min2 - @counter,
894
new.f_charbig = '####updated per insert trigger####';
895
SET @counter = @counter + 1;
898
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
899
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
900
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
901
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
902
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
906
# check trigger-11 success: 1
908
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
909
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
910
AND f_charbig = '####updated per insert trigger####';
911
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
913
SET new.f_int1 = @my_max1 + @counter,
914
new.f_int2 = @my_min2 - @counter,
915
new.f_charbig = '####updated per insert trigger####';
916
SET @counter = @counter + 1;
919
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
920
INSERT INTO t1 (f_char1, f_char2, f_charbig)
921
SELECT CAST(f_int1 AS CHAR),
922
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
923
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
927
# check trigger-12 success: 1
929
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
930
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
931
AND f_charbig = '####updated per insert trigger####';
933
Table Op Msg_type Msg_text
934
test.t1 analyze status OK
935
CHECK TABLE t1 EXTENDED;
936
Table Op Msg_type Msg_text
937
test.t1 check status OK
938
CHECKSUM TABLE t1 EXTENDED;
942
Table Op Msg_type Msg_text
943
test.t1 optimize status OK
944
# check layout success: 1
945
REPAIR TABLE t1 EXTENDED;
946
Table Op Msg_type Msg_text
947
test.t1 repair note The storage engine for the table doesn't support repair
948
# check layout success: 1
951
# check TRUNCATE success: 1
952
# check layout success: 1
953
# End usability test (inc/partition_check.inc)
960
f_charbig VARCHAR(1000)
963
PARTITION BY LIST(MOD(f_int1,4))
964
(PARTITION part_3 VALUES IN (-3),
965
PARTITION part_2 VALUES IN (-2),
966
PARTITION part_1 VALUES IN (-1),
967
PARTITION part_N VALUES IN (NULL),
968
PARTITION part0 VALUES IN (0),
969
PARTITION part1 VALUES IN (1),
970
PARTITION part2 VALUES IN (2),
971
PARTITION part3 VALUES IN (3));
972
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
973
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
974
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
975
ALTER TABLE t1 ANALYZE PARTITION part_1;
976
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
977
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
978
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
979
# Start usability test (inc/partition_check.inc)
981
SHOW CREATE TABLE t1;
983
t1 CREATE TABLE `t1` (
984
`f_int1` int(11) DEFAULT NULL,
985
`f_int2` int(11) DEFAULT NULL,
986
`f_char1` char(20) DEFAULT NULL,
987
`f_char2` char(20) DEFAULT NULL,
988
`f_charbig` varchar(1000) DEFAULT NULL
989
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
991
# check prerequisites-1 success: 1
992
# check COUNT(*) success: 1
993
# check MIN/MAX(f_int1) success: 1
994
# check MIN/MAX(f_int2) success: 1
995
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
996
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
997
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
998
WHERE f_int1 IN (2,3);
999
# check prerequisites-3 success: 1
1000
DELETE FROM t1 WHERE f_charbig = 'delete me';
1001
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1002
# check read via f_int1 success: 1
1003
# check read via f_int2 success: 1
1005
# check multiple-1 success: 1
1006
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1008
# check multiple-2 success: 1
1009
INSERT INTO t1 SELECT * FROM t0_template
1010
WHERE MOD(f_int1,3) = 0;
1012
# check multiple-3 success: 1
1013
UPDATE t1 SET f_int1 = f_int1 + @max_row
1014
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1015
AND @max_row_div2 + @max_row_div4;
1017
# check multiple-4 success: 1
1019
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1020
AND @max_row_div2 + @max_row_div4 + @max_row;
1022
# check multiple-5 success: 1
1023
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1025
SET f_int1 = @cur_value , f_int2 = @cur_value,
1026
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1027
f_charbig = '#SINGLE#';
1029
# check single-1 success: 1
1030
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1032
SET f_int1 = @cur_value , f_int2 = @cur_value,
1033
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1034
f_charbig = '#SINGLE#';
1036
# check single-2 success: 1
1037
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1038
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1039
UPDATE t1 SET f_int1 = @cur_value2
1040
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1042
# check single-3 success: 1
1043
SET @cur_value1= -1;
1044
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1045
UPDATE t1 SET f_int1 = @cur_value1
1046
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1048
# check single-4 success: 1
1049
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1050
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1052
# check single-5 success: 1
1053
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1055
# check single-6 success: 1
1056
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1058
# check single-7 success: 1
1059
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1060
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1061
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1062
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1063
f_charbig = '#NULL#';
1065
SET f_int1 = NULL , f_int2 = -@max_row,
1066
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1067
f_charbig = '#NULL#';
1068
# check null success: 1
1070
# check null-1 success: 1
1071
UPDATE t1 SET f_int1 = -@max_row
1072
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1073
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1075
# check null-2 success: 1
1076
UPDATE t1 SET f_int1 = NULL
1077
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1078
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1080
# check null-3 success: 1
1082
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1083
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1085
# check null-4 success: 1
1087
WHERE f_int1 = 0 AND f_int2 = 0
1088
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1089
AND f_charbig = '#NULL#';
1091
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1092
SELECT f_int1, f_int1, '', '', 'was inserted'
1093
FROM t0_template source_tab
1094
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1096
# check transactions-1 success: 1
1099
# check transactions-2 success: 1
1102
# check transactions-3 success: 1
1103
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1107
# check transactions-4 success: 1
1108
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1109
SELECT f_int1, f_int1, '', '', 'was inserted'
1110
FROM t0_template source_tab
1111
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1113
# check transactions-5 success: 1
1116
# check transactions-6 success: 1
1117
# INFO: Storage engine used for t1 seems to be transactional.
1120
# check transactions-7 success: 1
1121
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1123
SET @@session.sql_mode = 'traditional';
1124
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1125
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1126
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1127
'', '', 'was inserted' FROM t0_template
1128
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1129
ERROR 22012: Division by 0
1132
# check transactions-8 success: 1
1133
# INFO: Storage engine used for t1 seems to be able to revert
1134
# changes made by the failing statement.
1135
SET @@session.sql_mode = '';
1137
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1139
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1141
# check special-1 success: 1
1142
UPDATE t1 SET f_charbig = '';
1144
# check special-2 success: 1
1145
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1146
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1147
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1148
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1149
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1150
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1151
'just inserted' FROM t0_template
1152
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1153
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1155
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1156
f_charbig = 'updated by trigger'
1157
WHERE f_int1 = new.f_int1;
1159
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1160
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1161
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1163
# check trigger-1 success: 1
1165
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1166
f_int2 = CAST(f_char1 AS SIGNED INT),
1167
f_charbig = 'just inserted'
1168
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1170
WHERE ABS(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 AFTER 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-2 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 BEFORE UPDATE 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
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1204
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1206
# check trigger-3 success: 1
1208
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1209
f_int2 = CAST(f_char1 AS SIGNED INT),
1210
f_charbig = 'just inserted'
1211
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1213
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1214
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1215
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1216
'just inserted' FROM t0_template
1217
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1218
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1220
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1221
f_charbig = 'updated by trigger'
1222
WHERE f_int1 = - old.f_int1;
1224
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1225
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1227
# check trigger-4 success: 1
1229
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1230
f_int2 = CAST(f_char1 AS SIGNED INT),
1231
f_charbig = 'just inserted'
1232
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1234
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1235
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1236
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1237
'just inserted' FROM t0_template
1238
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1239
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1241
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1242
f_charbig = 'updated by trigger'
1243
WHERE f_int1 = new.f_int1;
1245
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1246
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1248
# check trigger-5 success: 1
1250
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1251
f_int2 = CAST(f_char1 AS SIGNED INT),
1252
f_charbig = 'just inserted'
1253
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1255
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1256
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1257
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1258
'just inserted' FROM t0_template
1259
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1260
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1262
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1263
f_charbig = 'updated by trigger'
1264
WHERE f_int1 = - old.f_int1;
1266
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1267
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1269
# check trigger-6 success: 1
1271
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1272
f_int2 = CAST(f_char1 AS SIGNED INT),
1273
f_charbig = 'just inserted'
1274
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1276
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1277
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1278
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1279
'just inserted' FROM t0_template
1280
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1281
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1283
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1284
f_charbig = 'updated by trigger'
1285
WHERE f_int1 = - old.f_int1;
1288
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1290
# check trigger-7 success: 1
1292
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1293
f_int2 = CAST(f_char1 AS SIGNED INT),
1294
f_charbig = 'just inserted'
1295
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1297
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1298
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1299
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1300
'just inserted' FROM t0_template
1301
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1302
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1304
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1305
f_charbig = 'updated by trigger'
1306
WHERE f_int1 = - old.f_int1;
1309
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1311
# check trigger-8 success: 1
1313
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1314
f_int2 = CAST(f_char1 AS SIGNED INT),
1315
f_charbig = 'just inserted'
1316
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1318
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1320
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1321
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1323
SET new.f_int1 = old.f_int1 + @max_row,
1324
new.f_int2 = old.f_int2 - @max_row,
1325
new.f_charbig = '####updated per update trigger####';
1328
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1329
f_charbig = '####updated per update statement itself####';
1331
# check trigger-9 success: 1
1333
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1334
f_int2 = CAST(f_char1 AS SIGNED INT),
1335
f_charbig = CONCAT('===',f_char1,'===');
1336
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1338
SET new.f_int1 = new.f_int1 + @max_row,
1339
new.f_int2 = new.f_int2 - @max_row,
1340
new.f_charbig = '####updated per update trigger####';
1343
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1344
f_charbig = '####updated per update statement itself####';
1346
# check trigger-10 success: 1
1348
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1349
f_int2 = CAST(f_char1 AS SIGNED INT),
1350
f_charbig = CONCAT('===',f_char1,'===');
1351
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1353
SET new.f_int1 = @my_max1 + @counter,
1354
new.f_int2 = @my_min2 - @counter,
1355
new.f_charbig = '####updated per insert trigger####';
1356
SET @counter = @counter + 1;
1359
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1360
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1361
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1362
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1363
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1367
# check trigger-11 success: 1
1369
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1370
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1371
AND f_charbig = '####updated per insert trigger####';
1372
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1374
SET new.f_int1 = @my_max1 + @counter,
1375
new.f_int2 = @my_min2 - @counter,
1376
new.f_charbig = '####updated per insert trigger####';
1377
SET @counter = @counter + 1;
1380
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1381
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1382
SELECT CAST(f_int1 AS CHAR),
1383
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1384
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1388
# check trigger-12 success: 1
1390
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1391
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1392
AND f_charbig = '####updated per insert trigger####';
1394
Table Op Msg_type Msg_text
1395
test.t1 analyze status OK
1396
CHECK TABLE t1 EXTENDED;
1397
Table Op Msg_type Msg_text
1398
test.t1 check status OK
1399
CHECKSUM TABLE t1 EXTENDED;
1401
test.t1 <some_value>
1403
Table Op Msg_type Msg_text
1404
test.t1 optimize status OK
1405
# check layout success: 1
1406
REPAIR TABLE t1 EXTENDED;
1407
Table Op Msg_type Msg_text
1408
test.t1 repair note The storage engine for the table doesn't support repair
1409
# check layout success: 1
1412
# check TRUNCATE success: 1
1413
# check layout success: 1
1414
# End usability test (inc/partition_check.inc)
1421
f_charbig VARCHAR(1000)
1424
PARTITION BY RANGE(f_int1)
1425
(PARTITION parta VALUES LESS THAN (0),
1426
PARTITION part_1 VALUES LESS THAN (5),
1427
PARTITION part_2 VALUES LESS THAN (10),
1428
PARTITION part_3 VALUES LESS THAN (10 + 5),
1429
PARTITION part_4 VALUES LESS THAN (20),
1430
PARTITION part_5 VALUES LESS THAN (2147483646));
1431
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1432
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1433
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1434
ALTER TABLE t1 ANALYZE PARTITION part_1;
1435
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1436
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1437
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1438
# Start usability test (inc/partition_check.inc)
1440
SHOW CREATE TABLE t1;
1442
t1 CREATE TABLE `t1` (
1443
`f_int1` int(11) DEFAULT NULL,
1444
`f_int2` int(11) DEFAULT NULL,
1445
`f_char1` char(20) DEFAULT NULL,
1446
`f_char2` char(20) DEFAULT NULL,
1447
`f_charbig` varchar(1000) DEFAULT NULL
1448
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
1450
# check prerequisites-1 success: 1
1451
# check COUNT(*) success: 1
1452
# check MIN/MAX(f_int1) success: 1
1453
# check MIN/MAX(f_int2) success: 1
1454
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1455
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1456
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1457
WHERE f_int1 IN (2,3);
1458
# check prerequisites-3 success: 1
1459
DELETE FROM t1 WHERE f_charbig = 'delete me';
1460
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1461
# check read via f_int1 success: 1
1462
# check read via f_int2 success: 1
1464
# check multiple-1 success: 1
1465
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1467
# check multiple-2 success: 1
1468
INSERT INTO t1 SELECT * FROM t0_template
1469
WHERE MOD(f_int1,3) = 0;
1471
# check multiple-3 success: 1
1472
UPDATE t1 SET f_int1 = f_int1 + @max_row
1473
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1474
AND @max_row_div2 + @max_row_div4;
1476
# check multiple-4 success: 1
1478
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1479
AND @max_row_div2 + @max_row_div4 + @max_row;
1481
# check multiple-5 success: 1
1482
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1484
SET f_int1 = @cur_value , f_int2 = @cur_value,
1485
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1486
f_charbig = '#SINGLE#';
1488
# check single-1 success: 1
1489
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1491
SET f_int1 = @cur_value , f_int2 = @cur_value,
1492
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1493
f_charbig = '#SINGLE#';
1495
# check single-2 success: 1
1496
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1497
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1498
UPDATE t1 SET f_int1 = @cur_value2
1499
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1501
# check single-3 success: 1
1502
SET @cur_value1= -1;
1503
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1504
UPDATE t1 SET f_int1 = @cur_value1
1505
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1507
# check single-4 success: 1
1508
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1509
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1511
# check single-5 success: 1
1512
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1514
# check single-6 success: 1
1515
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1516
ERROR HY000: Table has no partition for value 2147483647
1517
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1518
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1519
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1520
f_charbig = '#NULL#';
1522
SET f_int1 = NULL , f_int2 = -@max_row,
1523
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1524
f_charbig = '#NULL#';
1525
# check null success: 1
1527
# check null-1 success: 1
1528
UPDATE t1 SET f_int1 = -@max_row
1529
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1530
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1532
# check null-2 success: 1
1533
UPDATE t1 SET f_int1 = NULL
1534
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1535
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1537
# check null-3 success: 1
1539
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1540
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1542
# check null-4 success: 1
1544
WHERE f_int1 = 0 AND f_int2 = 0
1545
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1546
AND f_charbig = '#NULL#';
1548
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1549
SELECT f_int1, f_int1, '', '', 'was inserted'
1550
FROM t0_template source_tab
1551
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1553
# check transactions-1 success: 1
1556
# check transactions-2 success: 1
1559
# check transactions-3 success: 1
1560
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1564
# check transactions-4 success: 1
1565
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1566
SELECT f_int1, f_int1, '', '', 'was inserted'
1567
FROM t0_template source_tab
1568
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1570
# check transactions-5 success: 1
1573
# check transactions-6 success: 1
1574
# INFO: Storage engine used for t1 seems to be transactional.
1577
# check transactions-7 success: 1
1578
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1580
SET @@session.sql_mode = 'traditional';
1581
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1582
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1583
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1584
'', '', 'was inserted' FROM t0_template
1585
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1586
ERROR 22012: Division by 0
1589
# check transactions-8 success: 1
1590
# INFO: Storage engine used for t1 seems to be able to revert
1591
# changes made by the failing statement.
1592
SET @@session.sql_mode = '';
1594
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1596
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1598
# check special-1 success: 1
1599
UPDATE t1 SET f_charbig = '';
1601
# check special-2 success: 1
1602
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1603
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1604
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1605
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1606
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1607
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1608
'just inserted' FROM t0_template
1609
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1610
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1612
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1613
f_charbig = 'updated by trigger'
1614
WHERE f_int1 = new.f_int1;
1616
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1617
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1618
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1620
# check trigger-1 success: 1
1622
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1623
f_int2 = CAST(f_char1 AS SIGNED INT),
1624
f_charbig = 'just inserted'
1625
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1627
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1628
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1629
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1630
'just inserted' FROM t0_template
1631
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1632
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1634
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1635
f_charbig = 'updated by trigger'
1636
WHERE f_int1 = new.f_int1;
1638
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1639
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1640
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1642
# check trigger-2 success: 1
1644
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1645
f_int2 = CAST(f_char1 AS SIGNED INT),
1646
f_charbig = 'just inserted'
1647
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1649
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1650
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1651
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1652
'just inserted' FROM t0_template
1653
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1654
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1656
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1657
f_charbig = 'updated by trigger'
1658
WHERE f_int1 = new.f_int1;
1660
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1661
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1663
# check trigger-3 success: 1
1665
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1666
f_int2 = CAST(f_char1 AS SIGNED INT),
1667
f_charbig = 'just inserted'
1668
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1670
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1671
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1672
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1673
'just inserted' FROM t0_template
1674
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1675
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1677
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1678
f_charbig = 'updated by trigger'
1679
WHERE f_int1 = - old.f_int1;
1681
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1682
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1684
# check trigger-4 success: 1
1686
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1687
f_int2 = CAST(f_char1 AS SIGNED INT),
1688
f_charbig = 'just inserted'
1689
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1691
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1692
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1693
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1694
'just inserted' FROM t0_template
1695
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1696
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1698
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1699
f_charbig = 'updated by trigger'
1700
WHERE f_int1 = new.f_int1;
1702
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1703
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1705
# check trigger-5 success: 1
1707
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1708
f_int2 = CAST(f_char1 AS SIGNED INT),
1709
f_charbig = 'just inserted'
1710
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1712
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1713
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1714
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1715
'just inserted' FROM t0_template
1716
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1717
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1719
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1720
f_charbig = 'updated by trigger'
1721
WHERE f_int1 = - old.f_int1;
1723
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1724
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1726
# check trigger-6 success: 1
1728
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1729
f_int2 = CAST(f_char1 AS SIGNED INT),
1730
f_charbig = 'just inserted'
1731
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1733
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1734
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1735
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1736
'just inserted' FROM t0_template
1737
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1738
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1740
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1741
f_charbig = 'updated by trigger'
1742
WHERE f_int1 = - old.f_int1;
1745
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1747
# check trigger-7 success: 1
1749
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1750
f_int2 = CAST(f_char1 AS SIGNED INT),
1751
f_charbig = 'just inserted'
1752
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1754
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1755
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1756
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1757
'just inserted' FROM t0_template
1758
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1759
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1761
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1762
f_charbig = 'updated by trigger'
1763
WHERE f_int1 = - old.f_int1;
1766
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1768
# check trigger-8 success: 1
1770
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1771
f_int2 = CAST(f_char1 AS SIGNED INT),
1772
f_charbig = 'just inserted'
1773
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1775
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1778
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1780
SET new.f_int1 = old.f_int1 + @max_row,
1781
new.f_int2 = old.f_int2 - @max_row,
1782
new.f_charbig = '####updated per update trigger####';
1785
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1786
f_charbig = '####updated per update statement itself####';
1788
# check trigger-9 success: 1
1790
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1791
f_int2 = CAST(f_char1 AS SIGNED INT),
1792
f_charbig = CONCAT('===',f_char1,'===');
1793
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1795
SET new.f_int1 = new.f_int1 + @max_row,
1796
new.f_int2 = new.f_int2 - @max_row,
1797
new.f_charbig = '####updated per update trigger####';
1800
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1801
f_charbig = '####updated per update statement itself####';
1803
# check trigger-10 success: 1
1805
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1806
f_int2 = CAST(f_char1 AS SIGNED INT),
1807
f_charbig = CONCAT('===',f_char1,'===');
1808
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1810
SET new.f_int1 = @my_max1 + @counter,
1811
new.f_int2 = @my_min2 - @counter,
1812
new.f_charbig = '####updated per insert trigger####';
1813
SET @counter = @counter + 1;
1816
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1817
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1818
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1819
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1820
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1824
# check trigger-11 success: 1
1826
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1827
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1828
AND f_charbig = '####updated per insert trigger####';
1829
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1831
SET new.f_int1 = @my_max1 + @counter,
1832
new.f_int2 = @my_min2 - @counter,
1833
new.f_charbig = '####updated per insert trigger####';
1834
SET @counter = @counter + 1;
1837
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1838
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1839
SELECT CAST(f_int1 AS CHAR),
1840
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1841
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1845
# check trigger-12 success: 1
1847
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1848
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1849
AND f_charbig = '####updated per insert trigger####';
1851
Table Op Msg_type Msg_text
1852
test.t1 analyze status OK
1853
CHECK TABLE t1 EXTENDED;
1854
Table Op Msg_type Msg_text
1855
test.t1 check status OK
1856
CHECKSUM TABLE t1 EXTENDED;
1858
test.t1 <some_value>
1860
Table Op Msg_type Msg_text
1861
test.t1 optimize status OK
1862
# check layout success: 1
1863
REPAIR TABLE t1 EXTENDED;
1864
Table Op Msg_type Msg_text
1865
test.t1 repair note The storage engine for the table doesn't support repair
1866
# check layout success: 1
1869
# check TRUNCATE success: 1
1870
# check layout success: 1
1871
# End usability test (inc/partition_check.inc)
1878
f_charbig VARCHAR(1000)
1881
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
1882
(PARTITION part_1 VALUES LESS THAN (0),
1883
PARTITION part_2 VALUES LESS THAN (5),
1884
PARTITION part_3 VALUES LESS THAN (10),
1885
PARTITION part_4 VALUES LESS THAN (2147483646));
1886
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1887
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1888
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1889
ALTER TABLE t1 ANALYZE PARTITION part_1;
1890
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1891
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1892
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1893
# Start usability test (inc/partition_check.inc)
1895
SHOW CREATE TABLE t1;
1897
t1 CREATE TABLE `t1` (
1898
`f_int1` int(11) DEFAULT NULL,
1899
`f_int2` int(11) DEFAULT NULL,
1900
`f_char1` char(20) DEFAULT NULL,
1901
`f_char2` char(20) DEFAULT NULL,
1902
`f_charbig` varchar(1000) DEFAULT NULL
1903
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
1905
# check prerequisites-1 success: 1
1906
# check COUNT(*) success: 1
1907
# check MIN/MAX(f_int1) success: 1
1908
# check MIN/MAX(f_int2) success: 1
1909
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1910
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1911
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1912
WHERE f_int1 IN (2,3);
1913
# check prerequisites-3 success: 1
1914
DELETE FROM t1 WHERE f_charbig = 'delete me';
1915
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1916
# check read via f_int1 success: 1
1917
# check read via f_int2 success: 1
1919
# check multiple-1 success: 1
1920
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1922
# check multiple-2 success: 1
1923
INSERT INTO t1 SELECT * FROM t0_template
1924
WHERE MOD(f_int1,3) = 0;
1926
# check multiple-3 success: 1
1927
UPDATE t1 SET f_int1 = f_int1 + @max_row
1928
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1929
AND @max_row_div2 + @max_row_div4;
1931
# check multiple-4 success: 1
1933
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1934
AND @max_row_div2 + @max_row_div4 + @max_row;
1936
# check multiple-5 success: 1
1937
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1939
SET f_int1 = @cur_value , f_int2 = @cur_value,
1940
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1941
f_charbig = '#SINGLE#';
1943
# check single-1 success: 1
1944
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1946
SET f_int1 = @cur_value , f_int2 = @cur_value,
1947
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1948
f_charbig = '#SINGLE#';
1950
# check single-2 success: 1
1951
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1952
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1953
UPDATE t1 SET f_int1 = @cur_value2
1954
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1956
# check single-3 success: 1
1957
SET @cur_value1= -1;
1958
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1959
UPDATE t1 SET f_int1 = @cur_value1
1960
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1962
# check single-4 success: 1
1963
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1964
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1966
# check single-5 success: 1
1967
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1969
# check single-6 success: 1
1970
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1972
# check single-7 success: 1
1973
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1974
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1975
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1976
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1977
f_charbig = '#NULL#';
1979
SET f_int1 = NULL , f_int2 = -@max_row,
1980
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1981
f_charbig = '#NULL#';
1982
# check null success: 1
1984
# check null-1 success: 1
1985
UPDATE t1 SET f_int1 = -@max_row
1986
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1987
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1989
# check null-2 success: 1
1990
UPDATE t1 SET f_int1 = NULL
1991
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1992
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1994
# check null-3 success: 1
1996
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1997
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1999
# check null-4 success: 1
2001
WHERE f_int1 = 0 AND f_int2 = 0
2002
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2003
AND f_charbig = '#NULL#';
2005
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2006
SELECT f_int1, f_int1, '', '', 'was inserted'
2007
FROM t0_template source_tab
2008
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2010
# check transactions-1 success: 1
2013
# check transactions-2 success: 1
2016
# check transactions-3 success: 1
2017
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2021
# check transactions-4 success: 1
2022
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2023
SELECT f_int1, f_int1, '', '', 'was inserted'
2024
FROM t0_template source_tab
2025
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2027
# check transactions-5 success: 1
2030
# check transactions-6 success: 1
2031
# INFO: Storage engine used for t1 seems to be transactional.
2034
# check transactions-7 success: 1
2035
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2037
SET @@session.sql_mode = 'traditional';
2038
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2039
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2040
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2041
'', '', 'was inserted' FROM t0_template
2042
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2043
ERROR 22012: Division by 0
2046
# check transactions-8 success: 1
2047
# INFO: Storage engine used for t1 seems to be able to revert
2048
# changes made by the failing statement.
2049
SET @@session.sql_mode = '';
2051
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2053
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2055
# check special-1 success: 1
2056
UPDATE t1 SET f_charbig = '';
2058
# check special-2 success: 1
2059
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2060
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2061
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2062
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2063
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2064
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2065
'just inserted' FROM t0_template
2066
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2067
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2069
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2070
f_charbig = 'updated by trigger'
2071
WHERE f_int1 = new.f_int1;
2073
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2074
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2075
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2077
# check trigger-1 success: 1
2079
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2080
f_int2 = CAST(f_char1 AS SIGNED INT),
2081
f_charbig = 'just inserted'
2082
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2084
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2085
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2086
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2087
'just inserted' FROM t0_template
2088
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2089
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2091
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2092
f_charbig = 'updated by trigger'
2093
WHERE f_int1 = new.f_int1;
2095
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2096
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2097
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2099
# check trigger-2 success: 1
2101
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2102
f_int2 = CAST(f_char1 AS SIGNED INT),
2103
f_charbig = 'just inserted'
2104
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2106
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2107
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2108
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2109
'just inserted' FROM t0_template
2110
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2111
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2113
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2114
f_charbig = 'updated by trigger'
2115
WHERE f_int1 = new.f_int1;
2117
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2118
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2120
# check trigger-3 success: 1
2122
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2123
f_int2 = CAST(f_char1 AS SIGNED INT),
2124
f_charbig = 'just inserted'
2125
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2127
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2128
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2129
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2130
'just inserted' FROM t0_template
2131
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2132
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2134
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2135
f_charbig = 'updated by trigger'
2136
WHERE f_int1 = - old.f_int1;
2138
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2139
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2141
# check trigger-4 success: 1
2143
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2144
f_int2 = CAST(f_char1 AS SIGNED INT),
2145
f_charbig = 'just inserted'
2146
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2148
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2149
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2150
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2151
'just inserted' FROM t0_template
2152
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2153
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2155
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2156
f_charbig = 'updated by trigger'
2157
WHERE f_int1 = new.f_int1;
2159
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2160
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2162
# check trigger-5 success: 1
2164
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2165
f_int2 = CAST(f_char1 AS SIGNED INT),
2166
f_charbig = 'just inserted'
2167
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2169
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2170
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2171
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2172
'just inserted' FROM t0_template
2173
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2174
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2176
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2177
f_charbig = 'updated by trigger'
2178
WHERE f_int1 = - old.f_int1;
2180
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2181
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2183
# check trigger-6 success: 1
2185
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2186
f_int2 = CAST(f_char1 AS SIGNED INT),
2187
f_charbig = 'just inserted'
2188
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2190
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2191
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2192
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2193
'just inserted' FROM t0_template
2194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2195
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2197
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2198
f_charbig = 'updated by trigger'
2199
WHERE f_int1 = - old.f_int1;
2202
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2204
# check trigger-7 success: 1
2206
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2207
f_int2 = CAST(f_char1 AS SIGNED INT),
2208
f_charbig = 'just inserted'
2209
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2211
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2212
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2213
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2214
'just inserted' FROM t0_template
2215
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2216
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2218
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2219
f_charbig = 'updated by trigger'
2220
WHERE f_int1 = - old.f_int1;
2223
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2225
# check trigger-8 success: 1
2227
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2228
f_int2 = CAST(f_char1 AS SIGNED INT),
2229
f_charbig = 'just inserted'
2230
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2232
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2235
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2237
SET new.f_int1 = old.f_int1 + @max_row,
2238
new.f_int2 = old.f_int2 - @max_row,
2239
new.f_charbig = '####updated per update trigger####';
2242
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2243
f_charbig = '####updated per update statement itself####';
2245
# check trigger-9 success: 1
2247
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2248
f_int2 = CAST(f_char1 AS SIGNED INT),
2249
f_charbig = CONCAT('===',f_char1,'===');
2250
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2252
SET new.f_int1 = new.f_int1 + @max_row,
2253
new.f_int2 = new.f_int2 - @max_row,
2254
new.f_charbig = '####updated per update trigger####';
2257
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2258
f_charbig = '####updated per update statement itself####';
2260
# check trigger-10 success: 1
2262
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2263
f_int2 = CAST(f_char1 AS SIGNED INT),
2264
f_charbig = CONCAT('===',f_char1,'===');
2265
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2267
SET new.f_int1 = @my_max1 + @counter,
2268
new.f_int2 = @my_min2 - @counter,
2269
new.f_charbig = '####updated per insert trigger####';
2270
SET @counter = @counter + 1;
2273
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2274
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2275
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2276
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2281
# check trigger-11 success: 1
2283
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2284
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2285
AND f_charbig = '####updated per insert trigger####';
2286
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2288
SET new.f_int1 = @my_max1 + @counter,
2289
new.f_int2 = @my_min2 - @counter,
2290
new.f_charbig = '####updated per insert trigger####';
2291
SET @counter = @counter + 1;
2294
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2295
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2296
SELECT CAST(f_int1 AS CHAR),
2297
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2298
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2302
# check trigger-12 success: 1
2304
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2305
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2306
AND f_charbig = '####updated per insert trigger####';
2308
Table Op Msg_type Msg_text
2309
test.t1 analyze status OK
2310
CHECK TABLE t1 EXTENDED;
2311
Table Op Msg_type Msg_text
2312
test.t1 check status OK
2313
CHECKSUM TABLE t1 EXTENDED;
2315
test.t1 <some_value>
2317
Table Op Msg_type Msg_text
2318
test.t1 optimize status OK
2319
# check layout success: 1
2320
REPAIR TABLE t1 EXTENDED;
2321
Table Op Msg_type Msg_text
2322
test.t1 repair note The storage engine for the table doesn't support repair
2323
# check layout success: 1
2326
# check TRUNCATE success: 1
2327
# check layout success: 1
2328
# End usability test (inc/partition_check.inc)
2335
f_charbig VARCHAR(1000)
2338
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
2339
(PARTITION part_1 VALUES LESS THAN (0)
2340
(SUBPARTITION subpart11, SUBPARTITION subpart12),
2341
PARTITION part_2 VALUES LESS THAN (5)
2342
(SUBPARTITION subpart21, SUBPARTITION subpart22),
2343
PARTITION part_3 VALUES LESS THAN (10)
2344
(SUBPARTITION subpart31, SUBPARTITION subpart32),
2345
PARTITION part_4 VALUES LESS THAN (2147483646)
2346
(SUBPARTITION subpart41, SUBPARTITION subpart42));
2347
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2348
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2349
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2350
ALTER TABLE t1 ANALYZE PARTITION part_1;
2351
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2352
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2353
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2354
# Start usability test (inc/partition_check.inc)
2356
SHOW CREATE TABLE t1;
2358
t1 CREATE TABLE `t1` (
2359
`f_int1` int(11) DEFAULT NULL,
2360
`f_int2` int(11) DEFAULT NULL,
2361
`f_char1` char(20) DEFAULT NULL,
2362
`f_char2` char(20) DEFAULT NULL,
2363
`f_charbig` varchar(1000) DEFAULT NULL
2364
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
2366
# check prerequisites-1 success: 1
2367
# check COUNT(*) success: 1
2368
# check MIN/MAX(f_int1) success: 1
2369
# check MIN/MAX(f_int2) success: 1
2370
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2371
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2372
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2373
WHERE f_int1 IN (2,3);
2374
# check prerequisites-3 success: 1
2375
DELETE FROM t1 WHERE f_charbig = 'delete me';
2376
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2377
# check read via f_int1 success: 1
2378
# check read via f_int2 success: 1
2380
# check multiple-1 success: 1
2381
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2383
# check multiple-2 success: 1
2384
INSERT INTO t1 SELECT * FROM t0_template
2385
WHERE MOD(f_int1,3) = 0;
2387
# check multiple-3 success: 1
2388
UPDATE t1 SET f_int1 = f_int1 + @max_row
2389
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2390
AND @max_row_div2 + @max_row_div4;
2392
# check multiple-4 success: 1
2394
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2395
AND @max_row_div2 + @max_row_div4 + @max_row;
2397
# check multiple-5 success: 1
2398
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2400
SET f_int1 = @cur_value , f_int2 = @cur_value,
2401
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2402
f_charbig = '#SINGLE#';
2404
# check single-1 success: 1
2405
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2407
SET f_int1 = @cur_value , f_int2 = @cur_value,
2408
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2409
f_charbig = '#SINGLE#';
2411
# check single-2 success: 1
2412
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2413
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2414
UPDATE t1 SET f_int1 = @cur_value2
2415
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2417
# check single-3 success: 1
2418
SET @cur_value1= -1;
2419
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2420
UPDATE t1 SET f_int1 = @cur_value1
2421
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2423
# check single-4 success: 1
2424
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2425
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2427
# check single-5 success: 1
2428
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2430
# check single-6 success: 1
2431
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2432
ERROR HY000: Table has no partition for value 2147483647
2433
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2434
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2435
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2436
f_charbig = '#NULL#';
2438
SET f_int1 = NULL , f_int2 = -@max_row,
2439
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2440
f_charbig = '#NULL#';
2441
# check null success: 1
2443
# check null-1 success: 1
2444
UPDATE t1 SET f_int1 = -@max_row
2445
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2446
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2448
# check null-2 success: 1
2449
UPDATE t1 SET f_int1 = NULL
2450
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2451
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2453
# check null-3 success: 1
2455
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2456
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2458
# check null-4 success: 1
2460
WHERE f_int1 = 0 AND f_int2 = 0
2461
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2462
AND f_charbig = '#NULL#';
2464
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2465
SELECT f_int1, f_int1, '', '', 'was inserted'
2466
FROM t0_template source_tab
2467
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2469
# check transactions-1 success: 1
2472
# check transactions-2 success: 1
2475
# check transactions-3 success: 1
2476
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2480
# check transactions-4 success: 1
2481
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2482
SELECT f_int1, f_int1, '', '', 'was inserted'
2483
FROM t0_template source_tab
2484
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2486
# check transactions-5 success: 1
2489
# check transactions-6 success: 1
2490
# INFO: Storage engine used for t1 seems to be transactional.
2493
# check transactions-7 success: 1
2494
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2496
SET @@session.sql_mode = 'traditional';
2497
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2498
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2499
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2500
'', '', 'was inserted' FROM t0_template
2501
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2502
ERROR 22012: Division by 0
2505
# check transactions-8 success: 1
2506
# INFO: Storage engine used for t1 seems to be able to revert
2507
# changes made by the failing statement.
2508
SET @@session.sql_mode = '';
2510
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2512
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2514
# check special-1 success: 1
2515
UPDATE t1 SET f_charbig = '';
2517
# check special-2 success: 1
2518
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2519
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2520
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2521
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2522
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2523
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2524
'just inserted' FROM t0_template
2525
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2526
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2528
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2529
f_charbig = 'updated by trigger'
2530
WHERE f_int1 = new.f_int1;
2532
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2533
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2534
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2536
# check trigger-1 success: 1
2538
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2539
f_int2 = CAST(f_char1 AS SIGNED INT),
2540
f_charbig = 'just inserted'
2541
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2543
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2544
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2545
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2546
'just inserted' FROM t0_template
2547
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2548
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2550
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2551
f_charbig = 'updated by trigger'
2552
WHERE f_int1 = new.f_int1;
2554
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2555
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2556
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2558
# check trigger-2 success: 1
2560
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2561
f_int2 = CAST(f_char1 AS SIGNED INT),
2562
f_charbig = 'just inserted'
2563
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2565
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2566
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2567
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2568
'just inserted' FROM t0_template
2569
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2570
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2572
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2573
f_charbig = 'updated by trigger'
2574
WHERE f_int1 = new.f_int1;
2576
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2577
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2579
# check trigger-3 success: 1
2581
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2582
f_int2 = CAST(f_char1 AS SIGNED INT),
2583
f_charbig = 'just inserted'
2584
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2586
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2587
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2588
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2589
'just inserted' FROM t0_template
2590
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2591
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2593
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2594
f_charbig = 'updated by trigger'
2595
WHERE f_int1 = - old.f_int1;
2597
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2598
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2600
# check trigger-4 success: 1
2602
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2603
f_int2 = CAST(f_char1 AS SIGNED INT),
2604
f_charbig = 'just inserted'
2605
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2607
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2608
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2609
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2610
'just inserted' FROM t0_template
2611
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2612
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2614
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2615
f_charbig = 'updated by trigger'
2616
WHERE f_int1 = new.f_int1;
2618
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2619
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2621
# check trigger-5 success: 1
2623
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2624
f_int2 = CAST(f_char1 AS SIGNED INT),
2625
f_charbig = 'just inserted'
2626
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2628
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2629
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2630
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2631
'just inserted' FROM t0_template
2632
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2633
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2635
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2636
f_charbig = 'updated by trigger'
2637
WHERE f_int1 = - old.f_int1;
2639
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2640
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2642
# check trigger-6 success: 1
2644
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2645
f_int2 = CAST(f_char1 AS SIGNED INT),
2646
f_charbig = 'just inserted'
2647
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2649
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2650
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2651
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2652
'just inserted' FROM t0_template
2653
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2654
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2656
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2657
f_charbig = 'updated by trigger'
2658
WHERE f_int1 = - old.f_int1;
2661
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2663
# check trigger-7 success: 1
2665
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2666
f_int2 = CAST(f_char1 AS SIGNED INT),
2667
f_charbig = 'just inserted'
2668
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2670
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2671
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2672
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2673
'just inserted' FROM t0_template
2674
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2675
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2677
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2678
f_charbig = 'updated by trigger'
2679
WHERE f_int1 = - old.f_int1;
2682
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2684
# check trigger-8 success: 1
2686
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2687
f_int2 = CAST(f_char1 AS SIGNED INT),
2688
f_charbig = 'just inserted'
2689
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2691
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2693
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2694
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2696
SET new.f_int1 = old.f_int1 + @max_row,
2697
new.f_int2 = old.f_int2 - @max_row,
2698
new.f_charbig = '####updated per update trigger####';
2701
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2702
f_charbig = '####updated per update statement itself####';
2704
# check trigger-9 success: 1
2706
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2707
f_int2 = CAST(f_char1 AS SIGNED INT),
2708
f_charbig = CONCAT('===',f_char1,'===');
2709
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2711
SET new.f_int1 = new.f_int1 + @max_row,
2712
new.f_int2 = new.f_int2 - @max_row,
2713
new.f_charbig = '####updated per update trigger####';
2716
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2717
f_charbig = '####updated per update statement itself####';
2719
# check trigger-10 success: 1
2721
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2722
f_int2 = CAST(f_char1 AS SIGNED INT),
2723
f_charbig = CONCAT('===',f_char1,'===');
2724
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2726
SET new.f_int1 = @my_max1 + @counter,
2727
new.f_int2 = @my_min2 - @counter,
2728
new.f_charbig = '####updated per insert trigger####';
2729
SET @counter = @counter + 1;
2732
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2733
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2734
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2735
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2736
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2740
# check trigger-11 success: 1
2742
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2743
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2744
AND f_charbig = '####updated per insert trigger####';
2745
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2747
SET new.f_int1 = @my_max1 + @counter,
2748
new.f_int2 = @my_min2 - @counter,
2749
new.f_charbig = '####updated per insert trigger####';
2750
SET @counter = @counter + 1;
2753
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2754
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2755
SELECT CAST(f_int1 AS CHAR),
2756
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2757
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2761
# check trigger-12 success: 1
2763
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2764
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2765
AND f_charbig = '####updated per insert trigger####';
2767
Table Op Msg_type Msg_text
2768
test.t1 analyze status OK
2769
CHECK TABLE t1 EXTENDED;
2770
Table Op Msg_type Msg_text
2771
test.t1 check status OK
2772
CHECKSUM TABLE t1 EXTENDED;
2774
test.t1 <some_value>
2776
Table Op Msg_type Msg_text
2777
test.t1 optimize status OK
2778
# check layout success: 1
2779
REPAIR TABLE t1 EXTENDED;
2780
Table Op Msg_type Msg_text
2781
test.t1 repair note The storage engine for the table doesn't support repair
2782
# check layout success: 1
2785
# check TRUNCATE success: 1
2786
# check layout success: 1
2787
# End usability test (inc/partition_check.inc)
2794
f_charbig VARCHAR(1000)
2797
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
2798
(PARTITION part_1 VALUES IN (0)
2799
(SUBPARTITION sp11, SUBPARTITION sp12),
2800
PARTITION part_2 VALUES IN (1)
2801
(SUBPARTITION sp21, SUBPARTITION sp22),
2802
PARTITION part_3 VALUES IN (2)
2803
(SUBPARTITION sp31, SUBPARTITION sp32),
2804
PARTITION part_4 VALUES IN (NULL)
2805
(SUBPARTITION sp41, SUBPARTITION sp42));
2806
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2807
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2808
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2809
ALTER TABLE t1 ANALYZE PARTITION part_1;
2810
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2811
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2812
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2813
# Start usability test (inc/partition_check.inc)
2815
SHOW CREATE TABLE t1;
2817
t1 CREATE TABLE `t1` (
2818
`f_int1` int(11) DEFAULT NULL,
2819
`f_int2` int(11) DEFAULT NULL,
2820
`f_char1` char(20) DEFAULT NULL,
2821
`f_char2` char(20) DEFAULT NULL,
2822
`f_charbig` varchar(1000) DEFAULT NULL
2823
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
2825
# check prerequisites-1 success: 1
2826
# check COUNT(*) success: 1
2827
# check MIN/MAX(f_int1) success: 1
2828
# check MIN/MAX(f_int2) success: 1
2829
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2830
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2831
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2832
WHERE f_int1 IN (2,3);
2833
# check prerequisites-3 success: 1
2834
DELETE FROM t1 WHERE f_charbig = 'delete me';
2835
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2836
# check read via f_int1 success: 1
2837
# check read via f_int2 success: 1
2839
# check multiple-1 success: 1
2840
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2842
# check multiple-2 success: 1
2843
INSERT INTO t1 SELECT * FROM t0_template
2844
WHERE MOD(f_int1,3) = 0;
2846
# check multiple-3 success: 1
2847
UPDATE t1 SET f_int1 = f_int1 + @max_row
2848
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2849
AND @max_row_div2 + @max_row_div4;
2851
# check multiple-4 success: 1
2853
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2854
AND @max_row_div2 + @max_row_div4 + @max_row;
2856
# check multiple-5 success: 1
2857
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2859
SET f_int1 = @cur_value , f_int2 = @cur_value,
2860
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2861
f_charbig = '#SINGLE#';
2863
# check single-1 success: 1
2864
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2866
SET f_int1 = @cur_value , f_int2 = @cur_value,
2867
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2868
f_charbig = '#SINGLE#';
2870
# check single-2 success: 1
2871
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2872
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2873
UPDATE t1 SET f_int1 = @cur_value2
2874
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2876
# check single-3 success: 1
2877
SET @cur_value1= -1;
2878
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2879
UPDATE t1 SET f_int1 = @cur_value1
2880
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2882
# check single-4 success: 1
2883
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2884
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2886
# check single-5 success: 1
2887
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2889
# check single-6 success: 1
2890
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2892
# check single-7 success: 1
2893
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2894
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2895
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2896
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2897
f_charbig = '#NULL#';
2899
SET f_int1 = NULL , f_int2 = -@max_row,
2900
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2901
f_charbig = '#NULL#';
2902
# check null success: 1
2904
# check null-1 success: 1
2905
UPDATE t1 SET f_int1 = -@max_row
2906
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2907
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2909
# check null-2 success: 1
2910
UPDATE t1 SET f_int1 = NULL
2911
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2912
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2914
# check null-3 success: 1
2916
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2917
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2919
# check null-4 success: 1
2921
WHERE f_int1 = 0 AND f_int2 = 0
2922
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2923
AND f_charbig = '#NULL#';
2925
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2926
SELECT f_int1, f_int1, '', '', 'was inserted'
2927
FROM t0_template source_tab
2928
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2930
# check transactions-1 success: 1
2933
# check transactions-2 success: 1
2936
# check transactions-3 success: 1
2937
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2941
# check transactions-4 success: 1
2942
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2943
SELECT f_int1, f_int1, '', '', 'was inserted'
2944
FROM t0_template source_tab
2945
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2947
# check transactions-5 success: 1
2950
# check transactions-6 success: 1
2951
# INFO: Storage engine used for t1 seems to be transactional.
2954
# check transactions-7 success: 1
2955
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2957
SET @@session.sql_mode = 'traditional';
2958
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2959
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2960
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2961
'', '', 'was inserted' FROM t0_template
2962
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2963
ERROR 22012: Division by 0
2966
# check transactions-8 success: 1
2967
# INFO: Storage engine used for t1 seems to be able to revert
2968
# changes made by the failing statement.
2969
SET @@session.sql_mode = '';
2971
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2973
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2975
# check special-1 success: 1
2976
UPDATE t1 SET f_charbig = '';
2978
# check special-2 success: 1
2979
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2980
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2981
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2982
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2983
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2984
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2985
'just inserted' FROM t0_template
2986
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2987
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2989
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2990
f_charbig = 'updated by trigger'
2991
WHERE f_int1 = new.f_int1;
2993
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2994
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2995
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2997
# check trigger-1 success: 1
2999
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3000
f_int2 = CAST(f_char1 AS SIGNED INT),
3001
f_charbig = 'just inserted'
3002
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3004
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3005
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3006
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3007
'just inserted' FROM t0_template
3008
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3009
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3011
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3012
f_charbig = 'updated by trigger'
3013
WHERE f_int1 = new.f_int1;
3015
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3016
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3017
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3019
# check trigger-2 success: 1
3021
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3022
f_int2 = CAST(f_char1 AS SIGNED INT),
3023
f_charbig = 'just inserted'
3024
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3026
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3027
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3028
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3029
'just inserted' FROM t0_template
3030
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3031
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3033
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3034
f_charbig = 'updated by trigger'
3035
WHERE f_int1 = new.f_int1;
3037
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3038
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3040
# check trigger-3 success: 1
3042
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3043
f_int2 = CAST(f_char1 AS SIGNED INT),
3044
f_charbig = 'just inserted'
3045
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3047
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3048
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3049
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3050
'just inserted' FROM t0_template
3051
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3052
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3054
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3055
f_charbig = 'updated by trigger'
3056
WHERE f_int1 = - old.f_int1;
3058
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3059
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3061
# check trigger-4 success: 1
3063
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3064
f_int2 = CAST(f_char1 AS SIGNED INT),
3065
f_charbig = 'just inserted'
3066
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3068
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3069
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3070
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3071
'just inserted' FROM t0_template
3072
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3073
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3075
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3076
f_charbig = 'updated by trigger'
3077
WHERE f_int1 = new.f_int1;
3079
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3080
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3082
# check trigger-5 success: 1
3084
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3085
f_int2 = CAST(f_char1 AS SIGNED INT),
3086
f_charbig = 'just inserted'
3087
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3089
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3090
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3091
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3092
'just inserted' FROM t0_template
3093
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3094
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3096
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3097
f_charbig = 'updated by trigger'
3098
WHERE f_int1 = - old.f_int1;
3100
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3101
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3103
# check trigger-6 success: 1
3105
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3106
f_int2 = CAST(f_char1 AS SIGNED INT),
3107
f_charbig = 'just inserted'
3108
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3110
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3111
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3112
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3113
'just inserted' FROM t0_template
3114
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3115
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3117
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3118
f_charbig = 'updated by trigger'
3119
WHERE f_int1 = - old.f_int1;
3122
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3124
# check trigger-7 success: 1
3126
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3127
f_int2 = CAST(f_char1 AS SIGNED INT),
3128
f_charbig = 'just inserted'
3129
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3131
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3132
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3133
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3134
'just inserted' FROM t0_template
3135
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3136
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3138
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3139
f_charbig = 'updated by trigger'
3140
WHERE f_int1 = - old.f_int1;
3143
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3145
# check trigger-8 success: 1
3147
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3148
f_int2 = CAST(f_char1 AS SIGNED INT),
3149
f_charbig = 'just inserted'
3150
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3152
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3154
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3155
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3157
SET new.f_int1 = old.f_int1 + @max_row,
3158
new.f_int2 = old.f_int2 - @max_row,
3159
new.f_charbig = '####updated per update trigger####';
3162
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3163
f_charbig = '####updated per update statement itself####';
3165
# check trigger-9 success: 1
3167
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3168
f_int2 = CAST(f_char1 AS SIGNED INT),
3169
f_charbig = CONCAT('===',f_char1,'===');
3170
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3172
SET new.f_int1 = new.f_int1 + @max_row,
3173
new.f_int2 = new.f_int2 - @max_row,
3174
new.f_charbig = '####updated per update trigger####';
3177
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3178
f_charbig = '####updated per update statement itself####';
3180
# check trigger-10 success: 1
3182
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3183
f_int2 = CAST(f_char1 AS SIGNED INT),
3184
f_charbig = CONCAT('===',f_char1,'===');
3185
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3187
SET new.f_int1 = @my_max1 + @counter,
3188
new.f_int2 = @my_min2 - @counter,
3189
new.f_charbig = '####updated per insert trigger####';
3190
SET @counter = @counter + 1;
3193
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3194
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3195
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3196
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3197
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3201
# check trigger-11 success: 1
3203
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3204
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3205
AND f_charbig = '####updated per insert trigger####';
3206
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3208
SET new.f_int1 = @my_max1 + @counter,
3209
new.f_int2 = @my_min2 - @counter,
3210
new.f_charbig = '####updated per insert trigger####';
3211
SET @counter = @counter + 1;
3214
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3215
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3216
SELECT CAST(f_int1 AS CHAR),
3217
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3222
# check trigger-12 success: 1
3224
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3225
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3226
AND f_charbig = '####updated per insert trigger####';
3228
Table Op Msg_type Msg_text
3229
test.t1 analyze status OK
3230
CHECK TABLE t1 EXTENDED;
3231
Table Op Msg_type Msg_text
3232
test.t1 check status OK
3233
CHECKSUM TABLE t1 EXTENDED;
3235
test.t1 <some_value>
3237
Table Op Msg_type Msg_text
3238
test.t1 optimize status OK
3239
# check layout success: 1
3240
REPAIR TABLE t1 EXTENDED;
3241
Table Op Msg_type Msg_text
3242
test.t1 repair note The storage engine for the table doesn't support repair
3243
# check layout success: 1
3246
# check TRUNCATE success: 1
3247
# check layout success: 1
3248
# End usability test (inc/partition_check.inc)
3255
f_charbig VARCHAR(1000)
3258
PARTITION BY LIST(ABS(MOD(f_int1,2)))
3259
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
3260
(PARTITION part_1 VALUES IN (0),
3261
PARTITION part_2 VALUES IN (1),
3262
PARTITION part_3 VALUES IN (NULL));
3263
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3264
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3265
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3266
ALTER TABLE t1 ANALYZE PARTITION part_1;
3267
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3268
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3269
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3270
# Start usability test (inc/partition_check.inc)
3272
SHOW CREATE TABLE t1;
3274
t1 CREATE TABLE `t1` (
3275
`f_int1` int(11) DEFAULT NULL,
3276
`f_int2` int(11) DEFAULT NULL,
3277
`f_char1` char(20) DEFAULT NULL,
3278
`f_char2` char(20) DEFAULT NULL,
3279
`f_charbig` varchar(1000) DEFAULT NULL
3280
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */
3282
# check prerequisites-1 success: 1
3283
# check COUNT(*) success: 1
3284
# check MIN/MAX(f_int1) success: 1
3285
# check MIN/MAX(f_int2) success: 1
3286
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3287
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3288
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3289
WHERE f_int1 IN (2,3);
3290
# check prerequisites-3 success: 1
3291
DELETE FROM t1 WHERE f_charbig = 'delete me';
3292
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3293
# check read via f_int1 success: 1
3294
# check read via f_int2 success: 1
3296
# check multiple-1 success: 1
3297
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3299
# check multiple-2 success: 1
3300
INSERT INTO t1 SELECT * FROM t0_template
3301
WHERE MOD(f_int1,3) = 0;
3303
# check multiple-3 success: 1
3304
UPDATE t1 SET f_int1 = f_int1 + @max_row
3305
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3306
AND @max_row_div2 + @max_row_div4;
3308
# check multiple-4 success: 1
3310
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3311
AND @max_row_div2 + @max_row_div4 + @max_row;
3313
# check multiple-5 success: 1
3314
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3316
SET f_int1 = @cur_value , f_int2 = @cur_value,
3317
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3318
f_charbig = '#SINGLE#';
3320
# check single-1 success: 1
3321
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3323
SET f_int1 = @cur_value , f_int2 = @cur_value,
3324
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3325
f_charbig = '#SINGLE#';
3327
# check single-2 success: 1
3328
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3329
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3330
UPDATE t1 SET f_int1 = @cur_value2
3331
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3333
# check single-3 success: 1
3334
SET @cur_value1= -1;
3335
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3336
UPDATE t1 SET f_int1 = @cur_value1
3337
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3339
# check single-4 success: 1
3340
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3341
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3343
# check single-5 success: 1
3344
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3346
# check single-6 success: 1
3347
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3349
# check single-7 success: 1
3350
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3351
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3352
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3353
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3354
f_charbig = '#NULL#';
3356
SET f_int1 = NULL , f_int2 = -@max_row,
3357
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3358
f_charbig = '#NULL#';
3359
# check null success: 1
3361
# check null-1 success: 1
3362
UPDATE t1 SET f_int1 = -@max_row
3363
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3364
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3366
# check null-2 success: 1
3367
UPDATE t1 SET f_int1 = NULL
3368
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3369
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3371
# check null-3 success: 1
3373
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3374
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3376
# check null-4 success: 1
3378
WHERE f_int1 = 0 AND f_int2 = 0
3379
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3380
AND f_charbig = '#NULL#';
3382
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3383
SELECT f_int1, f_int1, '', '', 'was inserted'
3384
FROM t0_template source_tab
3385
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3387
# check transactions-1 success: 1
3390
# check transactions-2 success: 1
3393
# check transactions-3 success: 1
3394
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3398
# check transactions-4 success: 1
3399
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3400
SELECT f_int1, f_int1, '', '', 'was inserted'
3401
FROM t0_template source_tab
3402
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3404
# check transactions-5 success: 1
3407
# check transactions-6 success: 1
3408
# INFO: Storage engine used for t1 seems to be transactional.
3411
# check transactions-7 success: 1
3412
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3414
SET @@session.sql_mode = 'traditional';
3415
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3416
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3417
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3418
'', '', 'was inserted' FROM t0_template
3419
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3420
ERROR 22012: Division by 0
3423
# check transactions-8 success: 1
3424
# INFO: Storage engine used for t1 seems to be able to revert
3425
# changes made by the failing statement.
3426
SET @@session.sql_mode = '';
3428
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3430
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3432
# check special-1 success: 1
3433
UPDATE t1 SET f_charbig = '';
3435
# check special-2 success: 1
3436
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3437
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3438
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3439
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3440
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3441
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3442
'just inserted' FROM t0_template
3443
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3444
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3446
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3447
f_charbig = 'updated by trigger'
3448
WHERE f_int1 = new.f_int1;
3450
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3451
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3452
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3454
# check trigger-1 success: 1
3456
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3457
f_int2 = CAST(f_char1 AS SIGNED INT),
3458
f_charbig = 'just inserted'
3459
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3461
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3462
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3463
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3464
'just inserted' FROM t0_template
3465
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3466
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3468
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3469
f_charbig = 'updated by trigger'
3470
WHERE f_int1 = new.f_int1;
3472
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3473
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3474
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3476
# check trigger-2 success: 1
3478
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3479
f_int2 = CAST(f_char1 AS SIGNED INT),
3480
f_charbig = 'just inserted'
3481
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3483
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3484
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3485
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3486
'just inserted' FROM t0_template
3487
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3488
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3490
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3491
f_charbig = 'updated by trigger'
3492
WHERE f_int1 = new.f_int1;
3494
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3495
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3497
# check trigger-3 success: 1
3499
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3500
f_int2 = CAST(f_char1 AS SIGNED INT),
3501
f_charbig = 'just inserted'
3502
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3504
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3505
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3506
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3507
'just inserted' FROM t0_template
3508
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3509
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3511
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3512
f_charbig = 'updated by trigger'
3513
WHERE f_int1 = - old.f_int1;
3515
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3516
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3518
# check trigger-4 success: 1
3520
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3521
f_int2 = CAST(f_char1 AS SIGNED INT),
3522
f_charbig = 'just inserted'
3523
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3525
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3526
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3527
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3528
'just inserted' FROM t0_template
3529
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3530
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3532
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3533
f_charbig = 'updated by trigger'
3534
WHERE f_int1 = new.f_int1;
3536
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3537
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3539
# check trigger-5 success: 1
3541
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3542
f_int2 = CAST(f_char1 AS SIGNED INT),
3543
f_charbig = 'just inserted'
3544
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3546
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3547
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3548
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3549
'just inserted' FROM t0_template
3550
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3551
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3553
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3554
f_charbig = 'updated by trigger'
3555
WHERE f_int1 = - old.f_int1;
3557
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3558
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3560
# check trigger-6 success: 1
3562
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3563
f_int2 = CAST(f_char1 AS SIGNED INT),
3564
f_charbig = 'just inserted'
3565
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3567
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3568
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3569
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3570
'just inserted' FROM t0_template
3571
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3572
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3574
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3575
f_charbig = 'updated by trigger'
3576
WHERE f_int1 = - old.f_int1;
3579
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3581
# check trigger-7 success: 1
3583
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3584
f_int2 = CAST(f_char1 AS SIGNED INT),
3585
f_charbig = 'just inserted'
3586
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3588
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3589
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3590
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3591
'just inserted' FROM t0_template
3592
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3593
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3595
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3596
f_charbig = 'updated by trigger'
3597
WHERE f_int1 = - old.f_int1;
3600
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3602
# check trigger-8 success: 1
3604
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3605
f_int2 = CAST(f_char1 AS SIGNED INT),
3606
f_charbig = 'just inserted'
3607
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3609
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3611
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3612
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3614
SET new.f_int1 = old.f_int1 + @max_row,
3615
new.f_int2 = old.f_int2 - @max_row,
3616
new.f_charbig = '####updated per update trigger####';
3619
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3620
f_charbig = '####updated per update statement itself####';
3622
# check trigger-9 success: 1
3624
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3625
f_int2 = CAST(f_char1 AS SIGNED INT),
3626
f_charbig = CONCAT('===',f_char1,'===');
3627
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3629
SET new.f_int1 = new.f_int1 + @max_row,
3630
new.f_int2 = new.f_int2 - @max_row,
3631
new.f_charbig = '####updated per update trigger####';
3634
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3635
f_charbig = '####updated per update statement itself####';
3637
# check trigger-10 success: 1
3639
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3640
f_int2 = CAST(f_char1 AS SIGNED INT),
3641
f_charbig = CONCAT('===',f_char1,'===');
3642
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3644
SET new.f_int1 = @my_max1 + @counter,
3645
new.f_int2 = @my_min2 - @counter,
3646
new.f_charbig = '####updated per insert trigger####';
3647
SET @counter = @counter + 1;
3650
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3651
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3652
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3653
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3654
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3658
# check trigger-11 success: 1
3660
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3661
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3662
AND f_charbig = '####updated per insert trigger####';
3663
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3665
SET new.f_int1 = @my_max1 + @counter,
3666
new.f_int2 = @my_min2 - @counter,
3667
new.f_charbig = '####updated per insert trigger####';
3668
SET @counter = @counter + 1;
3671
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3672
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3673
SELECT CAST(f_int1 AS CHAR),
3674
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3679
# check trigger-12 success: 1
3681
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3682
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3683
AND f_charbig = '####updated per insert trigger####';
3685
Table Op Msg_type Msg_text
3686
test.t1 analyze status OK
3687
CHECK TABLE t1 EXTENDED;
3688
Table Op Msg_type Msg_text
3689
test.t1 check status OK
3690
CHECKSUM TABLE t1 EXTENDED;
3692
test.t1 <some_value>
3694
Table Op Msg_type Msg_text
3695
test.t1 optimize status OK
3696
# check layout success: 1
3697
REPAIR TABLE t1 EXTENDED;
3698
Table Op Msg_type Msg_text
3699
test.t1 repair note The storage engine for the table doesn't support repair
3700
# check layout success: 1
3703
# check TRUNCATE success: 1
3704
# check layout success: 1
3705
# End usability test (inc/partition_check.inc)
3707
# 1.2 ALTER ... ANALYZE PARTITION part_1,part_2;
3708
DROP TABLE IF EXISTS t1;
3714
f_charbig VARCHAR(1000)
3717
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
3718
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3719
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3720
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3721
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
3722
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3723
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3724
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3725
# Start usability test (inc/partition_check.inc)
3727
SHOW CREATE TABLE t1;
3729
t1 CREATE TABLE `t1` (
3730
`f_int1` int(11) DEFAULT NULL,
3731
`f_int2` int(11) DEFAULT NULL,
3732
`f_char1` char(20) DEFAULT NULL,
3733
`f_char2` char(20) DEFAULT NULL,
3734
`f_charbig` varchar(1000) DEFAULT NULL
3735
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */
3737
# check prerequisites-1 success: 1
3738
# check COUNT(*) success: 1
3739
# check MIN/MAX(f_int1) success: 1
3740
# check MIN/MAX(f_int2) success: 1
3741
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3742
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3743
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3744
WHERE f_int1 IN (2,3);
3745
# check prerequisites-3 success: 1
3746
DELETE FROM t1 WHERE f_charbig = 'delete me';
3747
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3748
# check read via f_int1 success: 1
3749
# check read via f_int2 success: 1
3751
# check multiple-1 success: 1
3752
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3754
# check multiple-2 success: 1
3755
INSERT INTO t1 SELECT * FROM t0_template
3756
WHERE MOD(f_int1,3) = 0;
3758
# check multiple-3 success: 1
3759
UPDATE t1 SET f_int1 = f_int1 + @max_row
3760
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3761
AND @max_row_div2 + @max_row_div4;
3763
# check multiple-4 success: 1
3765
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3766
AND @max_row_div2 + @max_row_div4 + @max_row;
3768
# check multiple-5 success: 1
3769
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3771
SET f_int1 = @cur_value , f_int2 = @cur_value,
3772
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3773
f_charbig = '#SINGLE#';
3775
# check single-1 success: 1
3776
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3778
SET f_int1 = @cur_value , f_int2 = @cur_value,
3779
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3780
f_charbig = '#SINGLE#';
3782
# check single-2 success: 1
3783
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3784
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3785
UPDATE t1 SET f_int1 = @cur_value2
3786
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3788
# check single-3 success: 1
3789
SET @cur_value1= -1;
3790
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3791
UPDATE t1 SET f_int1 = @cur_value1
3792
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3794
# check single-4 success: 1
3795
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3796
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3798
# check single-5 success: 1
3799
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3801
# check single-6 success: 1
3802
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3804
# check single-7 success: 1
3805
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3806
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3807
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3808
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3809
f_charbig = '#NULL#';
3811
SET f_int1 = NULL , f_int2 = -@max_row,
3812
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3813
f_charbig = '#NULL#';
3814
# check null success: 1
3816
# check null-1 success: 1
3817
UPDATE t1 SET f_int1 = -@max_row
3818
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3819
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3821
# check null-2 success: 1
3822
UPDATE t1 SET f_int1 = NULL
3823
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3824
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3826
# check null-3 success: 1
3828
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3829
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3831
# check null-4 success: 1
3833
WHERE f_int1 = 0 AND f_int2 = 0
3834
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3835
AND f_charbig = '#NULL#';
3837
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3838
SELECT f_int1, f_int1, '', '', 'was inserted'
3839
FROM t0_template source_tab
3840
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3842
# check transactions-1 success: 1
3845
# check transactions-2 success: 1
3848
# check transactions-3 success: 1
3849
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3853
# check transactions-4 success: 1
3854
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3855
SELECT f_int1, f_int1, '', '', 'was inserted'
3856
FROM t0_template source_tab
3857
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3859
# check transactions-5 success: 1
3862
# check transactions-6 success: 1
3863
# INFO: Storage engine used for t1 seems to be transactional.
3866
# check transactions-7 success: 1
3867
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3869
SET @@session.sql_mode = 'traditional';
3870
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3871
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3872
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3873
'', '', 'was inserted' FROM t0_template
3874
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3875
ERROR 22012: Division by 0
3878
# check transactions-8 success: 1
3879
# INFO: Storage engine used for t1 seems to be able to revert
3880
# changes made by the failing statement.
3881
SET @@session.sql_mode = '';
3883
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3885
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3887
# check special-1 success: 1
3888
UPDATE t1 SET f_charbig = '';
3890
# check special-2 success: 1
3891
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3892
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3893
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3894
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3895
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3896
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3897
'just inserted' FROM t0_template
3898
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3899
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3901
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3902
f_charbig = 'updated by trigger'
3903
WHERE f_int1 = new.f_int1;
3905
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3906
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3907
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3909
# check trigger-1 success: 1
3911
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3912
f_int2 = CAST(f_char1 AS SIGNED INT),
3913
f_charbig = 'just inserted'
3914
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3916
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3917
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3918
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3919
'just inserted' FROM t0_template
3920
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3921
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3923
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3924
f_charbig = 'updated by trigger'
3925
WHERE f_int1 = new.f_int1;
3927
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3928
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3929
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3931
# check trigger-2 success: 1
3933
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3934
f_int2 = CAST(f_char1 AS SIGNED INT),
3935
f_charbig = 'just inserted'
3936
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3938
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3939
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3940
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3941
'just inserted' FROM t0_template
3942
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3943
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3945
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3946
f_charbig = 'updated by trigger'
3947
WHERE f_int1 = new.f_int1;
3949
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3950
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3952
# check trigger-3 success: 1
3954
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3955
f_int2 = CAST(f_char1 AS SIGNED INT),
3956
f_charbig = 'just inserted'
3957
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3959
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3960
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3961
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3962
'just inserted' FROM t0_template
3963
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3964
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3966
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3967
f_charbig = 'updated by trigger'
3968
WHERE f_int1 = - old.f_int1;
3970
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3971
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3973
# check trigger-4 success: 1
3975
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3976
f_int2 = CAST(f_char1 AS SIGNED INT),
3977
f_charbig = 'just inserted'
3978
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3980
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3981
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3982
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3983
'just inserted' FROM t0_template
3984
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3985
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3987
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3988
f_charbig = 'updated by trigger'
3989
WHERE f_int1 = new.f_int1;
3991
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3992
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3994
# check trigger-5 success: 1
3996
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3997
f_int2 = CAST(f_char1 AS SIGNED INT),
3998
f_charbig = 'just inserted'
3999
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4001
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4002
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4003
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4004
'just inserted' FROM t0_template
4005
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4006
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4008
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4009
f_charbig = 'updated by trigger'
4010
WHERE f_int1 = - old.f_int1;
4012
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4013
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4015
# check trigger-6 success: 1
4017
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4018
f_int2 = CAST(f_char1 AS SIGNED INT),
4019
f_charbig = 'just inserted'
4020
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4022
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4023
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4024
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4025
'just inserted' FROM t0_template
4026
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4027
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4029
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4030
f_charbig = 'updated by trigger'
4031
WHERE f_int1 = - old.f_int1;
4034
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4036
# check trigger-7 success: 1
4038
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4039
f_int2 = CAST(f_char1 AS SIGNED INT),
4040
f_charbig = 'just inserted'
4041
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4043
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4044
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4045
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4046
'just inserted' FROM t0_template
4047
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4048
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4050
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4051
f_charbig = 'updated by trigger'
4052
WHERE f_int1 = - old.f_int1;
4055
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4057
# check trigger-8 success: 1
4059
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4060
f_int2 = CAST(f_char1 AS SIGNED INT),
4061
f_charbig = 'just inserted'
4062
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4064
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4066
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4067
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4069
SET new.f_int1 = old.f_int1 + @max_row,
4070
new.f_int2 = old.f_int2 - @max_row,
4071
new.f_charbig = '####updated per update trigger####';
4074
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4075
f_charbig = '####updated per update statement itself####';
4077
# check trigger-9 success: 1
4079
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4080
f_int2 = CAST(f_char1 AS SIGNED INT),
4081
f_charbig = CONCAT('===',f_char1,'===');
4082
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4084
SET new.f_int1 = new.f_int1 + @max_row,
4085
new.f_int2 = new.f_int2 - @max_row,
4086
new.f_charbig = '####updated per update trigger####';
4089
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4090
f_charbig = '####updated per update statement itself####';
4092
# check trigger-10 success: 1
4094
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4095
f_int2 = CAST(f_char1 AS SIGNED INT),
4096
f_charbig = CONCAT('===',f_char1,'===');
4097
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4099
SET new.f_int1 = @my_max1 + @counter,
4100
new.f_int2 = @my_min2 - @counter,
4101
new.f_charbig = '####updated per insert trigger####';
4102
SET @counter = @counter + 1;
4105
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4106
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4107
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4108
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4109
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4113
# check trigger-11 success: 1
4115
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4116
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4117
AND f_charbig = '####updated per insert trigger####';
4118
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4120
SET new.f_int1 = @my_max1 + @counter,
4121
new.f_int2 = @my_min2 - @counter,
4122
new.f_charbig = '####updated per insert trigger####';
4123
SET @counter = @counter + 1;
4126
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4127
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4128
SELECT CAST(f_int1 AS CHAR),
4129
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4130
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4134
# check trigger-12 success: 1
4136
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4137
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4138
AND f_charbig = '####updated per insert trigger####';
4140
Table Op Msg_type Msg_text
4141
test.t1 analyze status OK
4142
CHECK TABLE t1 EXTENDED;
4143
Table Op Msg_type Msg_text
4144
test.t1 check status OK
4145
CHECKSUM TABLE t1 EXTENDED;
4147
test.t1 <some_value>
4149
Table Op Msg_type Msg_text
4150
test.t1 optimize status OK
4151
# check layout success: 1
4152
REPAIR TABLE t1 EXTENDED;
4153
Table Op Msg_type Msg_text
4154
test.t1 repair note The storage engine for the table doesn't support repair
4155
# check layout success: 1
4158
# check TRUNCATE success: 1
4159
# check layout success: 1
4160
# End usability test (inc/partition_check.inc)
4167
f_charbig VARCHAR(1000)
4170
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
4171
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4172
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4173
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4174
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
4175
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4176
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4177
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4178
# Start usability test (inc/partition_check.inc)
4180
SHOW CREATE TABLE t1;
4182
t1 CREATE TABLE `t1` (
4183
`f_int1` int(11) DEFAULT NULL,
4184
`f_int2` int(11) DEFAULT NULL,
4185
`f_char1` char(20) DEFAULT NULL,
4186
`f_char2` char(20) DEFAULT NULL,
4187
`f_charbig` varchar(1000) DEFAULT NULL
4188
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */
4190
# check prerequisites-1 success: 1
4191
# check COUNT(*) success: 1
4192
# check MIN/MAX(f_int1) success: 1
4193
# check MIN/MAX(f_int2) success: 1
4194
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4195
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4196
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4197
WHERE f_int1 IN (2,3);
4198
# check prerequisites-3 success: 1
4199
DELETE FROM t1 WHERE f_charbig = 'delete me';
4200
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4201
# check read via f_int1 success: 1
4202
# check read via f_int2 success: 1
4204
# check multiple-1 success: 1
4205
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4207
# check multiple-2 success: 1
4208
INSERT INTO t1 SELECT * FROM t0_template
4209
WHERE MOD(f_int1,3) = 0;
4211
# check multiple-3 success: 1
4212
UPDATE t1 SET f_int1 = f_int1 + @max_row
4213
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4214
AND @max_row_div2 + @max_row_div4;
4216
# check multiple-4 success: 1
4218
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4219
AND @max_row_div2 + @max_row_div4 + @max_row;
4221
# check multiple-5 success: 1
4222
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4224
SET f_int1 = @cur_value , f_int2 = @cur_value,
4225
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4226
f_charbig = '#SINGLE#';
4228
# check single-1 success: 1
4229
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4231
SET f_int1 = @cur_value , f_int2 = @cur_value,
4232
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4233
f_charbig = '#SINGLE#';
4235
# check single-2 success: 1
4236
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4237
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4238
UPDATE t1 SET f_int1 = @cur_value2
4239
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4241
# check single-3 success: 1
4242
SET @cur_value1= -1;
4243
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4244
UPDATE t1 SET f_int1 = @cur_value1
4245
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4247
# check single-4 success: 1
4248
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4249
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4251
# check single-5 success: 1
4252
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4254
# check single-6 success: 1
4255
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4257
# check single-7 success: 1
4258
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4259
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4260
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4261
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4262
f_charbig = '#NULL#';
4264
SET f_int1 = NULL , f_int2 = -@max_row,
4265
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4266
f_charbig = '#NULL#';
4267
# check null success: 1
4269
# check null-1 success: 1
4270
UPDATE t1 SET f_int1 = -@max_row
4271
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4272
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4274
# check null-2 success: 1
4275
UPDATE t1 SET f_int1 = NULL
4276
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4277
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4279
# check null-3 success: 1
4281
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4282
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4284
# check null-4 success: 1
4286
WHERE f_int1 = 0 AND f_int2 = 0
4287
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4288
AND f_charbig = '#NULL#';
4290
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4291
SELECT f_int1, f_int1, '', '', 'was inserted'
4292
FROM t0_template source_tab
4293
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4295
# check transactions-1 success: 1
4298
# check transactions-2 success: 1
4301
# check transactions-3 success: 1
4302
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4306
# check transactions-4 success: 1
4307
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4308
SELECT f_int1, f_int1, '', '', 'was inserted'
4309
FROM t0_template source_tab
4310
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4312
# check transactions-5 success: 1
4315
# check transactions-6 success: 1
4316
# INFO: Storage engine used for t1 seems to be transactional.
4319
# check transactions-7 success: 1
4320
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4322
SET @@session.sql_mode = 'traditional';
4323
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4324
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4325
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4326
'', '', 'was inserted' FROM t0_template
4327
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4328
ERROR 22012: Division by 0
4331
# check transactions-8 success: 1
4332
# INFO: Storage engine used for t1 seems to be able to revert
4333
# changes made by the failing statement.
4334
SET @@session.sql_mode = '';
4336
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4338
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4340
# check special-1 success: 1
4341
UPDATE t1 SET f_charbig = '';
4343
# check special-2 success: 1
4344
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4345
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4346
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4347
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4348
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4349
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4350
'just inserted' FROM t0_template
4351
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4352
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4354
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4355
f_charbig = 'updated by trigger'
4356
WHERE f_int1 = new.f_int1;
4358
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4359
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4360
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4362
# check trigger-1 success: 1
4364
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4365
f_int2 = CAST(f_char1 AS SIGNED INT),
4366
f_charbig = 'just inserted'
4367
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4369
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4370
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4371
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4372
'just inserted' FROM t0_template
4373
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4374
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4376
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4377
f_charbig = 'updated by trigger'
4378
WHERE f_int1 = new.f_int1;
4380
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4381
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4382
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4384
# check trigger-2 success: 1
4386
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4387
f_int2 = CAST(f_char1 AS SIGNED INT),
4388
f_charbig = 'just inserted'
4389
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4391
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4392
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4393
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4394
'just inserted' FROM t0_template
4395
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4396
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4398
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4399
f_charbig = 'updated by trigger'
4400
WHERE f_int1 = new.f_int1;
4402
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4403
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4405
# check trigger-3 success: 1
4407
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4408
f_int2 = CAST(f_char1 AS SIGNED INT),
4409
f_charbig = 'just inserted'
4410
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4412
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4413
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4414
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4415
'just inserted' FROM t0_template
4416
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4417
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4419
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4420
f_charbig = 'updated by trigger'
4421
WHERE f_int1 = - old.f_int1;
4423
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4424
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4426
# check trigger-4 success: 1
4428
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4429
f_int2 = CAST(f_char1 AS SIGNED INT),
4430
f_charbig = 'just inserted'
4431
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4433
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4434
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4435
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4436
'just inserted' FROM t0_template
4437
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4438
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4440
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4441
f_charbig = 'updated by trigger'
4442
WHERE f_int1 = new.f_int1;
4444
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4445
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4447
# check trigger-5 success: 1
4449
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4450
f_int2 = CAST(f_char1 AS SIGNED INT),
4451
f_charbig = 'just inserted'
4452
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4454
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4455
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4456
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4457
'just inserted' FROM t0_template
4458
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4459
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4461
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4462
f_charbig = 'updated by trigger'
4463
WHERE f_int1 = - old.f_int1;
4465
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4466
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4468
# check trigger-6 success: 1
4470
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4471
f_int2 = CAST(f_char1 AS SIGNED INT),
4472
f_charbig = 'just inserted'
4473
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4475
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4476
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4477
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4478
'just inserted' FROM t0_template
4479
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4480
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4482
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4483
f_charbig = 'updated by trigger'
4484
WHERE f_int1 = - old.f_int1;
4487
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4489
# check trigger-7 success: 1
4491
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4492
f_int2 = CAST(f_char1 AS SIGNED INT),
4493
f_charbig = 'just inserted'
4494
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4496
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4497
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4498
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4499
'just inserted' FROM t0_template
4500
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4501
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4503
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4504
f_charbig = 'updated by trigger'
4505
WHERE f_int1 = - old.f_int1;
4508
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4510
# check trigger-8 success: 1
4512
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4513
f_int2 = CAST(f_char1 AS SIGNED INT),
4514
f_charbig = 'just inserted'
4515
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4517
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4519
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4520
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4522
SET new.f_int1 = old.f_int1 + @max_row,
4523
new.f_int2 = old.f_int2 - @max_row,
4524
new.f_charbig = '####updated per update trigger####';
4527
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4528
f_charbig = '####updated per update statement itself####';
4530
# check trigger-9 success: 1
4532
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4533
f_int2 = CAST(f_char1 AS SIGNED INT),
4534
f_charbig = CONCAT('===',f_char1,'===');
4535
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4537
SET new.f_int1 = new.f_int1 + @max_row,
4538
new.f_int2 = new.f_int2 - @max_row,
4539
new.f_charbig = '####updated per update trigger####';
4542
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4543
f_charbig = '####updated per update statement itself####';
4545
# check trigger-10 success: 1
4547
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4548
f_int2 = CAST(f_char1 AS SIGNED INT),
4549
f_charbig = CONCAT('===',f_char1,'===');
4550
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4552
SET new.f_int1 = @my_max1 + @counter,
4553
new.f_int2 = @my_min2 - @counter,
4554
new.f_charbig = '####updated per insert trigger####';
4555
SET @counter = @counter + 1;
4558
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4559
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4560
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4561
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4562
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4566
# check trigger-11 success: 1
4568
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4569
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4570
AND f_charbig = '####updated per insert trigger####';
4571
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4573
SET new.f_int1 = @my_max1 + @counter,
4574
new.f_int2 = @my_min2 - @counter,
4575
new.f_charbig = '####updated per insert trigger####';
4576
SET @counter = @counter + 1;
4579
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4580
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4581
SELECT CAST(f_int1 AS CHAR),
4582
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4587
# check trigger-12 success: 1
4589
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4590
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4591
AND f_charbig = '####updated per insert trigger####';
4593
Table Op Msg_type Msg_text
4594
test.t1 analyze status OK
4595
CHECK TABLE t1 EXTENDED;
4596
Table Op Msg_type Msg_text
4597
test.t1 check status OK
4598
CHECKSUM TABLE t1 EXTENDED;
4600
test.t1 <some_value>
4602
Table Op Msg_type Msg_text
4603
test.t1 optimize status OK
4604
# check layout success: 1
4605
REPAIR TABLE t1 EXTENDED;
4606
Table Op Msg_type Msg_text
4607
test.t1 repair note The storage engine for the table doesn't support repair
4608
# check layout success: 1
4611
# check TRUNCATE success: 1
4612
# check layout success: 1
4613
# End usability test (inc/partition_check.inc)
4620
f_charbig VARCHAR(1000)
4623
PARTITION BY LIST(MOD(f_int1,4))
4624
(PARTITION part_3 VALUES IN (-3),
4625
PARTITION part_2 VALUES IN (-2),
4626
PARTITION part_1 VALUES IN (-1),
4627
PARTITION part_N VALUES IN (NULL),
4628
PARTITION part0 VALUES IN (0),
4629
PARTITION part1 VALUES IN (1),
4630
PARTITION part2 VALUES IN (2),
4631
PARTITION part3 VALUES IN (3));
4632
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4633
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4634
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4635
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
4636
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4637
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4638
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4639
# Start usability test (inc/partition_check.inc)
4641
SHOW CREATE TABLE t1;
4643
t1 CREATE TABLE `t1` (
4644
`f_int1` int(11) DEFAULT NULL,
4645
`f_int2` int(11) DEFAULT NULL,
4646
`f_char1` char(20) DEFAULT NULL,
4647
`f_char2` char(20) DEFAULT NULL,
4648
`f_charbig` varchar(1000) DEFAULT NULL
4649
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
4651
# check prerequisites-1 success: 1
4652
# check COUNT(*) success: 1
4653
# check MIN/MAX(f_int1) success: 1
4654
# check MIN/MAX(f_int2) success: 1
4655
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4656
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4657
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4658
WHERE f_int1 IN (2,3);
4659
# check prerequisites-3 success: 1
4660
DELETE FROM t1 WHERE f_charbig = 'delete me';
4661
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4662
# check read via f_int1 success: 1
4663
# check read via f_int2 success: 1
4665
# check multiple-1 success: 1
4666
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4668
# check multiple-2 success: 1
4669
INSERT INTO t1 SELECT * FROM t0_template
4670
WHERE MOD(f_int1,3) = 0;
4672
# check multiple-3 success: 1
4673
UPDATE t1 SET f_int1 = f_int1 + @max_row
4674
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4675
AND @max_row_div2 + @max_row_div4;
4677
# check multiple-4 success: 1
4679
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4680
AND @max_row_div2 + @max_row_div4 + @max_row;
4682
# check multiple-5 success: 1
4683
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4685
SET f_int1 = @cur_value , f_int2 = @cur_value,
4686
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4687
f_charbig = '#SINGLE#';
4689
# check single-1 success: 1
4690
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4692
SET f_int1 = @cur_value , f_int2 = @cur_value,
4693
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4694
f_charbig = '#SINGLE#';
4696
# check single-2 success: 1
4697
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4698
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4699
UPDATE t1 SET f_int1 = @cur_value2
4700
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4702
# check single-3 success: 1
4703
SET @cur_value1= -1;
4704
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4705
UPDATE t1 SET f_int1 = @cur_value1
4706
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4708
# check single-4 success: 1
4709
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4710
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4712
# check single-5 success: 1
4713
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4715
# check single-6 success: 1
4716
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4718
# check single-7 success: 1
4719
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4720
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4721
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4722
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4723
f_charbig = '#NULL#';
4725
SET f_int1 = NULL , f_int2 = -@max_row,
4726
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4727
f_charbig = '#NULL#';
4728
# check null success: 1
4730
# check null-1 success: 1
4731
UPDATE t1 SET f_int1 = -@max_row
4732
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4733
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4735
# check null-2 success: 1
4736
UPDATE t1 SET f_int1 = NULL
4737
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4738
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4740
# check null-3 success: 1
4742
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4743
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4745
# check null-4 success: 1
4747
WHERE f_int1 = 0 AND f_int2 = 0
4748
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4749
AND f_charbig = '#NULL#';
4751
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4752
SELECT f_int1, f_int1, '', '', 'was inserted'
4753
FROM t0_template source_tab
4754
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4756
# check transactions-1 success: 1
4759
# check transactions-2 success: 1
4762
# check transactions-3 success: 1
4763
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4767
# check transactions-4 success: 1
4768
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4769
SELECT f_int1, f_int1, '', '', 'was inserted'
4770
FROM t0_template source_tab
4771
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4773
# check transactions-5 success: 1
4776
# check transactions-6 success: 1
4777
# INFO: Storage engine used for t1 seems to be transactional.
4780
# check transactions-7 success: 1
4781
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4783
SET @@session.sql_mode = 'traditional';
4784
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4785
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4786
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4787
'', '', 'was inserted' FROM t0_template
4788
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4789
ERROR 22012: Division by 0
4792
# check transactions-8 success: 1
4793
# INFO: Storage engine used for t1 seems to be able to revert
4794
# changes made by the failing statement.
4795
SET @@session.sql_mode = '';
4797
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4799
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4801
# check special-1 success: 1
4802
UPDATE t1 SET f_charbig = '';
4804
# check special-2 success: 1
4805
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4806
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4807
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4809
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4810
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4811
'just inserted' FROM t0_template
4812
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4813
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4815
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4816
f_charbig = 'updated by trigger'
4817
WHERE f_int1 = new.f_int1;
4819
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4820
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4821
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4823
# check trigger-1 success: 1
4825
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4826
f_int2 = CAST(f_char1 AS SIGNED INT),
4827
f_charbig = 'just inserted'
4828
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4830
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4831
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4832
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4833
'just inserted' FROM t0_template
4834
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4835
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4837
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4838
f_charbig = 'updated by trigger'
4839
WHERE f_int1 = new.f_int1;
4841
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4842
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4843
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4845
# check trigger-2 success: 1
4847
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4848
f_int2 = CAST(f_char1 AS SIGNED INT),
4849
f_charbig = 'just inserted'
4850
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4852
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4853
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4854
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4855
'just inserted' FROM t0_template
4856
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4857
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4859
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4860
f_charbig = 'updated by trigger'
4861
WHERE f_int1 = new.f_int1;
4863
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4864
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4866
# check trigger-3 success: 1
4868
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4869
f_int2 = CAST(f_char1 AS SIGNED INT),
4870
f_charbig = 'just inserted'
4871
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4873
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4874
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4875
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4876
'just inserted' FROM t0_template
4877
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4878
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4880
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4881
f_charbig = 'updated by trigger'
4882
WHERE f_int1 = - old.f_int1;
4884
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4885
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4887
# check trigger-4 success: 1
4889
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4890
f_int2 = CAST(f_char1 AS SIGNED INT),
4891
f_charbig = 'just inserted'
4892
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4894
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4895
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4896
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4897
'just inserted' FROM t0_template
4898
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4899
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4901
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4902
f_charbig = 'updated by trigger'
4903
WHERE f_int1 = new.f_int1;
4905
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4906
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4908
# check trigger-5 success: 1
4910
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4911
f_int2 = CAST(f_char1 AS SIGNED INT),
4912
f_charbig = 'just inserted'
4913
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4915
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4916
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4917
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4918
'just inserted' FROM t0_template
4919
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4920
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4922
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4923
f_charbig = 'updated by trigger'
4924
WHERE f_int1 = - old.f_int1;
4926
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4927
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4929
# check trigger-6 success: 1
4931
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4932
f_int2 = CAST(f_char1 AS SIGNED INT),
4933
f_charbig = 'just inserted'
4934
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4936
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4937
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4938
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4939
'just inserted' FROM t0_template
4940
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4941
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4943
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4944
f_charbig = 'updated by trigger'
4945
WHERE f_int1 = - old.f_int1;
4948
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4950
# check trigger-7 success: 1
4952
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4953
f_int2 = CAST(f_char1 AS SIGNED INT),
4954
f_charbig = 'just inserted'
4955
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4957
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4958
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4959
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4960
'just inserted' FROM t0_template
4961
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4962
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4964
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4965
f_charbig = 'updated by trigger'
4966
WHERE f_int1 = - old.f_int1;
4969
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4971
# check trigger-8 success: 1
4973
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4974
f_int2 = CAST(f_char1 AS SIGNED INT),
4975
f_charbig = 'just inserted'
4976
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4978
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4980
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4981
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4983
SET new.f_int1 = old.f_int1 + @max_row,
4984
new.f_int2 = old.f_int2 - @max_row,
4985
new.f_charbig = '####updated per update trigger####';
4988
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4989
f_charbig = '####updated per update statement itself####';
4991
# check trigger-9 success: 1
4993
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4994
f_int2 = CAST(f_char1 AS SIGNED INT),
4995
f_charbig = CONCAT('===',f_char1,'===');
4996
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4998
SET new.f_int1 = new.f_int1 + @max_row,
4999
new.f_int2 = new.f_int2 - @max_row,
5000
new.f_charbig = '####updated per update trigger####';
5003
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5004
f_charbig = '####updated per update statement itself####';
5006
# check trigger-10 success: 1
5008
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5009
f_int2 = CAST(f_char1 AS SIGNED INT),
5010
f_charbig = CONCAT('===',f_char1,'===');
5011
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5013
SET new.f_int1 = @my_max1 + @counter,
5014
new.f_int2 = @my_min2 - @counter,
5015
new.f_charbig = '####updated per insert trigger####';
5016
SET @counter = @counter + 1;
5019
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5020
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5021
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5022
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5023
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5027
# check trigger-11 success: 1
5029
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5030
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5031
AND f_charbig = '####updated per insert trigger####';
5032
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5034
SET new.f_int1 = @my_max1 + @counter,
5035
new.f_int2 = @my_min2 - @counter,
5036
new.f_charbig = '####updated per insert trigger####';
5037
SET @counter = @counter + 1;
5040
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5041
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5042
SELECT CAST(f_int1 AS CHAR),
5043
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5044
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5048
# check trigger-12 success: 1
5050
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5051
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5052
AND f_charbig = '####updated per insert trigger####';
5054
Table Op Msg_type Msg_text
5055
test.t1 analyze status OK
5056
CHECK TABLE t1 EXTENDED;
5057
Table Op Msg_type Msg_text
5058
test.t1 check status OK
5059
CHECKSUM TABLE t1 EXTENDED;
5061
test.t1 <some_value>
5063
Table Op Msg_type Msg_text
5064
test.t1 optimize status OK
5065
# check layout success: 1
5066
REPAIR TABLE t1 EXTENDED;
5067
Table Op Msg_type Msg_text
5068
test.t1 repair note The storage engine for the table doesn't support repair
5069
# check layout success: 1
5072
# check TRUNCATE success: 1
5073
# check layout success: 1
5074
# End usability test (inc/partition_check.inc)
5081
f_charbig VARCHAR(1000)
5084
PARTITION BY RANGE(f_int1)
5085
(PARTITION parta VALUES LESS THAN (0),
5086
PARTITION part_1 VALUES LESS THAN (5),
5087
PARTITION part_2 VALUES LESS THAN (10),
5088
PARTITION part_3 VALUES LESS THAN (10 + 5),
5089
PARTITION part_4 VALUES LESS THAN (20),
5090
PARTITION part_5 VALUES LESS THAN (2147483646));
5091
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5092
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5093
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5094
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
5095
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5096
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5097
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5098
# Start usability test (inc/partition_check.inc)
5100
SHOW CREATE TABLE t1;
5102
t1 CREATE TABLE `t1` (
5103
`f_int1` int(11) DEFAULT NULL,
5104
`f_int2` int(11) DEFAULT NULL,
5105
`f_char1` char(20) DEFAULT NULL,
5106
`f_char2` char(20) DEFAULT NULL,
5107
`f_charbig` varchar(1000) DEFAULT NULL
5108
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
5110
# check prerequisites-1 success: 1
5111
# check COUNT(*) success: 1
5112
# check MIN/MAX(f_int1) success: 1
5113
# check MIN/MAX(f_int2) success: 1
5114
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5115
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5116
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5117
WHERE f_int1 IN (2,3);
5118
# check prerequisites-3 success: 1
5119
DELETE FROM t1 WHERE f_charbig = 'delete me';
5120
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5121
# check read via f_int1 success: 1
5122
# check read via f_int2 success: 1
5124
# check multiple-1 success: 1
5125
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5127
# check multiple-2 success: 1
5128
INSERT INTO t1 SELECT * FROM t0_template
5129
WHERE MOD(f_int1,3) = 0;
5131
# check multiple-3 success: 1
5132
UPDATE t1 SET f_int1 = f_int1 + @max_row
5133
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5134
AND @max_row_div2 + @max_row_div4;
5136
# check multiple-4 success: 1
5138
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5139
AND @max_row_div2 + @max_row_div4 + @max_row;
5141
# check multiple-5 success: 1
5142
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5144
SET f_int1 = @cur_value , f_int2 = @cur_value,
5145
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5146
f_charbig = '#SINGLE#';
5148
# check single-1 success: 1
5149
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5151
SET f_int1 = @cur_value , f_int2 = @cur_value,
5152
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5153
f_charbig = '#SINGLE#';
5155
# check single-2 success: 1
5156
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5157
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5158
UPDATE t1 SET f_int1 = @cur_value2
5159
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5161
# check single-3 success: 1
5162
SET @cur_value1= -1;
5163
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5164
UPDATE t1 SET f_int1 = @cur_value1
5165
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5167
# check single-4 success: 1
5168
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5169
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5171
# check single-5 success: 1
5172
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5174
# check single-6 success: 1
5175
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5176
ERROR HY000: Table has no partition for value 2147483647
5177
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5178
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5179
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5180
f_charbig = '#NULL#';
5182
SET f_int1 = NULL , f_int2 = -@max_row,
5183
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5184
f_charbig = '#NULL#';
5185
# check null success: 1
5187
# check null-1 success: 1
5188
UPDATE t1 SET f_int1 = -@max_row
5189
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5190
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5192
# check null-2 success: 1
5193
UPDATE t1 SET f_int1 = NULL
5194
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5195
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5197
# check null-3 success: 1
5199
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5200
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5202
# check null-4 success: 1
5204
WHERE f_int1 = 0 AND f_int2 = 0
5205
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5206
AND f_charbig = '#NULL#';
5208
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5209
SELECT f_int1, f_int1, '', '', 'was inserted'
5210
FROM t0_template source_tab
5211
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5213
# check transactions-1 success: 1
5216
# check transactions-2 success: 1
5219
# check transactions-3 success: 1
5220
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5224
# check transactions-4 success: 1
5225
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5226
SELECT f_int1, f_int1, '', '', 'was inserted'
5227
FROM t0_template source_tab
5228
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5230
# check transactions-5 success: 1
5233
# check transactions-6 success: 1
5234
# INFO: Storage engine used for t1 seems to be transactional.
5237
# check transactions-7 success: 1
5238
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5240
SET @@session.sql_mode = 'traditional';
5241
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5242
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5243
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5244
'', '', 'was inserted' FROM t0_template
5245
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5246
ERROR 22012: Division by 0
5249
# check transactions-8 success: 1
5250
# INFO: Storage engine used for t1 seems to be able to revert
5251
# changes made by the failing statement.
5252
SET @@session.sql_mode = '';
5254
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5256
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5258
# check special-1 success: 1
5259
UPDATE t1 SET f_charbig = '';
5261
# check special-2 success: 1
5262
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5263
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5264
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5265
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5266
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5267
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5268
'just inserted' FROM t0_template
5269
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5270
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5272
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5273
f_charbig = 'updated by trigger'
5274
WHERE f_int1 = new.f_int1;
5276
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5277
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5278
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5280
# check trigger-1 success: 1
5282
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5283
f_int2 = CAST(f_char1 AS SIGNED INT),
5284
f_charbig = 'just inserted'
5285
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5287
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5288
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5289
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5290
'just inserted' FROM t0_template
5291
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5292
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5294
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5295
f_charbig = 'updated by trigger'
5296
WHERE f_int1 = new.f_int1;
5298
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5299
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5300
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5302
# check trigger-2 success: 1
5304
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5305
f_int2 = CAST(f_char1 AS SIGNED INT),
5306
f_charbig = 'just inserted'
5307
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5309
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5310
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5311
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5312
'just inserted' FROM t0_template
5313
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5314
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5316
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5317
f_charbig = 'updated by trigger'
5318
WHERE f_int1 = new.f_int1;
5320
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5321
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5323
# check trigger-3 success: 1
5325
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5326
f_int2 = CAST(f_char1 AS SIGNED INT),
5327
f_charbig = 'just inserted'
5328
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5330
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5331
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5332
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5333
'just inserted' FROM t0_template
5334
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5335
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5337
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5338
f_charbig = 'updated by trigger'
5339
WHERE f_int1 = - old.f_int1;
5341
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5342
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5344
# check trigger-4 success: 1
5346
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5347
f_int2 = CAST(f_char1 AS SIGNED INT),
5348
f_charbig = 'just inserted'
5349
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5351
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5352
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5353
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5354
'just inserted' FROM t0_template
5355
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5356
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5358
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5359
f_charbig = 'updated by trigger'
5360
WHERE f_int1 = new.f_int1;
5362
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5363
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5365
# check trigger-5 success: 1
5367
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5368
f_int2 = CAST(f_char1 AS SIGNED INT),
5369
f_charbig = 'just inserted'
5370
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5372
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5373
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5374
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5375
'just inserted' FROM t0_template
5376
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5377
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5379
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5380
f_charbig = 'updated by trigger'
5381
WHERE f_int1 = - old.f_int1;
5383
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5384
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5386
# check trigger-6 success: 1
5388
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5389
f_int2 = CAST(f_char1 AS SIGNED INT),
5390
f_charbig = 'just inserted'
5391
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5393
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5394
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5395
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5396
'just inserted' FROM t0_template
5397
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5398
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5400
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5401
f_charbig = 'updated by trigger'
5402
WHERE f_int1 = - old.f_int1;
5405
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5407
# check trigger-7 success: 1
5409
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5410
f_int2 = CAST(f_char1 AS SIGNED INT),
5411
f_charbig = 'just inserted'
5412
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5414
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5415
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5416
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5417
'just inserted' FROM t0_template
5418
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5419
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5421
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5422
f_charbig = 'updated by trigger'
5423
WHERE f_int1 = - old.f_int1;
5426
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5428
# check trigger-8 success: 1
5430
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5431
f_int2 = CAST(f_char1 AS SIGNED INT),
5432
f_charbig = 'just inserted'
5433
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5435
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5437
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5438
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5440
SET new.f_int1 = old.f_int1 + @max_row,
5441
new.f_int2 = old.f_int2 - @max_row,
5442
new.f_charbig = '####updated per update trigger####';
5445
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5446
f_charbig = '####updated per update statement itself####';
5448
# check trigger-9 success: 1
5450
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5451
f_int2 = CAST(f_char1 AS SIGNED INT),
5452
f_charbig = CONCAT('===',f_char1,'===');
5453
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5455
SET new.f_int1 = new.f_int1 + @max_row,
5456
new.f_int2 = new.f_int2 - @max_row,
5457
new.f_charbig = '####updated per update trigger####';
5460
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5461
f_charbig = '####updated per update statement itself####';
5463
# check trigger-10 success: 1
5465
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5466
f_int2 = CAST(f_char1 AS SIGNED INT),
5467
f_charbig = CONCAT('===',f_char1,'===');
5468
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5470
SET new.f_int1 = @my_max1 + @counter,
5471
new.f_int2 = @my_min2 - @counter,
5472
new.f_charbig = '####updated per insert trigger####';
5473
SET @counter = @counter + 1;
5476
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5477
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5478
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5479
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5480
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5484
# check trigger-11 success: 1
5486
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5487
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5488
AND f_charbig = '####updated per insert trigger####';
5489
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5491
SET new.f_int1 = @my_max1 + @counter,
5492
new.f_int2 = @my_min2 - @counter,
5493
new.f_charbig = '####updated per insert trigger####';
5494
SET @counter = @counter + 1;
5497
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5498
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5499
SELECT CAST(f_int1 AS CHAR),
5500
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5501
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5505
# check trigger-12 success: 1
5507
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5508
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5509
AND f_charbig = '####updated per insert trigger####';
5511
Table Op Msg_type Msg_text
5512
test.t1 analyze status OK
5513
CHECK TABLE t1 EXTENDED;
5514
Table Op Msg_type Msg_text
5515
test.t1 check status OK
5516
CHECKSUM TABLE t1 EXTENDED;
5518
test.t1 <some_value>
5520
Table Op Msg_type Msg_text
5521
test.t1 optimize status OK
5522
# check layout success: 1
5523
REPAIR TABLE t1 EXTENDED;
5524
Table Op Msg_type Msg_text
5525
test.t1 repair note The storage engine for the table doesn't support repair
5526
# check layout success: 1
5529
# check TRUNCATE success: 1
5530
# check layout success: 1
5531
# End usability test (inc/partition_check.inc)
5538
f_charbig VARCHAR(1000)
5541
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
5542
(PARTITION part_1 VALUES LESS THAN (0),
5543
PARTITION part_2 VALUES LESS THAN (5),
5544
PARTITION part_3 VALUES LESS THAN (10),
5545
PARTITION part_4 VALUES LESS THAN (2147483646));
5546
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5547
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5548
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5549
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
5550
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5551
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5552
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5553
# Start usability test (inc/partition_check.inc)
5555
SHOW CREATE TABLE t1;
5557
t1 CREATE TABLE `t1` (
5558
`f_int1` int(11) DEFAULT NULL,
5559
`f_int2` int(11) DEFAULT NULL,
5560
`f_char1` char(20) DEFAULT NULL,
5561
`f_char2` char(20) DEFAULT NULL,
5562
`f_charbig` varchar(1000) DEFAULT NULL
5563
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
5565
# check prerequisites-1 success: 1
5566
# check COUNT(*) success: 1
5567
# check MIN/MAX(f_int1) success: 1
5568
# check MIN/MAX(f_int2) success: 1
5569
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5570
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5571
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5572
WHERE f_int1 IN (2,3);
5573
# check prerequisites-3 success: 1
5574
DELETE FROM t1 WHERE f_charbig = 'delete me';
5575
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5576
# check read via f_int1 success: 1
5577
# check read via f_int2 success: 1
5579
# check multiple-1 success: 1
5580
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5582
# check multiple-2 success: 1
5583
INSERT INTO t1 SELECT * FROM t0_template
5584
WHERE MOD(f_int1,3) = 0;
5586
# check multiple-3 success: 1
5587
UPDATE t1 SET f_int1 = f_int1 + @max_row
5588
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5589
AND @max_row_div2 + @max_row_div4;
5591
# check multiple-4 success: 1
5593
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5594
AND @max_row_div2 + @max_row_div4 + @max_row;
5596
# check multiple-5 success: 1
5597
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5599
SET f_int1 = @cur_value , f_int2 = @cur_value,
5600
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5601
f_charbig = '#SINGLE#';
5603
# check single-1 success: 1
5604
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5606
SET f_int1 = @cur_value , f_int2 = @cur_value,
5607
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5608
f_charbig = '#SINGLE#';
5610
# check single-2 success: 1
5611
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5612
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5613
UPDATE t1 SET f_int1 = @cur_value2
5614
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5616
# check single-3 success: 1
5617
SET @cur_value1= -1;
5618
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5619
UPDATE t1 SET f_int1 = @cur_value1
5620
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5622
# check single-4 success: 1
5623
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5624
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5626
# check single-5 success: 1
5627
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5629
# check single-6 success: 1
5630
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5632
# check single-7 success: 1
5633
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
5634
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5635
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5636
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5637
f_charbig = '#NULL#';
5639
SET f_int1 = NULL , f_int2 = -@max_row,
5640
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5641
f_charbig = '#NULL#';
5642
# check null success: 1
5644
# check null-1 success: 1
5645
UPDATE t1 SET f_int1 = -@max_row
5646
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5647
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5649
# check null-2 success: 1
5650
UPDATE t1 SET f_int1 = NULL
5651
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5652
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5654
# check null-3 success: 1
5656
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5657
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5659
# check null-4 success: 1
5661
WHERE f_int1 = 0 AND f_int2 = 0
5662
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5663
AND f_charbig = '#NULL#';
5665
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5666
SELECT f_int1, f_int1, '', '', 'was inserted'
5667
FROM t0_template source_tab
5668
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5670
# check transactions-1 success: 1
5673
# check transactions-2 success: 1
5676
# check transactions-3 success: 1
5677
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5681
# check transactions-4 success: 1
5682
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5683
SELECT f_int1, f_int1, '', '', 'was inserted'
5684
FROM t0_template source_tab
5685
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5687
# check transactions-5 success: 1
5690
# check transactions-6 success: 1
5691
# INFO: Storage engine used for t1 seems to be transactional.
5694
# check transactions-7 success: 1
5695
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5697
SET @@session.sql_mode = 'traditional';
5698
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5699
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5700
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5701
'', '', 'was inserted' FROM t0_template
5702
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5703
ERROR 22012: Division by 0
5706
# check transactions-8 success: 1
5707
# INFO: Storage engine used for t1 seems to be able to revert
5708
# changes made by the failing statement.
5709
SET @@session.sql_mode = '';
5711
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5713
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5715
# check special-1 success: 1
5716
UPDATE t1 SET f_charbig = '';
5718
# check special-2 success: 1
5719
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5720
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5721
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5722
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5723
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5724
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5725
'just inserted' FROM t0_template
5726
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5727
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5729
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5730
f_charbig = 'updated by trigger'
5731
WHERE f_int1 = new.f_int1;
5733
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5734
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5735
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5737
# check trigger-1 success: 1
5739
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5740
f_int2 = CAST(f_char1 AS SIGNED INT),
5741
f_charbig = 'just inserted'
5742
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5744
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5745
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5746
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5747
'just inserted' FROM t0_template
5748
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5749
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5751
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5752
f_charbig = 'updated by trigger'
5753
WHERE f_int1 = new.f_int1;
5755
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5756
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5757
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5759
# check trigger-2 success: 1
5761
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5762
f_int2 = CAST(f_char1 AS SIGNED INT),
5763
f_charbig = 'just inserted'
5764
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5766
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5767
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5768
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5769
'just inserted' FROM t0_template
5770
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5771
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5773
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5774
f_charbig = 'updated by trigger'
5775
WHERE f_int1 = new.f_int1;
5777
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5778
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5780
# check trigger-3 success: 1
5782
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5783
f_int2 = CAST(f_char1 AS SIGNED INT),
5784
f_charbig = 'just inserted'
5785
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5787
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5788
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5789
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5790
'just inserted' FROM t0_template
5791
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5792
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5794
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5795
f_charbig = 'updated by trigger'
5796
WHERE f_int1 = - old.f_int1;
5798
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5799
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5801
# check trigger-4 success: 1
5803
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5804
f_int2 = CAST(f_char1 AS SIGNED INT),
5805
f_charbig = 'just inserted'
5806
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5808
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5809
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5810
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5811
'just inserted' FROM t0_template
5812
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5813
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5815
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5816
f_charbig = 'updated by trigger'
5817
WHERE f_int1 = new.f_int1;
5819
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5820
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5822
# check trigger-5 success: 1
5824
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5825
f_int2 = CAST(f_char1 AS SIGNED INT),
5826
f_charbig = 'just inserted'
5827
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5829
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5830
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5831
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5832
'just inserted' FROM t0_template
5833
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5834
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5836
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5837
f_charbig = 'updated by trigger'
5838
WHERE f_int1 = - old.f_int1;
5840
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5841
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5843
# check trigger-6 success: 1
5845
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5846
f_int2 = CAST(f_char1 AS SIGNED INT),
5847
f_charbig = 'just inserted'
5848
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5850
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5851
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5852
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5853
'just inserted' FROM t0_template
5854
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5855
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5857
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5858
f_charbig = 'updated by trigger'
5859
WHERE f_int1 = - old.f_int1;
5862
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5864
# check trigger-7 success: 1
5866
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5867
f_int2 = CAST(f_char1 AS SIGNED INT),
5868
f_charbig = 'just inserted'
5869
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5871
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5872
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5873
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5874
'just inserted' FROM t0_template
5875
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5876
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5878
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5879
f_charbig = 'updated by trigger'
5880
WHERE f_int1 = - old.f_int1;
5883
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5885
# check trigger-8 success: 1
5887
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5888
f_int2 = CAST(f_char1 AS SIGNED INT),
5889
f_charbig = 'just inserted'
5890
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5892
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5894
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5895
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5897
SET new.f_int1 = old.f_int1 + @max_row,
5898
new.f_int2 = old.f_int2 - @max_row,
5899
new.f_charbig = '####updated per update trigger####';
5902
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5903
f_charbig = '####updated per update statement itself####';
5905
# check trigger-9 success: 1
5907
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5908
f_int2 = CAST(f_char1 AS SIGNED INT),
5909
f_charbig = CONCAT('===',f_char1,'===');
5910
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5912
SET new.f_int1 = new.f_int1 + @max_row,
5913
new.f_int2 = new.f_int2 - @max_row,
5914
new.f_charbig = '####updated per update trigger####';
5917
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5918
f_charbig = '####updated per update statement itself####';
5920
# check trigger-10 success: 1
5922
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5923
f_int2 = CAST(f_char1 AS SIGNED INT),
5924
f_charbig = CONCAT('===',f_char1,'===');
5925
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5927
SET new.f_int1 = @my_max1 + @counter,
5928
new.f_int2 = @my_min2 - @counter,
5929
new.f_charbig = '####updated per insert trigger####';
5930
SET @counter = @counter + 1;
5933
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5934
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5935
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5936
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5937
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5941
# check trigger-11 success: 1
5943
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5944
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5945
AND f_charbig = '####updated per insert trigger####';
5946
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5948
SET new.f_int1 = @my_max1 + @counter,
5949
new.f_int2 = @my_min2 - @counter,
5950
new.f_charbig = '####updated per insert trigger####';
5951
SET @counter = @counter + 1;
5954
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5955
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5956
SELECT CAST(f_int1 AS CHAR),
5957
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5958
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5962
# check trigger-12 success: 1
5964
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5965
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5966
AND f_charbig = '####updated per insert trigger####';
5968
Table Op Msg_type Msg_text
5969
test.t1 analyze status OK
5970
CHECK TABLE t1 EXTENDED;
5971
Table Op Msg_type Msg_text
5972
test.t1 check status OK
5973
CHECKSUM TABLE t1 EXTENDED;
5975
test.t1 <some_value>
5977
Table Op Msg_type Msg_text
5978
test.t1 optimize status OK
5979
# check layout success: 1
5980
REPAIR TABLE t1 EXTENDED;
5981
Table Op Msg_type Msg_text
5982
test.t1 repair note The storage engine for the table doesn't support repair
5983
# check layout success: 1
5986
# check TRUNCATE success: 1
5987
# check layout success: 1
5988
# End usability test (inc/partition_check.inc)
5995
f_charbig VARCHAR(1000)
5998
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
5999
(PARTITION part_1 VALUES LESS THAN (0)
6000
(SUBPARTITION subpart11, SUBPARTITION subpart12),
6001
PARTITION part_2 VALUES LESS THAN (5)
6002
(SUBPARTITION subpart21, SUBPARTITION subpart22),
6003
PARTITION part_3 VALUES LESS THAN (10)
6004
(SUBPARTITION subpart31, SUBPARTITION subpart32),
6005
PARTITION part_4 VALUES LESS THAN (2147483646)
6006
(SUBPARTITION subpart41, SUBPARTITION subpart42));
6007
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6008
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6009
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6010
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
6011
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6012
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6013
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6014
# Start usability test (inc/partition_check.inc)
6016
SHOW CREATE TABLE t1;
6018
t1 CREATE TABLE `t1` (
6019
`f_int1` int(11) DEFAULT NULL,
6020
`f_int2` int(11) DEFAULT NULL,
6021
`f_char1` char(20) DEFAULT NULL,
6022
`f_char2` char(20) DEFAULT NULL,
6023
`f_charbig` varchar(1000) DEFAULT NULL
6024
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
6026
# check prerequisites-1 success: 1
6027
# check COUNT(*) success: 1
6028
# check MIN/MAX(f_int1) success: 1
6029
# check MIN/MAX(f_int2) success: 1
6030
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6031
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6032
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6033
WHERE f_int1 IN (2,3);
6034
# check prerequisites-3 success: 1
6035
DELETE FROM t1 WHERE f_charbig = 'delete me';
6036
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6037
# check read via f_int1 success: 1
6038
# check read via f_int2 success: 1
6040
# check multiple-1 success: 1
6041
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6043
# check multiple-2 success: 1
6044
INSERT INTO t1 SELECT * FROM t0_template
6045
WHERE MOD(f_int1,3) = 0;
6047
# check multiple-3 success: 1
6048
UPDATE t1 SET f_int1 = f_int1 + @max_row
6049
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6050
AND @max_row_div2 + @max_row_div4;
6052
# check multiple-4 success: 1
6054
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6055
AND @max_row_div2 + @max_row_div4 + @max_row;
6057
# check multiple-5 success: 1
6058
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6060
SET f_int1 = @cur_value , f_int2 = @cur_value,
6061
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6062
f_charbig = '#SINGLE#';
6064
# check single-1 success: 1
6065
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6067
SET f_int1 = @cur_value , f_int2 = @cur_value,
6068
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6069
f_charbig = '#SINGLE#';
6071
# check single-2 success: 1
6072
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6073
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6074
UPDATE t1 SET f_int1 = @cur_value2
6075
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6077
# check single-3 success: 1
6078
SET @cur_value1= -1;
6079
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6080
UPDATE t1 SET f_int1 = @cur_value1
6081
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6083
# check single-4 success: 1
6084
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6085
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6087
# check single-5 success: 1
6088
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6090
# check single-6 success: 1
6091
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6092
ERROR HY000: Table has no partition for value 2147483647
6093
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6094
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6095
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6096
f_charbig = '#NULL#';
6098
SET f_int1 = NULL , f_int2 = -@max_row,
6099
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6100
f_charbig = '#NULL#';
6101
# check null success: 1
6103
# check null-1 success: 1
6104
UPDATE t1 SET f_int1 = -@max_row
6105
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6106
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6108
# check null-2 success: 1
6109
UPDATE t1 SET f_int1 = NULL
6110
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6111
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6113
# check null-3 success: 1
6115
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6116
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6118
# check null-4 success: 1
6120
WHERE f_int1 = 0 AND f_int2 = 0
6121
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6122
AND f_charbig = '#NULL#';
6124
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6125
SELECT f_int1, f_int1, '', '', 'was inserted'
6126
FROM t0_template source_tab
6127
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6129
# check transactions-1 success: 1
6132
# check transactions-2 success: 1
6135
# check transactions-3 success: 1
6136
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6140
# check transactions-4 success: 1
6141
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6142
SELECT f_int1, f_int1, '', '', 'was inserted'
6143
FROM t0_template source_tab
6144
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6146
# check transactions-5 success: 1
6149
# check transactions-6 success: 1
6150
# INFO: Storage engine used for t1 seems to be transactional.
6153
# check transactions-7 success: 1
6154
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6156
SET @@session.sql_mode = 'traditional';
6157
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6158
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6159
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6160
'', '', 'was inserted' FROM t0_template
6161
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6162
ERROR 22012: Division by 0
6165
# check transactions-8 success: 1
6166
# INFO: Storage engine used for t1 seems to be able to revert
6167
# changes made by the failing statement.
6168
SET @@session.sql_mode = '';
6170
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6172
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6174
# check special-1 success: 1
6175
UPDATE t1 SET f_charbig = '';
6177
# check special-2 success: 1
6178
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6179
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6180
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6181
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6182
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6183
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6184
'just inserted' FROM t0_template
6185
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6186
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6188
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6189
f_charbig = 'updated by trigger'
6190
WHERE f_int1 = new.f_int1;
6192
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6193
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6196
# check trigger-1 success: 1
6198
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6199
f_int2 = CAST(f_char1 AS SIGNED INT),
6200
f_charbig = 'just inserted'
6201
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6203
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6204
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6205
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6206
'just inserted' FROM t0_template
6207
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6208
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6210
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6211
f_charbig = 'updated by trigger'
6212
WHERE f_int1 = new.f_int1;
6214
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6215
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6216
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6218
# check trigger-2 success: 1
6220
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6221
f_int2 = CAST(f_char1 AS SIGNED INT),
6222
f_charbig = 'just inserted'
6223
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6225
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6226
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6227
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6228
'just inserted' FROM t0_template
6229
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6230
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6232
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6233
f_charbig = 'updated by trigger'
6234
WHERE f_int1 = new.f_int1;
6236
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6237
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6239
# check trigger-3 success: 1
6241
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6242
f_int2 = CAST(f_char1 AS SIGNED INT),
6243
f_charbig = 'just inserted'
6244
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6246
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6247
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6248
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6249
'just inserted' FROM t0_template
6250
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6251
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6253
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6254
f_charbig = 'updated by trigger'
6255
WHERE f_int1 = - old.f_int1;
6257
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6258
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6260
# check trigger-4 success: 1
6262
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6263
f_int2 = CAST(f_char1 AS SIGNED INT),
6264
f_charbig = 'just inserted'
6265
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6267
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6268
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6269
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6270
'just inserted' FROM t0_template
6271
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6272
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6274
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6275
f_charbig = 'updated by trigger'
6276
WHERE f_int1 = new.f_int1;
6278
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6279
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6281
# check trigger-5 success: 1
6283
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6284
f_int2 = CAST(f_char1 AS SIGNED INT),
6285
f_charbig = 'just inserted'
6286
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6288
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6289
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6290
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6291
'just inserted' FROM t0_template
6292
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6293
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6295
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6296
f_charbig = 'updated by trigger'
6297
WHERE f_int1 = - old.f_int1;
6299
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6300
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6302
# check trigger-6 success: 1
6304
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6305
f_int2 = CAST(f_char1 AS SIGNED INT),
6306
f_charbig = 'just inserted'
6307
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6309
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6310
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6311
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6312
'just inserted' FROM t0_template
6313
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6314
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6316
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6317
f_charbig = 'updated by trigger'
6318
WHERE f_int1 = - old.f_int1;
6321
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6323
# check trigger-7 success: 1
6325
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6326
f_int2 = CAST(f_char1 AS SIGNED INT),
6327
f_charbig = 'just inserted'
6328
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6330
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6331
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6332
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6333
'just inserted' FROM t0_template
6334
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6335
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6337
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6338
f_charbig = 'updated by trigger'
6339
WHERE f_int1 = - old.f_int1;
6342
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6344
# check trigger-8 success: 1
6346
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6347
f_int2 = CAST(f_char1 AS SIGNED INT),
6348
f_charbig = 'just inserted'
6349
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6351
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6353
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6354
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6356
SET new.f_int1 = old.f_int1 + @max_row,
6357
new.f_int2 = old.f_int2 - @max_row,
6358
new.f_charbig = '####updated per update trigger####';
6361
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6362
f_charbig = '####updated per update statement itself####';
6364
# check trigger-9 success: 1
6366
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6367
f_int2 = CAST(f_char1 AS SIGNED INT),
6368
f_charbig = CONCAT('===',f_char1,'===');
6369
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6371
SET new.f_int1 = new.f_int1 + @max_row,
6372
new.f_int2 = new.f_int2 - @max_row,
6373
new.f_charbig = '####updated per update trigger####';
6376
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6377
f_charbig = '####updated per update statement itself####';
6379
# check trigger-10 success: 1
6381
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6382
f_int2 = CAST(f_char1 AS SIGNED INT),
6383
f_charbig = CONCAT('===',f_char1,'===');
6384
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6386
SET new.f_int1 = @my_max1 + @counter,
6387
new.f_int2 = @my_min2 - @counter,
6388
new.f_charbig = '####updated per insert trigger####';
6389
SET @counter = @counter + 1;
6392
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6393
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6394
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6395
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6396
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6400
# check trigger-11 success: 1
6402
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6403
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6404
AND f_charbig = '####updated per insert trigger####';
6405
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6407
SET new.f_int1 = @my_max1 + @counter,
6408
new.f_int2 = @my_min2 - @counter,
6409
new.f_charbig = '####updated per insert trigger####';
6410
SET @counter = @counter + 1;
6413
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6414
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6415
SELECT CAST(f_int1 AS CHAR),
6416
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6417
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6421
# check trigger-12 success: 1
6423
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6424
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6425
AND f_charbig = '####updated per insert trigger####';
6427
Table Op Msg_type Msg_text
6428
test.t1 analyze status OK
6429
CHECK TABLE t1 EXTENDED;
6430
Table Op Msg_type Msg_text
6431
test.t1 check status OK
6432
CHECKSUM TABLE t1 EXTENDED;
6434
test.t1 <some_value>
6436
Table Op Msg_type Msg_text
6437
test.t1 optimize status OK
6438
# check layout success: 1
6439
REPAIR TABLE t1 EXTENDED;
6440
Table Op Msg_type Msg_text
6441
test.t1 repair note The storage engine for the table doesn't support repair
6442
# check layout success: 1
6445
# check TRUNCATE success: 1
6446
# check layout success: 1
6447
# End usability test (inc/partition_check.inc)
6454
f_charbig VARCHAR(1000)
6457
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
6458
(PARTITION part_1 VALUES IN (0)
6459
(SUBPARTITION sp11, SUBPARTITION sp12),
6460
PARTITION part_2 VALUES IN (1)
6461
(SUBPARTITION sp21, SUBPARTITION sp22),
6462
PARTITION part_3 VALUES IN (2)
6463
(SUBPARTITION sp31, SUBPARTITION sp32),
6464
PARTITION part_4 VALUES IN (NULL)
6465
(SUBPARTITION sp41, SUBPARTITION sp42));
6466
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6467
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6468
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6469
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
6470
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6471
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6472
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6473
# Start usability test (inc/partition_check.inc)
6475
SHOW CREATE TABLE t1;
6477
t1 CREATE TABLE `t1` (
6478
`f_int1` int(11) DEFAULT NULL,
6479
`f_int2` int(11) DEFAULT NULL,
6480
`f_char1` char(20) DEFAULT NULL,
6481
`f_char2` char(20) DEFAULT NULL,
6482
`f_charbig` varchar(1000) DEFAULT NULL
6483
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
6485
# check prerequisites-1 success: 1
6486
# check COUNT(*) success: 1
6487
# check MIN/MAX(f_int1) success: 1
6488
# check MIN/MAX(f_int2) success: 1
6489
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6490
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6491
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6492
WHERE f_int1 IN (2,3);
6493
# check prerequisites-3 success: 1
6494
DELETE FROM t1 WHERE f_charbig = 'delete me';
6495
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6496
# check read via f_int1 success: 1
6497
# check read via f_int2 success: 1
6499
# check multiple-1 success: 1
6500
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6502
# check multiple-2 success: 1
6503
INSERT INTO t1 SELECT * FROM t0_template
6504
WHERE MOD(f_int1,3) = 0;
6506
# check multiple-3 success: 1
6507
UPDATE t1 SET f_int1 = f_int1 + @max_row
6508
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6509
AND @max_row_div2 + @max_row_div4;
6511
# check multiple-4 success: 1
6513
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6514
AND @max_row_div2 + @max_row_div4 + @max_row;
6516
# check multiple-5 success: 1
6517
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6519
SET f_int1 = @cur_value , f_int2 = @cur_value,
6520
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6521
f_charbig = '#SINGLE#';
6523
# check single-1 success: 1
6524
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6526
SET f_int1 = @cur_value , f_int2 = @cur_value,
6527
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6528
f_charbig = '#SINGLE#';
6530
# check single-2 success: 1
6531
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6532
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6533
UPDATE t1 SET f_int1 = @cur_value2
6534
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6536
# check single-3 success: 1
6537
SET @cur_value1= -1;
6538
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6539
UPDATE t1 SET f_int1 = @cur_value1
6540
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6542
# check single-4 success: 1
6543
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6544
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6546
# check single-5 success: 1
6547
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6549
# check single-6 success: 1
6550
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6552
# check single-7 success: 1
6553
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6554
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6555
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6556
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6557
f_charbig = '#NULL#';
6559
SET f_int1 = NULL , f_int2 = -@max_row,
6560
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6561
f_charbig = '#NULL#';
6562
# check null success: 1
6564
# check null-1 success: 1
6565
UPDATE t1 SET f_int1 = -@max_row
6566
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6567
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6569
# check null-2 success: 1
6570
UPDATE t1 SET f_int1 = NULL
6571
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6572
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6574
# check null-3 success: 1
6576
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6577
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6579
# check null-4 success: 1
6581
WHERE f_int1 = 0 AND f_int2 = 0
6582
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6583
AND f_charbig = '#NULL#';
6585
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6586
SELECT f_int1, f_int1, '', '', 'was inserted'
6587
FROM t0_template source_tab
6588
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6590
# check transactions-1 success: 1
6593
# check transactions-2 success: 1
6596
# check transactions-3 success: 1
6597
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6601
# check transactions-4 success: 1
6602
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6603
SELECT f_int1, f_int1, '', '', 'was inserted'
6604
FROM t0_template source_tab
6605
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6607
# check transactions-5 success: 1
6610
# check transactions-6 success: 1
6611
# INFO: Storage engine used for t1 seems to be transactional.
6614
# check transactions-7 success: 1
6615
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6617
SET @@session.sql_mode = 'traditional';
6618
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6619
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6620
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6621
'', '', 'was inserted' FROM t0_template
6622
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6623
ERROR 22012: Division by 0
6626
# check transactions-8 success: 1
6627
# INFO: Storage engine used for t1 seems to be able to revert
6628
# changes made by the failing statement.
6629
SET @@session.sql_mode = '';
6631
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6633
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6635
# check special-1 success: 1
6636
UPDATE t1 SET f_charbig = '';
6638
# check special-2 success: 1
6639
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6640
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6641
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6642
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6643
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6644
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6645
'just inserted' FROM t0_template
6646
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6647
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6649
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6650
f_charbig = 'updated by trigger'
6651
WHERE f_int1 = new.f_int1;
6653
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6654
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6655
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6657
# check trigger-1 success: 1
6659
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6660
f_int2 = CAST(f_char1 AS SIGNED INT),
6661
f_charbig = 'just inserted'
6662
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6664
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6665
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6666
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6667
'just inserted' FROM t0_template
6668
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6669
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6671
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6672
f_charbig = 'updated by trigger'
6673
WHERE f_int1 = new.f_int1;
6675
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6676
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6677
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6679
# check trigger-2 success: 1
6681
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6682
f_int2 = CAST(f_char1 AS SIGNED INT),
6683
f_charbig = 'just inserted'
6684
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6686
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6687
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6688
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6689
'just inserted' FROM t0_template
6690
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6691
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6693
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6694
f_charbig = 'updated by trigger'
6695
WHERE f_int1 = new.f_int1;
6697
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6698
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6700
# check trigger-3 success: 1
6702
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6703
f_int2 = CAST(f_char1 AS SIGNED INT),
6704
f_charbig = 'just inserted'
6705
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6707
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6708
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6709
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6710
'just inserted' FROM t0_template
6711
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6712
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6714
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6715
f_charbig = 'updated by trigger'
6716
WHERE f_int1 = - old.f_int1;
6718
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6719
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6721
# check trigger-4 success: 1
6723
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6724
f_int2 = CAST(f_char1 AS SIGNED INT),
6725
f_charbig = 'just inserted'
6726
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6728
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6729
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6730
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6731
'just inserted' FROM t0_template
6732
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6733
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6735
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6736
f_charbig = 'updated by trigger'
6737
WHERE f_int1 = new.f_int1;
6739
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6740
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6742
# check trigger-5 success: 1
6744
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6745
f_int2 = CAST(f_char1 AS SIGNED INT),
6746
f_charbig = 'just inserted'
6747
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6749
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6750
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6751
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6752
'just inserted' FROM t0_template
6753
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6754
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6756
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6757
f_charbig = 'updated by trigger'
6758
WHERE f_int1 = - old.f_int1;
6760
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6761
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6763
# check trigger-6 success: 1
6765
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6766
f_int2 = CAST(f_char1 AS SIGNED INT),
6767
f_charbig = 'just inserted'
6768
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6770
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6771
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6772
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6773
'just inserted' FROM t0_template
6774
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6775
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6777
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6778
f_charbig = 'updated by trigger'
6779
WHERE f_int1 = - old.f_int1;
6782
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6784
# check trigger-7 success: 1
6786
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6787
f_int2 = CAST(f_char1 AS SIGNED INT),
6788
f_charbig = 'just inserted'
6789
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6791
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6792
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6793
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6794
'just inserted' FROM t0_template
6795
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6796
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6798
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6799
f_charbig = 'updated by trigger'
6800
WHERE f_int1 = - old.f_int1;
6803
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6805
# check trigger-8 success: 1
6807
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6808
f_int2 = CAST(f_char1 AS SIGNED INT),
6809
f_charbig = 'just inserted'
6810
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6812
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6814
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6815
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6817
SET new.f_int1 = old.f_int1 + @max_row,
6818
new.f_int2 = old.f_int2 - @max_row,
6819
new.f_charbig = '####updated per update trigger####';
6822
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6823
f_charbig = '####updated per update statement itself####';
6825
# check trigger-9 success: 1
6827
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6828
f_int2 = CAST(f_char1 AS SIGNED INT),
6829
f_charbig = CONCAT('===',f_char1,'===');
6830
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6832
SET new.f_int1 = new.f_int1 + @max_row,
6833
new.f_int2 = new.f_int2 - @max_row,
6834
new.f_charbig = '####updated per update trigger####';
6837
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6838
f_charbig = '####updated per update statement itself####';
6840
# check trigger-10 success: 1
6842
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6843
f_int2 = CAST(f_char1 AS SIGNED INT),
6844
f_charbig = CONCAT('===',f_char1,'===');
6845
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6847
SET new.f_int1 = @my_max1 + @counter,
6848
new.f_int2 = @my_min2 - @counter,
6849
new.f_charbig = '####updated per insert trigger####';
6850
SET @counter = @counter + 1;
6853
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6854
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6855
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6856
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6857
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6861
# check trigger-11 success: 1
6863
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6864
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6865
AND f_charbig = '####updated per insert trigger####';
6866
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6868
SET new.f_int1 = @my_max1 + @counter,
6869
new.f_int2 = @my_min2 - @counter,
6870
new.f_charbig = '####updated per insert trigger####';
6871
SET @counter = @counter + 1;
6874
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6875
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6876
SELECT CAST(f_int1 AS CHAR),
6877
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6878
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6882
# check trigger-12 success: 1
6884
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6885
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6886
AND f_charbig = '####updated per insert trigger####';
6888
Table Op Msg_type Msg_text
6889
test.t1 analyze status OK
6890
CHECK TABLE t1 EXTENDED;
6891
Table Op Msg_type Msg_text
6892
test.t1 check status OK
6893
CHECKSUM TABLE t1 EXTENDED;
6895
test.t1 <some_value>
6897
Table Op Msg_type Msg_text
6898
test.t1 optimize status OK
6899
# check layout success: 1
6900
REPAIR TABLE t1 EXTENDED;
6901
Table Op Msg_type Msg_text
6902
test.t1 repair note The storage engine for the table doesn't support repair
6903
# check layout success: 1
6906
# check TRUNCATE success: 1
6907
# check layout success: 1
6908
# End usability test (inc/partition_check.inc)
6915
f_charbig VARCHAR(1000)
6918
PARTITION BY LIST(ABS(MOD(f_int1,2)))
6919
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
6920
(PARTITION part_1 VALUES IN (0),
6921
PARTITION part_2 VALUES IN (1),
6922
PARTITION part_3 VALUES IN (NULL));
6923
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6924
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6925
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6926
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2;
6927
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6928
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6929
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6930
# Start usability test (inc/partition_check.inc)
6932
SHOW CREATE TABLE t1;
6934
t1 CREATE TABLE `t1` (
6935
`f_int1` int(11) DEFAULT NULL,
6936
`f_int2` int(11) DEFAULT NULL,
6937
`f_char1` char(20) DEFAULT NULL,
6938
`f_char2` char(20) DEFAULT NULL,
6939
`f_charbig` varchar(1000) DEFAULT NULL
6940
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */
6942
# check prerequisites-1 success: 1
6943
# check COUNT(*) success: 1
6944
# check MIN/MAX(f_int1) success: 1
6945
# check MIN/MAX(f_int2) success: 1
6946
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6947
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6948
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6949
WHERE f_int1 IN (2,3);
6950
# check prerequisites-3 success: 1
6951
DELETE FROM t1 WHERE f_charbig = 'delete me';
6952
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6953
# check read via f_int1 success: 1
6954
# check read via f_int2 success: 1
6956
# check multiple-1 success: 1
6957
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6959
# check multiple-2 success: 1
6960
INSERT INTO t1 SELECT * FROM t0_template
6961
WHERE MOD(f_int1,3) = 0;
6963
# check multiple-3 success: 1
6964
UPDATE t1 SET f_int1 = f_int1 + @max_row
6965
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6966
AND @max_row_div2 + @max_row_div4;
6968
# check multiple-4 success: 1
6970
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6971
AND @max_row_div2 + @max_row_div4 + @max_row;
6973
# check multiple-5 success: 1
6974
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6976
SET f_int1 = @cur_value , f_int2 = @cur_value,
6977
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6978
f_charbig = '#SINGLE#';
6980
# check single-1 success: 1
6981
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6983
SET f_int1 = @cur_value , f_int2 = @cur_value,
6984
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6985
f_charbig = '#SINGLE#';
6987
# check single-2 success: 1
6988
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6989
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6990
UPDATE t1 SET f_int1 = @cur_value2
6991
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6993
# check single-3 success: 1
6994
SET @cur_value1= -1;
6995
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6996
UPDATE t1 SET f_int1 = @cur_value1
6997
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6999
# check single-4 success: 1
7000
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7001
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7003
# check single-5 success: 1
7004
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7006
# check single-6 success: 1
7007
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7009
# check single-7 success: 1
7010
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7011
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7012
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7013
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7014
f_charbig = '#NULL#';
7016
SET f_int1 = NULL , f_int2 = -@max_row,
7017
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7018
f_charbig = '#NULL#';
7019
# check null success: 1
7021
# check null-1 success: 1
7022
UPDATE t1 SET f_int1 = -@max_row
7023
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7024
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7026
# check null-2 success: 1
7027
UPDATE t1 SET f_int1 = NULL
7028
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7029
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7031
# check null-3 success: 1
7033
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7034
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7036
# check null-4 success: 1
7038
WHERE f_int1 = 0 AND f_int2 = 0
7039
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7040
AND f_charbig = '#NULL#';
7042
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7043
SELECT f_int1, f_int1, '', '', 'was inserted'
7044
FROM t0_template source_tab
7045
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7047
# check transactions-1 success: 1
7050
# check transactions-2 success: 1
7053
# check transactions-3 success: 1
7054
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7058
# check transactions-4 success: 1
7059
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7060
SELECT f_int1, f_int1, '', '', 'was inserted'
7061
FROM t0_template source_tab
7062
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7064
# check transactions-5 success: 1
7067
# check transactions-6 success: 1
7068
# INFO: Storage engine used for t1 seems to be transactional.
7071
# check transactions-7 success: 1
7072
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7074
SET @@session.sql_mode = 'traditional';
7075
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7076
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7077
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7078
'', '', 'was inserted' FROM t0_template
7079
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7080
ERROR 22012: Division by 0
7083
# check transactions-8 success: 1
7084
# INFO: Storage engine used for t1 seems to be able to revert
7085
# changes made by the failing statement.
7086
SET @@session.sql_mode = '';
7088
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7090
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7092
# check special-1 success: 1
7093
UPDATE t1 SET f_charbig = '';
7095
# check special-2 success: 1
7096
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7097
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7098
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7099
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7100
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7101
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7102
'just inserted' FROM t0_template
7103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7104
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7106
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7107
f_charbig = 'updated by trigger'
7108
WHERE f_int1 = new.f_int1;
7110
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7111
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7112
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7114
# check trigger-1 success: 1
7116
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7117
f_int2 = CAST(f_char1 AS SIGNED INT),
7118
f_charbig = 'just inserted'
7119
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7121
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7122
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7123
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7124
'just inserted' FROM t0_template
7125
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7126
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7128
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7129
f_charbig = 'updated by trigger'
7130
WHERE f_int1 = new.f_int1;
7132
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7133
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7134
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7136
# check trigger-2 success: 1
7138
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7139
f_int2 = CAST(f_char1 AS SIGNED INT),
7140
f_charbig = 'just inserted'
7141
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7143
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7144
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7145
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7146
'just inserted' FROM t0_template
7147
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7148
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7150
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7151
f_charbig = 'updated by trigger'
7152
WHERE f_int1 = new.f_int1;
7154
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7155
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7157
# check trigger-3 success: 1
7159
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7160
f_int2 = CAST(f_char1 AS SIGNED INT),
7161
f_charbig = 'just inserted'
7162
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7164
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7165
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7166
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7167
'just inserted' FROM t0_template
7168
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7169
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7171
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7172
f_charbig = 'updated by trigger'
7173
WHERE f_int1 = - old.f_int1;
7175
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7176
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7178
# check trigger-4 success: 1
7180
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7181
f_int2 = CAST(f_char1 AS SIGNED INT),
7182
f_charbig = 'just inserted'
7183
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7185
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7186
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7187
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7188
'just inserted' FROM t0_template
7189
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7190
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7192
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7193
f_charbig = 'updated by trigger'
7194
WHERE f_int1 = new.f_int1;
7196
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7197
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7199
# check trigger-5 success: 1
7201
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7202
f_int2 = CAST(f_char1 AS SIGNED INT),
7203
f_charbig = 'just inserted'
7204
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7206
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7207
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7208
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7209
'just inserted' FROM t0_template
7210
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7211
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7213
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7214
f_charbig = 'updated by trigger'
7215
WHERE f_int1 = - old.f_int1;
7217
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7218
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7220
# check trigger-6 success: 1
7222
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7223
f_int2 = CAST(f_char1 AS SIGNED INT),
7224
f_charbig = 'just inserted'
7225
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7227
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7228
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7229
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7230
'just inserted' FROM t0_template
7231
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7232
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7234
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7235
f_charbig = 'updated by trigger'
7236
WHERE f_int1 = - old.f_int1;
7239
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7241
# check trigger-7 success: 1
7243
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7244
f_int2 = CAST(f_char1 AS SIGNED INT),
7245
f_charbig = 'just inserted'
7246
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7248
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7249
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7250
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7251
'just inserted' FROM t0_template
7252
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7253
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7255
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7256
f_charbig = 'updated by trigger'
7257
WHERE f_int1 = - old.f_int1;
7260
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7262
# check trigger-8 success: 1
7264
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7265
f_int2 = CAST(f_char1 AS SIGNED INT),
7266
f_charbig = 'just inserted'
7267
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7269
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7271
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7272
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7274
SET new.f_int1 = old.f_int1 + @max_row,
7275
new.f_int2 = old.f_int2 - @max_row,
7276
new.f_charbig = '####updated per update trigger####';
7279
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7280
f_charbig = '####updated per update statement itself####';
7282
# check trigger-9 success: 1
7284
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7285
f_int2 = CAST(f_char1 AS SIGNED INT),
7286
f_charbig = CONCAT('===',f_char1,'===');
7287
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7289
SET new.f_int1 = new.f_int1 + @max_row,
7290
new.f_int2 = new.f_int2 - @max_row,
7291
new.f_charbig = '####updated per update trigger####';
7294
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7295
f_charbig = '####updated per update statement itself####';
7297
# check trigger-10 success: 1
7299
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7300
f_int2 = CAST(f_char1 AS SIGNED INT),
7301
f_charbig = CONCAT('===',f_char1,'===');
7302
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7304
SET new.f_int1 = @my_max1 + @counter,
7305
new.f_int2 = @my_min2 - @counter,
7306
new.f_charbig = '####updated per insert trigger####';
7307
SET @counter = @counter + 1;
7310
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7311
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7312
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7313
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7314
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7318
# check trigger-11 success: 1
7320
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7321
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7322
AND f_charbig = '####updated per insert trigger####';
7323
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7325
SET new.f_int1 = @my_max1 + @counter,
7326
new.f_int2 = @my_min2 - @counter,
7327
new.f_charbig = '####updated per insert trigger####';
7328
SET @counter = @counter + 1;
7331
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7332
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7333
SELECT CAST(f_int1 AS CHAR),
7334
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7335
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7339
# check trigger-12 success: 1
7341
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7342
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7343
AND f_charbig = '####updated per insert trigger####';
7345
Table Op Msg_type Msg_text
7346
test.t1 analyze status OK
7347
CHECK TABLE t1 EXTENDED;
7348
Table Op Msg_type Msg_text
7349
test.t1 check status OK
7350
CHECKSUM TABLE t1 EXTENDED;
7352
test.t1 <some_value>
7354
Table Op Msg_type Msg_text
7355
test.t1 optimize status OK
7356
# check layout success: 1
7357
REPAIR TABLE t1 EXTENDED;
7358
Table Op Msg_type Msg_text
7359
test.t1 repair note The storage engine for the table doesn't support repair
7360
# check layout success: 1
7363
# check TRUNCATE success: 1
7364
# check layout success: 1
7365
# End usability test (inc/partition_check.inc)
7367
# 1.3 ALTER ... ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
7368
DROP TABLE IF EXISTS t1;
7374
f_charbig VARCHAR(1000)
7377
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
7378
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7379
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7380
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7381
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
7382
ERROR HY000: Error in list of partitions to ANALYZE
7389
f_charbig VARCHAR(1000)
7392
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
7393
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7394
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7395
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7396
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
7397
ERROR HY000: Error in list of partitions to ANALYZE
7404
f_charbig VARCHAR(1000)
7407
PARTITION BY LIST(MOD(f_int1,4))
7408
(PARTITION part_3 VALUES IN (-3),
7409
PARTITION part_2 VALUES IN (-2),
7410
PARTITION part_1 VALUES IN (-1),
7411
PARTITION part_N VALUES IN (NULL),
7412
PARTITION part0 VALUES IN (0),
7413
PARTITION part1 VALUES IN (1),
7414
PARTITION part2 VALUES IN (2),
7415
PARTITION part3 VALUES IN (3));
7416
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7417
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7418
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7419
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
7420
ERROR HY000: Error in list of partitions to ANALYZE
7427
f_charbig VARCHAR(1000)
7430
PARTITION BY RANGE(f_int1)
7431
(PARTITION parta VALUES LESS THAN (0),
7432
PARTITION part_1 VALUES LESS THAN (5),
7433
PARTITION part_2 VALUES LESS THAN (10),
7434
PARTITION part_3 VALUES LESS THAN (10 + 5),
7435
PARTITION part_4 VALUES LESS THAN (20),
7436
PARTITION part_5 VALUES LESS THAN (2147483646));
7437
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7438
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7439
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7440
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
7441
ERROR HY000: Error in list of partitions to ANALYZE
7448
f_charbig VARCHAR(1000)
7451
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
7452
(PARTITION part_1 VALUES LESS THAN (0),
7453
PARTITION part_2 VALUES LESS THAN (5),
7454
PARTITION part_3 VALUES LESS THAN (10),
7455
PARTITION part_4 VALUES LESS THAN (2147483646));
7456
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7457
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7458
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7459
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
7460
ERROR HY000: Error in list of partitions to ANALYZE
7467
f_charbig VARCHAR(1000)
7470
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
7471
(PARTITION part_1 VALUES LESS THAN (0)
7472
(SUBPARTITION subpart11, SUBPARTITION subpart12),
7473
PARTITION part_2 VALUES LESS THAN (5)
7474
(SUBPARTITION subpart21, SUBPARTITION subpart22),
7475
PARTITION part_3 VALUES LESS THAN (10)
7476
(SUBPARTITION subpart31, SUBPARTITION subpart32),
7477
PARTITION part_4 VALUES LESS THAN (2147483646)
7478
(SUBPARTITION subpart41, SUBPARTITION subpart42));
7479
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7480
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7481
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7482
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
7483
ERROR HY000: Error in list of partitions to ANALYZE
7490
f_charbig VARCHAR(1000)
7493
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
7494
(PARTITION part_1 VALUES IN (0)
7495
(SUBPARTITION sp11, SUBPARTITION sp12),
7496
PARTITION part_2 VALUES IN (1)
7497
(SUBPARTITION sp21, SUBPARTITION sp22),
7498
PARTITION part_3 VALUES IN (2)
7499
(SUBPARTITION sp31, SUBPARTITION sp32),
7500
PARTITION part_4 VALUES IN (NULL)
7501
(SUBPARTITION sp41, SUBPARTITION sp42));
7502
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7503
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7504
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7505
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
7506
ERROR HY000: Error in list of partitions to ANALYZE
7513
f_charbig VARCHAR(1000)
7516
PARTITION BY LIST(ABS(MOD(f_int1,2)))
7517
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
7518
(PARTITION part_1 VALUES IN (0),
7519
PARTITION part_2 VALUES IN (1),
7520
PARTITION part_3 VALUES IN (NULL));
7521
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7522
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7523
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7524
ALTER TABLE t1 ANALYZE PARTITION part_1,part_2,part_5,part_6,part_10;
7525
ERROR HY000: Error in list of partitions to ANALYZE
7527
# 1.4 ALTER ... ANALYZE PARTITION part_1,part_1,part_1;
7528
DROP TABLE IF EXISTS t1;
7534
f_charbig VARCHAR(1000)
7537
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
7538
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7539
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7540
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7541
ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
7542
ERROR HY000: Error in list of partitions to ANALYZE
7549
f_charbig VARCHAR(1000)
7552
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
7553
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7554
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7555
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7556
ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
7557
ERROR HY000: Error in list of partitions to ANALYZE
7564
f_charbig VARCHAR(1000)
7567
PARTITION BY LIST(MOD(f_int1,4))
7568
(PARTITION part_3 VALUES IN (-3),
7569
PARTITION part_2 VALUES IN (-2),
7570
PARTITION part_1 VALUES IN (-1),
7571
PARTITION part_N VALUES IN (NULL),
7572
PARTITION part0 VALUES IN (0),
7573
PARTITION part1 VALUES IN (1),
7574
PARTITION part2 VALUES IN (2),
7575
PARTITION part3 VALUES IN (3));
7576
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7577
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7578
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7579
ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
7580
ERROR HY000: Error in list of partitions to ANALYZE
7587
f_charbig VARCHAR(1000)
7590
PARTITION BY RANGE(f_int1)
7591
(PARTITION parta VALUES LESS THAN (0),
7592
PARTITION part_1 VALUES LESS THAN (5),
7593
PARTITION part_2 VALUES LESS THAN (10),
7594
PARTITION part_3 VALUES LESS THAN (10 + 5),
7595
PARTITION part_4 VALUES LESS THAN (20),
7596
PARTITION part_5 VALUES LESS THAN (2147483646));
7597
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7598
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7599
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7600
ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
7601
ERROR HY000: Error in list of partitions to ANALYZE
7608
f_charbig VARCHAR(1000)
7611
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
7612
(PARTITION part_1 VALUES LESS THAN (0),
7613
PARTITION part_2 VALUES LESS THAN (5),
7614
PARTITION part_3 VALUES LESS THAN (10),
7615
PARTITION part_4 VALUES LESS THAN (2147483646));
7616
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7617
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7618
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7619
ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
7620
ERROR HY000: Error in list of partitions to ANALYZE
7627
f_charbig VARCHAR(1000)
7630
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
7631
(PARTITION part_1 VALUES LESS THAN (0)
7632
(SUBPARTITION subpart11, SUBPARTITION subpart12),
7633
PARTITION part_2 VALUES LESS THAN (5)
7634
(SUBPARTITION subpart21, SUBPARTITION subpart22),
7635
PARTITION part_3 VALUES LESS THAN (10)
7636
(SUBPARTITION subpart31, SUBPARTITION subpart32),
7637
PARTITION part_4 VALUES LESS THAN (2147483646)
7638
(SUBPARTITION subpart41, SUBPARTITION subpart42));
7639
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7640
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7641
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7642
ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
7643
ERROR HY000: Error in list of partitions to ANALYZE
7650
f_charbig VARCHAR(1000)
7653
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
7654
(PARTITION part_1 VALUES IN (0)
7655
(SUBPARTITION sp11, SUBPARTITION sp12),
7656
PARTITION part_2 VALUES IN (1)
7657
(SUBPARTITION sp21, SUBPARTITION sp22),
7658
PARTITION part_3 VALUES IN (2)
7659
(SUBPARTITION sp31, SUBPARTITION sp32),
7660
PARTITION part_4 VALUES IN (NULL)
7661
(SUBPARTITION sp41, SUBPARTITION sp42));
7662
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7663
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7664
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7665
ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
7666
ERROR HY000: Error in list of partitions to ANALYZE
7673
f_charbig VARCHAR(1000)
7676
PARTITION BY LIST(ABS(MOD(f_int1,2)))
7677
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
7678
(PARTITION part_1 VALUES IN (0),
7679
PARTITION part_2 VALUES IN (1),
7680
PARTITION part_3 VALUES IN (NULL));
7681
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7682
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7683
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7684
ALTER TABLE t1 ANALYZE PARTITION part_1,part_1,part_1;
7685
ERROR HY000: Error in list of partitions to ANALYZE
7687
#------------------------------------------------------------------------
7688
# 2 ALTER ... CHECK PARTITION
7689
#------------------------------------------------------------------------
7690
# 2.1 ALTER ... CHECK PARTITION part_1;
7691
DROP TABLE IF EXISTS t1;
7697
f_charbig VARCHAR(1000)
7700
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
7701
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7702
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7703
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7704
ALTER TABLE t1 CHECK PARTITION part_1;
7705
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7706
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7707
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7708
# Start usability test (inc/partition_check.inc)
7710
SHOW CREATE TABLE t1;
7712
t1 CREATE TABLE `t1` (
7713
`f_int1` int(11) DEFAULT NULL,
7714
`f_int2` int(11) DEFAULT NULL,
7715
`f_char1` char(20) DEFAULT NULL,
7716
`f_char2` char(20) DEFAULT NULL,
7717
`f_charbig` varchar(1000) DEFAULT NULL
7718
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */
7720
# check prerequisites-1 success: 1
7721
# check COUNT(*) success: 1
7722
# check MIN/MAX(f_int1) success: 1
7723
# check MIN/MAX(f_int2) success: 1
7724
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7725
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7726
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7727
WHERE f_int1 IN (2,3);
7728
# check prerequisites-3 success: 1
7729
DELETE FROM t1 WHERE f_charbig = 'delete me';
7730
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
7731
# check read via f_int1 success: 1
7732
# check read via f_int2 success: 1
7734
# check multiple-1 success: 1
7735
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7737
# check multiple-2 success: 1
7738
INSERT INTO t1 SELECT * FROM t0_template
7739
WHERE MOD(f_int1,3) = 0;
7741
# check multiple-3 success: 1
7742
UPDATE t1 SET f_int1 = f_int1 + @max_row
7743
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7744
AND @max_row_div2 + @max_row_div4;
7746
# check multiple-4 success: 1
7748
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7749
AND @max_row_div2 + @max_row_div4 + @max_row;
7751
# check multiple-5 success: 1
7752
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7754
SET f_int1 = @cur_value , f_int2 = @cur_value,
7755
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7756
f_charbig = '#SINGLE#';
7758
# check single-1 success: 1
7759
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7761
SET f_int1 = @cur_value , f_int2 = @cur_value,
7762
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7763
f_charbig = '#SINGLE#';
7765
# check single-2 success: 1
7766
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7767
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7768
UPDATE t1 SET f_int1 = @cur_value2
7769
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7771
# check single-3 success: 1
7772
SET @cur_value1= -1;
7773
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7774
UPDATE t1 SET f_int1 = @cur_value1
7775
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7777
# check single-4 success: 1
7778
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7779
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7781
# check single-5 success: 1
7782
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7784
# check single-6 success: 1
7785
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7787
# check single-7 success: 1
7788
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7789
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7790
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7791
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7792
f_charbig = '#NULL#';
7794
SET f_int1 = NULL , f_int2 = -@max_row,
7795
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7796
f_charbig = '#NULL#';
7797
# check null success: 1
7799
# check null-1 success: 1
7800
UPDATE t1 SET f_int1 = -@max_row
7801
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7802
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7804
# check null-2 success: 1
7805
UPDATE t1 SET f_int1 = NULL
7806
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7807
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7809
# check null-3 success: 1
7811
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7812
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7814
# check null-4 success: 1
7816
WHERE f_int1 = 0 AND f_int2 = 0
7817
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7818
AND f_charbig = '#NULL#';
7820
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7821
SELECT f_int1, f_int1, '', '', 'was inserted'
7822
FROM t0_template source_tab
7823
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7825
# check transactions-1 success: 1
7828
# check transactions-2 success: 1
7831
# check transactions-3 success: 1
7832
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7836
# check transactions-4 success: 1
7837
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7838
SELECT f_int1, f_int1, '', '', 'was inserted'
7839
FROM t0_template source_tab
7840
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7842
# check transactions-5 success: 1
7845
# check transactions-6 success: 1
7846
# INFO: Storage engine used for t1 seems to be transactional.
7849
# check transactions-7 success: 1
7850
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7852
SET @@session.sql_mode = 'traditional';
7853
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7854
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7855
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7856
'', '', 'was inserted' FROM t0_template
7857
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7858
ERROR 22012: Division by 0
7861
# check transactions-8 success: 1
7862
# INFO: Storage engine used for t1 seems to be able to revert
7863
# changes made by the failing statement.
7864
SET @@session.sql_mode = '';
7866
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7868
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7870
# check special-1 success: 1
7871
UPDATE t1 SET f_charbig = '';
7873
# check special-2 success: 1
7874
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7875
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7876
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7877
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7878
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7879
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7880
'just inserted' FROM t0_template
7881
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7882
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7884
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7885
f_charbig = 'updated by trigger'
7886
WHERE f_int1 = new.f_int1;
7888
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7889
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7890
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7892
# check trigger-1 success: 1
7894
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7895
f_int2 = CAST(f_char1 AS SIGNED INT),
7896
f_charbig = 'just inserted'
7897
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7899
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7900
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7901
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7902
'just inserted' FROM t0_template
7903
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7904
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7906
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7907
f_charbig = 'updated by trigger'
7908
WHERE f_int1 = new.f_int1;
7910
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7911
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7912
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7914
# check trigger-2 success: 1
7916
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7917
f_int2 = CAST(f_char1 AS SIGNED INT),
7918
f_charbig = 'just inserted'
7919
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7921
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7922
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7923
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7924
'just inserted' FROM t0_template
7925
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7926
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7928
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7929
f_charbig = 'updated by trigger'
7930
WHERE f_int1 = new.f_int1;
7932
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7933
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7935
# check trigger-3 success: 1
7937
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7938
f_int2 = CAST(f_char1 AS SIGNED INT),
7939
f_charbig = 'just inserted'
7940
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7942
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7943
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7944
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7945
'just inserted' FROM t0_template
7946
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7947
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7949
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7950
f_charbig = 'updated by trigger'
7951
WHERE f_int1 = - old.f_int1;
7953
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7954
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7956
# check trigger-4 success: 1
7958
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7959
f_int2 = CAST(f_char1 AS SIGNED INT),
7960
f_charbig = 'just inserted'
7961
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7963
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7964
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7965
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7966
'just inserted' FROM t0_template
7967
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7968
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7970
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7971
f_charbig = 'updated by trigger'
7972
WHERE f_int1 = new.f_int1;
7974
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7975
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7977
# check trigger-5 success: 1
7979
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7980
f_int2 = CAST(f_char1 AS SIGNED INT),
7981
f_charbig = 'just inserted'
7982
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7984
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7985
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7986
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7987
'just inserted' FROM t0_template
7988
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7989
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7991
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7992
f_charbig = 'updated by trigger'
7993
WHERE f_int1 = - old.f_int1;
7995
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7996
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7998
# check trigger-6 success: 1
8000
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8001
f_int2 = CAST(f_char1 AS SIGNED INT),
8002
f_charbig = 'just inserted'
8003
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8005
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8006
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8007
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8008
'just inserted' FROM t0_template
8009
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8010
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8012
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8013
f_charbig = 'updated by trigger'
8014
WHERE f_int1 = - old.f_int1;
8017
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8019
# check trigger-7 success: 1
8021
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8022
f_int2 = CAST(f_char1 AS SIGNED INT),
8023
f_charbig = 'just inserted'
8024
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8026
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8027
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8028
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8029
'just inserted' FROM t0_template
8030
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8031
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8033
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8034
f_charbig = 'updated by trigger'
8035
WHERE f_int1 = - old.f_int1;
8038
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8040
# check trigger-8 success: 1
8042
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8043
f_int2 = CAST(f_char1 AS SIGNED INT),
8044
f_charbig = 'just inserted'
8045
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8047
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8049
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8050
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8052
SET new.f_int1 = old.f_int1 + @max_row,
8053
new.f_int2 = old.f_int2 - @max_row,
8054
new.f_charbig = '####updated per update trigger####';
8057
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8058
f_charbig = '####updated per update statement itself####';
8060
# check trigger-9 success: 1
8062
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8063
f_int2 = CAST(f_char1 AS SIGNED INT),
8064
f_charbig = CONCAT('===',f_char1,'===');
8065
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8067
SET new.f_int1 = new.f_int1 + @max_row,
8068
new.f_int2 = new.f_int2 - @max_row,
8069
new.f_charbig = '####updated per update trigger####';
8072
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8073
f_charbig = '####updated per update statement itself####';
8075
# check trigger-10 success: 1
8077
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8078
f_int2 = CAST(f_char1 AS SIGNED INT),
8079
f_charbig = CONCAT('===',f_char1,'===');
8080
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8082
SET new.f_int1 = @my_max1 + @counter,
8083
new.f_int2 = @my_min2 - @counter,
8084
new.f_charbig = '####updated per insert trigger####';
8085
SET @counter = @counter + 1;
8088
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8089
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8090
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8091
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8092
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8096
# check trigger-11 success: 1
8098
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8099
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8100
AND f_charbig = '####updated per insert trigger####';
8101
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8103
SET new.f_int1 = @my_max1 + @counter,
8104
new.f_int2 = @my_min2 - @counter,
8105
new.f_charbig = '####updated per insert trigger####';
8106
SET @counter = @counter + 1;
8109
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8110
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8111
SELECT CAST(f_int1 AS CHAR),
8112
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8113
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8117
# check trigger-12 success: 1
8119
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8120
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8121
AND f_charbig = '####updated per insert trigger####';
8123
Table Op Msg_type Msg_text
8124
test.t1 analyze status OK
8125
CHECK TABLE t1 EXTENDED;
8126
Table Op Msg_type Msg_text
8127
test.t1 check status OK
8128
CHECKSUM TABLE t1 EXTENDED;
8130
test.t1 <some_value>
8132
Table Op Msg_type Msg_text
8133
test.t1 optimize status OK
8134
# check layout success: 1
8135
REPAIR TABLE t1 EXTENDED;
8136
Table Op Msg_type Msg_text
8137
test.t1 repair note The storage engine for the table doesn't support repair
8138
# check layout success: 1
8141
# check TRUNCATE success: 1
8142
# check layout success: 1
8143
# End usability test (inc/partition_check.inc)
8150
f_charbig VARCHAR(1000)
8153
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
8154
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8155
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8156
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8157
ALTER TABLE t1 CHECK PARTITION part_1;
8158
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8159
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8160
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8161
# Start usability test (inc/partition_check.inc)
8163
SHOW CREATE TABLE t1;
8165
t1 CREATE TABLE `t1` (
8166
`f_int1` int(11) DEFAULT NULL,
8167
`f_int2` int(11) DEFAULT NULL,
8168
`f_char1` char(20) DEFAULT NULL,
8169
`f_char2` char(20) DEFAULT NULL,
8170
`f_charbig` varchar(1000) DEFAULT NULL
8171
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */
8173
# check prerequisites-1 success: 1
8174
# check COUNT(*) success: 1
8175
# check MIN/MAX(f_int1) success: 1
8176
# check MIN/MAX(f_int2) success: 1
8177
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8178
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8179
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8180
WHERE f_int1 IN (2,3);
8181
# check prerequisites-3 success: 1
8182
DELETE FROM t1 WHERE f_charbig = 'delete me';
8183
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
8184
# check read via f_int1 success: 1
8185
# check read via f_int2 success: 1
8187
# check multiple-1 success: 1
8188
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8190
# check multiple-2 success: 1
8191
INSERT INTO t1 SELECT * FROM t0_template
8192
WHERE MOD(f_int1,3) = 0;
8194
# check multiple-3 success: 1
8195
UPDATE t1 SET f_int1 = f_int1 + @max_row
8196
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8197
AND @max_row_div2 + @max_row_div4;
8199
# check multiple-4 success: 1
8201
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8202
AND @max_row_div2 + @max_row_div4 + @max_row;
8204
# check multiple-5 success: 1
8205
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8207
SET f_int1 = @cur_value , f_int2 = @cur_value,
8208
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8209
f_charbig = '#SINGLE#';
8211
# check single-1 success: 1
8212
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8214
SET f_int1 = @cur_value , f_int2 = @cur_value,
8215
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8216
f_charbig = '#SINGLE#';
8218
# check single-2 success: 1
8219
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8220
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8221
UPDATE t1 SET f_int1 = @cur_value2
8222
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8224
# check single-3 success: 1
8225
SET @cur_value1= -1;
8226
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8227
UPDATE t1 SET f_int1 = @cur_value1
8228
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8230
# check single-4 success: 1
8231
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8232
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8234
# check single-5 success: 1
8235
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8237
# check single-6 success: 1
8238
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8240
# check single-7 success: 1
8241
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8242
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8243
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8244
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8245
f_charbig = '#NULL#';
8247
SET f_int1 = NULL , f_int2 = -@max_row,
8248
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8249
f_charbig = '#NULL#';
8250
# check null success: 1
8252
# check null-1 success: 1
8253
UPDATE t1 SET f_int1 = -@max_row
8254
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8255
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8257
# check null-2 success: 1
8258
UPDATE t1 SET f_int1 = NULL
8259
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8260
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8262
# check null-3 success: 1
8264
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8265
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8267
# check null-4 success: 1
8269
WHERE f_int1 = 0 AND f_int2 = 0
8270
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8271
AND f_charbig = '#NULL#';
8273
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8274
SELECT f_int1, f_int1, '', '', 'was inserted'
8275
FROM t0_template source_tab
8276
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8278
# check transactions-1 success: 1
8281
# check transactions-2 success: 1
8284
# check transactions-3 success: 1
8285
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8289
# check transactions-4 success: 1
8290
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8291
SELECT f_int1, f_int1, '', '', 'was inserted'
8292
FROM t0_template source_tab
8293
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8295
# check transactions-5 success: 1
8298
# check transactions-6 success: 1
8299
# INFO: Storage engine used for t1 seems to be transactional.
8302
# check transactions-7 success: 1
8303
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8305
SET @@session.sql_mode = 'traditional';
8306
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8307
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8308
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8309
'', '', 'was inserted' FROM t0_template
8310
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8311
ERROR 22012: Division by 0
8314
# check transactions-8 success: 1
8315
# INFO: Storage engine used for t1 seems to be able to revert
8316
# changes made by the failing statement.
8317
SET @@session.sql_mode = '';
8319
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8321
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8323
# check special-1 success: 1
8324
UPDATE t1 SET f_charbig = '';
8326
# check special-2 success: 1
8327
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8328
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8329
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8330
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8331
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8332
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8333
'just inserted' FROM t0_template
8334
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8335
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8337
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8338
f_charbig = 'updated by trigger'
8339
WHERE f_int1 = new.f_int1;
8341
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8342
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8343
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8345
# check trigger-1 success: 1
8347
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8348
f_int2 = CAST(f_char1 AS SIGNED INT),
8349
f_charbig = 'just inserted'
8350
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8352
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8353
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8354
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8355
'just inserted' FROM t0_template
8356
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8357
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8359
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8360
f_charbig = 'updated by trigger'
8361
WHERE f_int1 = new.f_int1;
8363
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8364
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8365
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8367
# check trigger-2 success: 1
8369
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8370
f_int2 = CAST(f_char1 AS SIGNED INT),
8371
f_charbig = 'just inserted'
8372
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8374
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8375
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8376
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8377
'just inserted' FROM t0_template
8378
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8379
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8381
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8382
f_charbig = 'updated by trigger'
8383
WHERE f_int1 = new.f_int1;
8385
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8386
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8388
# check trigger-3 success: 1
8390
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8391
f_int2 = CAST(f_char1 AS SIGNED INT),
8392
f_charbig = 'just inserted'
8393
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8395
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8396
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8397
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8398
'just inserted' FROM t0_template
8399
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8400
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8402
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8403
f_charbig = 'updated by trigger'
8404
WHERE f_int1 = - old.f_int1;
8406
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8407
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8409
# check trigger-4 success: 1
8411
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8412
f_int2 = CAST(f_char1 AS SIGNED INT),
8413
f_charbig = 'just inserted'
8414
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8416
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8417
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8418
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8419
'just inserted' FROM t0_template
8420
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8421
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8423
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8424
f_charbig = 'updated by trigger'
8425
WHERE f_int1 = new.f_int1;
8427
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8428
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8430
# check trigger-5 success: 1
8432
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8433
f_int2 = CAST(f_char1 AS SIGNED INT),
8434
f_charbig = 'just inserted'
8435
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8437
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8438
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8439
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8440
'just inserted' FROM t0_template
8441
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8442
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8444
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8445
f_charbig = 'updated by trigger'
8446
WHERE f_int1 = - old.f_int1;
8448
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8449
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8451
# check trigger-6 success: 1
8453
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8454
f_int2 = CAST(f_char1 AS SIGNED INT),
8455
f_charbig = 'just inserted'
8456
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8458
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8459
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8460
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8461
'just inserted' FROM t0_template
8462
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8463
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8465
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8466
f_charbig = 'updated by trigger'
8467
WHERE f_int1 = - old.f_int1;
8470
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8472
# check trigger-7 success: 1
8474
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8475
f_int2 = CAST(f_char1 AS SIGNED INT),
8476
f_charbig = 'just inserted'
8477
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8479
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8480
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8481
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8482
'just inserted' FROM t0_template
8483
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8484
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8486
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8487
f_charbig = 'updated by trigger'
8488
WHERE f_int1 = - old.f_int1;
8491
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8493
# check trigger-8 success: 1
8495
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8496
f_int2 = CAST(f_char1 AS SIGNED INT),
8497
f_charbig = 'just inserted'
8498
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8500
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8502
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8503
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8505
SET new.f_int1 = old.f_int1 + @max_row,
8506
new.f_int2 = old.f_int2 - @max_row,
8507
new.f_charbig = '####updated per update trigger####';
8510
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8511
f_charbig = '####updated per update statement itself####';
8513
# check trigger-9 success: 1
8515
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8516
f_int2 = CAST(f_char1 AS SIGNED INT),
8517
f_charbig = CONCAT('===',f_char1,'===');
8518
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8520
SET new.f_int1 = new.f_int1 + @max_row,
8521
new.f_int2 = new.f_int2 - @max_row,
8522
new.f_charbig = '####updated per update trigger####';
8525
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8526
f_charbig = '####updated per update statement itself####';
8528
# check trigger-10 success: 1
8530
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8531
f_int2 = CAST(f_char1 AS SIGNED INT),
8532
f_charbig = CONCAT('===',f_char1,'===');
8533
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8535
SET new.f_int1 = @my_max1 + @counter,
8536
new.f_int2 = @my_min2 - @counter,
8537
new.f_charbig = '####updated per insert trigger####';
8538
SET @counter = @counter + 1;
8541
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8542
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8543
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8544
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8545
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8549
# check trigger-11 success: 1
8551
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8552
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8553
AND f_charbig = '####updated per insert trigger####';
8554
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8556
SET new.f_int1 = @my_max1 + @counter,
8557
new.f_int2 = @my_min2 - @counter,
8558
new.f_charbig = '####updated per insert trigger####';
8559
SET @counter = @counter + 1;
8562
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8563
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8564
SELECT CAST(f_int1 AS CHAR),
8565
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8566
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8570
# check trigger-12 success: 1
8572
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8573
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8574
AND f_charbig = '####updated per insert trigger####';
8576
Table Op Msg_type Msg_text
8577
test.t1 analyze status OK
8578
CHECK TABLE t1 EXTENDED;
8579
Table Op Msg_type Msg_text
8580
test.t1 check status OK
8581
CHECKSUM TABLE t1 EXTENDED;
8583
test.t1 <some_value>
8585
Table Op Msg_type Msg_text
8586
test.t1 optimize status OK
8587
# check layout success: 1
8588
REPAIR TABLE t1 EXTENDED;
8589
Table Op Msg_type Msg_text
8590
test.t1 repair note The storage engine for the table doesn't support repair
8591
# check layout success: 1
8594
# check TRUNCATE success: 1
8595
# check layout success: 1
8596
# End usability test (inc/partition_check.inc)
8603
f_charbig VARCHAR(1000)
8606
PARTITION BY LIST(MOD(f_int1,4))
8607
(PARTITION part_3 VALUES IN (-3),
8608
PARTITION part_2 VALUES IN (-2),
8609
PARTITION part_1 VALUES IN (-1),
8610
PARTITION part_N VALUES IN (NULL),
8611
PARTITION part0 VALUES IN (0),
8612
PARTITION part1 VALUES IN (1),
8613
PARTITION part2 VALUES IN (2),
8614
PARTITION part3 VALUES IN (3));
8615
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8616
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8617
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8618
ALTER TABLE t1 CHECK PARTITION part_1;
8619
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8620
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8621
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8622
# Start usability test (inc/partition_check.inc)
8624
SHOW CREATE TABLE t1;
8626
t1 CREATE TABLE `t1` (
8627
`f_int1` int(11) DEFAULT NULL,
8628
`f_int2` int(11) DEFAULT NULL,
8629
`f_char1` char(20) DEFAULT NULL,
8630
`f_char2` char(20) DEFAULT NULL,
8631
`f_charbig` varchar(1000) DEFAULT NULL
8632
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
8634
# check prerequisites-1 success: 1
8635
# check COUNT(*) success: 1
8636
# check MIN/MAX(f_int1) success: 1
8637
# check MIN/MAX(f_int2) success: 1
8638
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8639
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8640
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8641
WHERE f_int1 IN (2,3);
8642
# check prerequisites-3 success: 1
8643
DELETE FROM t1 WHERE f_charbig = 'delete me';
8644
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
8645
# check read via f_int1 success: 1
8646
# check read via f_int2 success: 1
8648
# check multiple-1 success: 1
8649
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8651
# check multiple-2 success: 1
8652
INSERT INTO t1 SELECT * FROM t0_template
8653
WHERE MOD(f_int1,3) = 0;
8655
# check multiple-3 success: 1
8656
UPDATE t1 SET f_int1 = f_int1 + @max_row
8657
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8658
AND @max_row_div2 + @max_row_div4;
8660
# check multiple-4 success: 1
8662
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8663
AND @max_row_div2 + @max_row_div4 + @max_row;
8665
# check multiple-5 success: 1
8666
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8668
SET f_int1 = @cur_value , f_int2 = @cur_value,
8669
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8670
f_charbig = '#SINGLE#';
8672
# check single-1 success: 1
8673
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8675
SET f_int1 = @cur_value , f_int2 = @cur_value,
8676
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8677
f_charbig = '#SINGLE#';
8679
# check single-2 success: 1
8680
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8681
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8682
UPDATE t1 SET f_int1 = @cur_value2
8683
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8685
# check single-3 success: 1
8686
SET @cur_value1= -1;
8687
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8688
UPDATE t1 SET f_int1 = @cur_value1
8689
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8691
# check single-4 success: 1
8692
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8693
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8695
# check single-5 success: 1
8696
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8698
# check single-6 success: 1
8699
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8701
# check single-7 success: 1
8702
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8703
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8704
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8705
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8706
f_charbig = '#NULL#';
8708
SET f_int1 = NULL , f_int2 = -@max_row,
8709
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8710
f_charbig = '#NULL#';
8711
# check null success: 1
8713
# check null-1 success: 1
8714
UPDATE t1 SET f_int1 = -@max_row
8715
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8716
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8718
# check null-2 success: 1
8719
UPDATE t1 SET f_int1 = NULL
8720
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8721
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8723
# check null-3 success: 1
8725
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8726
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8728
# check null-4 success: 1
8730
WHERE f_int1 = 0 AND f_int2 = 0
8731
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8732
AND f_charbig = '#NULL#';
8734
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8735
SELECT f_int1, f_int1, '', '', 'was inserted'
8736
FROM t0_template source_tab
8737
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8739
# check transactions-1 success: 1
8742
# check transactions-2 success: 1
8745
# check transactions-3 success: 1
8746
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8750
# check transactions-4 success: 1
8751
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8752
SELECT f_int1, f_int1, '', '', 'was inserted'
8753
FROM t0_template source_tab
8754
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8756
# check transactions-5 success: 1
8759
# check transactions-6 success: 1
8760
# INFO: Storage engine used for t1 seems to be transactional.
8763
# check transactions-7 success: 1
8764
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8766
SET @@session.sql_mode = 'traditional';
8767
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8768
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8769
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8770
'', '', 'was inserted' FROM t0_template
8771
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8772
ERROR 22012: Division by 0
8775
# check transactions-8 success: 1
8776
# INFO: Storage engine used for t1 seems to be able to revert
8777
# changes made by the failing statement.
8778
SET @@session.sql_mode = '';
8780
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8782
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8784
# check special-1 success: 1
8785
UPDATE t1 SET f_charbig = '';
8787
# check special-2 success: 1
8788
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8789
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8790
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8791
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8792
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8793
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8794
'just inserted' FROM t0_template
8795
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8796
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8798
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8799
f_charbig = 'updated by trigger'
8800
WHERE f_int1 = new.f_int1;
8802
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8803
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8804
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8806
# check trigger-1 success: 1
8808
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8809
f_int2 = CAST(f_char1 AS SIGNED INT),
8810
f_charbig = 'just inserted'
8811
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8813
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8814
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8815
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8816
'just inserted' FROM t0_template
8817
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8818
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8820
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8821
f_charbig = 'updated by trigger'
8822
WHERE f_int1 = new.f_int1;
8824
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8825
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8826
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8828
# check trigger-2 success: 1
8830
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8831
f_int2 = CAST(f_char1 AS SIGNED INT),
8832
f_charbig = 'just inserted'
8833
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8835
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8836
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8837
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8838
'just inserted' FROM t0_template
8839
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8840
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8842
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8843
f_charbig = 'updated by trigger'
8844
WHERE f_int1 = new.f_int1;
8846
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8847
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8849
# check trigger-3 success: 1
8851
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8852
f_int2 = CAST(f_char1 AS SIGNED INT),
8853
f_charbig = 'just inserted'
8854
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8856
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8857
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8858
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8859
'just inserted' FROM t0_template
8860
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8861
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8863
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8864
f_charbig = 'updated by trigger'
8865
WHERE f_int1 = - old.f_int1;
8867
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8868
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8870
# check trigger-4 success: 1
8872
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8873
f_int2 = CAST(f_char1 AS SIGNED INT),
8874
f_charbig = 'just inserted'
8875
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8877
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8878
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8879
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8880
'just inserted' FROM t0_template
8881
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8882
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8884
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8885
f_charbig = 'updated by trigger'
8886
WHERE f_int1 = new.f_int1;
8888
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8889
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8891
# check trigger-5 success: 1
8893
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8894
f_int2 = CAST(f_char1 AS SIGNED INT),
8895
f_charbig = 'just inserted'
8896
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8898
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8899
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8900
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8901
'just inserted' FROM t0_template
8902
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8903
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8905
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8906
f_charbig = 'updated by trigger'
8907
WHERE f_int1 = - old.f_int1;
8909
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8910
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8912
# check trigger-6 success: 1
8914
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8915
f_int2 = CAST(f_char1 AS SIGNED INT),
8916
f_charbig = 'just inserted'
8917
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8919
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8920
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8921
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8922
'just inserted' FROM t0_template
8923
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8924
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8926
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8927
f_charbig = 'updated by trigger'
8928
WHERE f_int1 = - old.f_int1;
8931
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8933
# check trigger-7 success: 1
8935
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8936
f_int2 = CAST(f_char1 AS SIGNED INT),
8937
f_charbig = 'just inserted'
8938
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8940
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8941
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8942
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8943
'just inserted' FROM t0_template
8944
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8945
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8947
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8948
f_charbig = 'updated by trigger'
8949
WHERE f_int1 = - old.f_int1;
8952
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8954
# check trigger-8 success: 1
8956
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8957
f_int2 = CAST(f_char1 AS SIGNED INT),
8958
f_charbig = 'just inserted'
8959
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8961
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8963
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8964
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8966
SET new.f_int1 = old.f_int1 + @max_row,
8967
new.f_int2 = old.f_int2 - @max_row,
8968
new.f_charbig = '####updated per update trigger####';
8971
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8972
f_charbig = '####updated per update statement itself####';
8974
# check trigger-9 success: 1
8976
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8977
f_int2 = CAST(f_char1 AS SIGNED INT),
8978
f_charbig = CONCAT('===',f_char1,'===');
8979
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8981
SET new.f_int1 = new.f_int1 + @max_row,
8982
new.f_int2 = new.f_int2 - @max_row,
8983
new.f_charbig = '####updated per update trigger####';
8986
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8987
f_charbig = '####updated per update statement itself####';
8989
# check trigger-10 success: 1
8991
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8992
f_int2 = CAST(f_char1 AS SIGNED INT),
8993
f_charbig = CONCAT('===',f_char1,'===');
8994
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8996
SET new.f_int1 = @my_max1 + @counter,
8997
new.f_int2 = @my_min2 - @counter,
8998
new.f_charbig = '####updated per insert trigger####';
8999
SET @counter = @counter + 1;
9002
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9003
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9004
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9005
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9006
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9010
# check trigger-11 success: 1
9012
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9013
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9014
AND f_charbig = '####updated per insert trigger####';
9015
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9017
SET new.f_int1 = @my_max1 + @counter,
9018
new.f_int2 = @my_min2 - @counter,
9019
new.f_charbig = '####updated per insert trigger####';
9020
SET @counter = @counter + 1;
9023
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9024
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9025
SELECT CAST(f_int1 AS CHAR),
9026
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9027
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9031
# check trigger-12 success: 1
9033
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9034
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9035
AND f_charbig = '####updated per insert trigger####';
9037
Table Op Msg_type Msg_text
9038
test.t1 analyze status OK
9039
CHECK TABLE t1 EXTENDED;
9040
Table Op Msg_type Msg_text
9041
test.t1 check status OK
9042
CHECKSUM TABLE t1 EXTENDED;
9044
test.t1 <some_value>
9046
Table Op Msg_type Msg_text
9047
test.t1 optimize status OK
9048
# check layout success: 1
9049
REPAIR TABLE t1 EXTENDED;
9050
Table Op Msg_type Msg_text
9051
test.t1 repair note The storage engine for the table doesn't support repair
9052
# check layout success: 1
9055
# check TRUNCATE success: 1
9056
# check layout success: 1
9057
# End usability test (inc/partition_check.inc)
9064
f_charbig VARCHAR(1000)
9067
PARTITION BY RANGE(f_int1)
9068
(PARTITION parta VALUES LESS THAN (0),
9069
PARTITION part_1 VALUES LESS THAN (5),
9070
PARTITION part_2 VALUES LESS THAN (10),
9071
PARTITION part_3 VALUES LESS THAN (10 + 5),
9072
PARTITION part_4 VALUES LESS THAN (20),
9073
PARTITION part_5 VALUES LESS THAN (2147483646));
9074
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9075
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9076
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9077
ALTER TABLE t1 CHECK PARTITION part_1;
9078
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9079
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9080
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9081
# Start usability test (inc/partition_check.inc)
9083
SHOW CREATE TABLE t1;
9085
t1 CREATE TABLE `t1` (
9086
`f_int1` int(11) DEFAULT NULL,
9087
`f_int2` int(11) DEFAULT NULL,
9088
`f_char1` char(20) DEFAULT NULL,
9089
`f_char2` char(20) DEFAULT NULL,
9090
`f_charbig` varchar(1000) DEFAULT NULL
9091
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
9093
# check prerequisites-1 success: 1
9094
# check COUNT(*) success: 1
9095
# check MIN/MAX(f_int1) success: 1
9096
# check MIN/MAX(f_int2) success: 1
9097
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9098
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9099
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9100
WHERE f_int1 IN (2,3);
9101
# check prerequisites-3 success: 1
9102
DELETE FROM t1 WHERE f_charbig = 'delete me';
9103
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
9104
# check read via f_int1 success: 1
9105
# check read via f_int2 success: 1
9107
# check multiple-1 success: 1
9108
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9110
# check multiple-2 success: 1
9111
INSERT INTO t1 SELECT * FROM t0_template
9112
WHERE MOD(f_int1,3) = 0;
9114
# check multiple-3 success: 1
9115
UPDATE t1 SET f_int1 = f_int1 + @max_row
9116
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9117
AND @max_row_div2 + @max_row_div4;
9119
# check multiple-4 success: 1
9121
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9122
AND @max_row_div2 + @max_row_div4 + @max_row;
9124
# check multiple-5 success: 1
9125
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9127
SET f_int1 = @cur_value , f_int2 = @cur_value,
9128
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9129
f_charbig = '#SINGLE#';
9131
# check single-1 success: 1
9132
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9134
SET f_int1 = @cur_value , f_int2 = @cur_value,
9135
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9136
f_charbig = '#SINGLE#';
9138
# check single-2 success: 1
9139
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9140
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9141
UPDATE t1 SET f_int1 = @cur_value2
9142
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9144
# check single-3 success: 1
9145
SET @cur_value1= -1;
9146
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9147
UPDATE t1 SET f_int1 = @cur_value1
9148
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9150
# check single-4 success: 1
9151
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9152
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9154
# check single-5 success: 1
9155
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9157
# check single-6 success: 1
9158
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9159
ERROR HY000: Table has no partition for value 2147483647
9160
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9161
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9162
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9163
f_charbig = '#NULL#';
9165
SET f_int1 = NULL , f_int2 = -@max_row,
9166
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9167
f_charbig = '#NULL#';
9168
# check null success: 1
9170
# check null-1 success: 1
9171
UPDATE t1 SET f_int1 = -@max_row
9172
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9173
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9175
# check null-2 success: 1
9176
UPDATE t1 SET f_int1 = NULL
9177
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9178
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9180
# check null-3 success: 1
9182
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9183
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9185
# check null-4 success: 1
9187
WHERE f_int1 = 0 AND f_int2 = 0
9188
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9189
AND f_charbig = '#NULL#';
9191
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9192
SELECT f_int1, f_int1, '', '', 'was inserted'
9193
FROM t0_template source_tab
9194
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9196
# check transactions-1 success: 1
9199
# check transactions-2 success: 1
9202
# check transactions-3 success: 1
9203
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9207
# check transactions-4 success: 1
9208
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9209
SELECT f_int1, f_int1, '', '', 'was inserted'
9210
FROM t0_template source_tab
9211
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9213
# check transactions-5 success: 1
9216
# check transactions-6 success: 1
9217
# INFO: Storage engine used for t1 seems to be transactional.
9220
# check transactions-7 success: 1
9221
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9223
SET @@session.sql_mode = 'traditional';
9224
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9225
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9226
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9227
'', '', 'was inserted' FROM t0_template
9228
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9229
ERROR 22012: Division by 0
9232
# check transactions-8 success: 1
9233
# INFO: Storage engine used for t1 seems to be able to revert
9234
# changes made by the failing statement.
9235
SET @@session.sql_mode = '';
9237
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9239
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9241
# check special-1 success: 1
9242
UPDATE t1 SET f_charbig = '';
9244
# check special-2 success: 1
9245
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9246
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9247
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9248
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9249
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9250
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9251
'just inserted' FROM t0_template
9252
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9253
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9255
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9256
f_charbig = 'updated by trigger'
9257
WHERE f_int1 = new.f_int1;
9259
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9260
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9261
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9263
# check trigger-1 success: 1
9265
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9266
f_int2 = CAST(f_char1 AS SIGNED INT),
9267
f_charbig = 'just inserted'
9268
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9270
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9271
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9272
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9273
'just inserted' FROM t0_template
9274
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9275
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9277
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9278
f_charbig = 'updated by trigger'
9279
WHERE f_int1 = new.f_int1;
9281
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9282
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9283
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9285
# check trigger-2 success: 1
9287
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9288
f_int2 = CAST(f_char1 AS SIGNED INT),
9289
f_charbig = 'just inserted'
9290
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9292
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9293
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9294
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9295
'just inserted' FROM t0_template
9296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9297
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9299
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9300
f_charbig = 'updated by trigger'
9301
WHERE f_int1 = new.f_int1;
9303
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9304
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9306
# check trigger-3 success: 1
9308
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9309
f_int2 = CAST(f_char1 AS SIGNED INT),
9310
f_charbig = 'just inserted'
9311
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9313
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9314
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9315
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9316
'just inserted' FROM t0_template
9317
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9318
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9320
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9321
f_charbig = 'updated by trigger'
9322
WHERE f_int1 = - old.f_int1;
9324
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9325
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9327
# check trigger-4 success: 1
9329
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9330
f_int2 = CAST(f_char1 AS SIGNED INT),
9331
f_charbig = 'just inserted'
9332
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9334
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9335
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9336
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9337
'just inserted' FROM t0_template
9338
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9339
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9341
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9342
f_charbig = 'updated by trigger'
9343
WHERE f_int1 = new.f_int1;
9345
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9346
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9348
# check trigger-5 success: 1
9350
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9351
f_int2 = CAST(f_char1 AS SIGNED INT),
9352
f_charbig = 'just inserted'
9353
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9355
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9356
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9357
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9358
'just inserted' FROM t0_template
9359
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9360
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9362
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9363
f_charbig = 'updated by trigger'
9364
WHERE f_int1 = - old.f_int1;
9366
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9367
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9369
# check trigger-6 success: 1
9371
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9372
f_int2 = CAST(f_char1 AS SIGNED INT),
9373
f_charbig = 'just inserted'
9374
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9376
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9377
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9378
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9379
'just inserted' FROM t0_template
9380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9381
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9383
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9384
f_charbig = 'updated by trigger'
9385
WHERE f_int1 = - old.f_int1;
9388
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9390
# check trigger-7 success: 1
9392
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9393
f_int2 = CAST(f_char1 AS SIGNED INT),
9394
f_charbig = 'just inserted'
9395
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9397
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9398
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9399
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9400
'just inserted' FROM t0_template
9401
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9402
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9404
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9405
f_charbig = 'updated by trigger'
9406
WHERE f_int1 = - old.f_int1;
9409
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9411
# check trigger-8 success: 1
9413
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9414
f_int2 = CAST(f_char1 AS SIGNED INT),
9415
f_charbig = 'just inserted'
9416
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9418
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9420
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9421
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9423
SET new.f_int1 = old.f_int1 + @max_row,
9424
new.f_int2 = old.f_int2 - @max_row,
9425
new.f_charbig = '####updated per update trigger####';
9428
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9429
f_charbig = '####updated per update statement itself####';
9431
# check trigger-9 success: 1
9433
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9434
f_int2 = CAST(f_char1 AS SIGNED INT),
9435
f_charbig = CONCAT('===',f_char1,'===');
9436
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9438
SET new.f_int1 = new.f_int1 + @max_row,
9439
new.f_int2 = new.f_int2 - @max_row,
9440
new.f_charbig = '####updated per update trigger####';
9443
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9444
f_charbig = '####updated per update statement itself####';
9446
# check trigger-10 success: 1
9448
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9449
f_int2 = CAST(f_char1 AS SIGNED INT),
9450
f_charbig = CONCAT('===',f_char1,'===');
9451
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9453
SET new.f_int1 = @my_max1 + @counter,
9454
new.f_int2 = @my_min2 - @counter,
9455
new.f_charbig = '####updated per insert trigger####';
9456
SET @counter = @counter + 1;
9459
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9460
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9461
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9462
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9463
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9467
# check trigger-11 success: 1
9469
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9470
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9471
AND f_charbig = '####updated per insert trigger####';
9472
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9474
SET new.f_int1 = @my_max1 + @counter,
9475
new.f_int2 = @my_min2 - @counter,
9476
new.f_charbig = '####updated per insert trigger####';
9477
SET @counter = @counter + 1;
9480
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9481
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9482
SELECT CAST(f_int1 AS CHAR),
9483
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9484
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9488
# check trigger-12 success: 1
9490
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9491
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9492
AND f_charbig = '####updated per insert trigger####';
9494
Table Op Msg_type Msg_text
9495
test.t1 analyze status OK
9496
CHECK TABLE t1 EXTENDED;
9497
Table Op Msg_type Msg_text
9498
test.t1 check status OK
9499
CHECKSUM TABLE t1 EXTENDED;
9501
test.t1 <some_value>
9503
Table Op Msg_type Msg_text
9504
test.t1 optimize status OK
9505
# check layout success: 1
9506
REPAIR TABLE t1 EXTENDED;
9507
Table Op Msg_type Msg_text
9508
test.t1 repair note The storage engine for the table doesn't support repair
9509
# check layout success: 1
9512
# check TRUNCATE success: 1
9513
# check layout success: 1
9514
# End usability test (inc/partition_check.inc)
9521
f_charbig VARCHAR(1000)
9524
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
9525
(PARTITION part_1 VALUES LESS THAN (0),
9526
PARTITION part_2 VALUES LESS THAN (5),
9527
PARTITION part_3 VALUES LESS THAN (10),
9528
PARTITION part_4 VALUES LESS THAN (2147483646));
9529
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9530
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9531
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9532
ALTER TABLE t1 CHECK PARTITION part_1;
9533
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9534
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9535
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9536
# Start usability test (inc/partition_check.inc)
9538
SHOW CREATE TABLE t1;
9540
t1 CREATE TABLE `t1` (
9541
`f_int1` int(11) DEFAULT NULL,
9542
`f_int2` int(11) DEFAULT NULL,
9543
`f_char1` char(20) DEFAULT NULL,
9544
`f_char2` char(20) DEFAULT NULL,
9545
`f_charbig` varchar(1000) DEFAULT NULL
9546
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
9548
# check prerequisites-1 success: 1
9549
# check COUNT(*) success: 1
9550
# check MIN/MAX(f_int1) success: 1
9551
# check MIN/MAX(f_int2) success: 1
9552
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9553
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9554
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9555
WHERE f_int1 IN (2,3);
9556
# check prerequisites-3 success: 1
9557
DELETE FROM t1 WHERE f_charbig = 'delete me';
9558
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
9559
# check read via f_int1 success: 1
9560
# check read via f_int2 success: 1
9562
# check multiple-1 success: 1
9563
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9565
# check multiple-2 success: 1
9566
INSERT INTO t1 SELECT * FROM t0_template
9567
WHERE MOD(f_int1,3) = 0;
9569
# check multiple-3 success: 1
9570
UPDATE t1 SET f_int1 = f_int1 + @max_row
9571
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9572
AND @max_row_div2 + @max_row_div4;
9574
# check multiple-4 success: 1
9576
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9577
AND @max_row_div2 + @max_row_div4 + @max_row;
9579
# check multiple-5 success: 1
9580
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9582
SET f_int1 = @cur_value , f_int2 = @cur_value,
9583
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9584
f_charbig = '#SINGLE#';
9586
# check single-1 success: 1
9587
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9589
SET f_int1 = @cur_value , f_int2 = @cur_value,
9590
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9591
f_charbig = '#SINGLE#';
9593
# check single-2 success: 1
9594
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9595
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9596
UPDATE t1 SET f_int1 = @cur_value2
9597
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9599
# check single-3 success: 1
9600
SET @cur_value1= -1;
9601
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9602
UPDATE t1 SET f_int1 = @cur_value1
9603
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9605
# check single-4 success: 1
9606
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9607
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9609
# check single-5 success: 1
9610
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9612
# check single-6 success: 1
9613
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9615
# check single-7 success: 1
9616
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9617
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9618
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9619
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9620
f_charbig = '#NULL#';
9622
SET f_int1 = NULL , f_int2 = -@max_row,
9623
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9624
f_charbig = '#NULL#';
9625
# check null success: 1
9627
# check null-1 success: 1
9628
UPDATE t1 SET f_int1 = -@max_row
9629
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9630
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9632
# check null-2 success: 1
9633
UPDATE t1 SET f_int1 = NULL
9634
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9635
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9637
# check null-3 success: 1
9639
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9640
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9642
# check null-4 success: 1
9644
WHERE f_int1 = 0 AND f_int2 = 0
9645
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9646
AND f_charbig = '#NULL#';
9648
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9649
SELECT f_int1, f_int1, '', '', 'was inserted'
9650
FROM t0_template source_tab
9651
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9653
# check transactions-1 success: 1
9656
# check transactions-2 success: 1
9659
# check transactions-3 success: 1
9660
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9664
# check transactions-4 success: 1
9665
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9666
SELECT f_int1, f_int1, '', '', 'was inserted'
9667
FROM t0_template source_tab
9668
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9670
# check transactions-5 success: 1
9673
# check transactions-6 success: 1
9674
# INFO: Storage engine used for t1 seems to be transactional.
9677
# check transactions-7 success: 1
9678
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9680
SET @@session.sql_mode = 'traditional';
9681
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9682
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9683
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9684
'', '', 'was inserted' FROM t0_template
9685
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9686
ERROR 22012: Division by 0
9689
# check transactions-8 success: 1
9690
# INFO: Storage engine used for t1 seems to be able to revert
9691
# changes made by the failing statement.
9692
SET @@session.sql_mode = '';
9694
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9696
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9698
# check special-1 success: 1
9699
UPDATE t1 SET f_charbig = '';
9701
# check special-2 success: 1
9702
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9703
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9704
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9705
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9706
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9707
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9708
'just inserted' FROM t0_template
9709
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9710
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9712
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9713
f_charbig = 'updated by trigger'
9714
WHERE f_int1 = new.f_int1;
9716
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9717
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9718
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9720
# check trigger-1 success: 1
9722
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9723
f_int2 = CAST(f_char1 AS SIGNED INT),
9724
f_charbig = 'just inserted'
9725
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9727
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9728
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9729
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9730
'just inserted' FROM t0_template
9731
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9732
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9734
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9735
f_charbig = 'updated by trigger'
9736
WHERE f_int1 = new.f_int1;
9738
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9739
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9740
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9742
# check trigger-2 success: 1
9744
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9745
f_int2 = CAST(f_char1 AS SIGNED INT),
9746
f_charbig = 'just inserted'
9747
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9749
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9750
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9751
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9752
'just inserted' FROM t0_template
9753
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9754
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9756
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9757
f_charbig = 'updated by trigger'
9758
WHERE f_int1 = new.f_int1;
9760
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9761
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9763
# check trigger-3 success: 1
9765
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9766
f_int2 = CAST(f_char1 AS SIGNED INT),
9767
f_charbig = 'just inserted'
9768
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9770
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9771
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9772
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9773
'just inserted' FROM t0_template
9774
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9775
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9777
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9778
f_charbig = 'updated by trigger'
9779
WHERE f_int1 = - old.f_int1;
9781
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9782
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9784
# check trigger-4 success: 1
9786
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9787
f_int2 = CAST(f_char1 AS SIGNED INT),
9788
f_charbig = 'just inserted'
9789
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9791
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9792
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9793
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9794
'just inserted' FROM t0_template
9795
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9796
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9798
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9799
f_charbig = 'updated by trigger'
9800
WHERE f_int1 = new.f_int1;
9802
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9803
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9805
# check trigger-5 success: 1
9807
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9808
f_int2 = CAST(f_char1 AS SIGNED INT),
9809
f_charbig = 'just inserted'
9810
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9812
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9813
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9814
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9815
'just inserted' FROM t0_template
9816
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9817
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9819
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9820
f_charbig = 'updated by trigger'
9821
WHERE f_int1 = - old.f_int1;
9823
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9824
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9826
# check trigger-6 success: 1
9828
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9829
f_int2 = CAST(f_char1 AS SIGNED INT),
9830
f_charbig = 'just inserted'
9831
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9833
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9834
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9835
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9836
'just inserted' FROM t0_template
9837
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9838
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9840
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9841
f_charbig = 'updated by trigger'
9842
WHERE f_int1 = - old.f_int1;
9845
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9847
# check trigger-7 success: 1
9849
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9850
f_int2 = CAST(f_char1 AS SIGNED INT),
9851
f_charbig = 'just inserted'
9852
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9854
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9855
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9856
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9857
'just inserted' FROM t0_template
9858
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9859
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9861
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9862
f_charbig = 'updated by trigger'
9863
WHERE f_int1 = - old.f_int1;
9866
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9868
# check trigger-8 success: 1
9870
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9871
f_int2 = CAST(f_char1 AS SIGNED INT),
9872
f_charbig = 'just inserted'
9873
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9875
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9877
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9878
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9880
SET new.f_int1 = old.f_int1 + @max_row,
9881
new.f_int2 = old.f_int2 - @max_row,
9882
new.f_charbig = '####updated per update trigger####';
9885
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9886
f_charbig = '####updated per update statement itself####';
9888
# check trigger-9 success: 1
9890
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9891
f_int2 = CAST(f_char1 AS SIGNED INT),
9892
f_charbig = CONCAT('===',f_char1,'===');
9893
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9895
SET new.f_int1 = new.f_int1 + @max_row,
9896
new.f_int2 = new.f_int2 - @max_row,
9897
new.f_charbig = '####updated per update trigger####';
9900
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9901
f_charbig = '####updated per update statement itself####';
9903
# check trigger-10 success: 1
9905
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9906
f_int2 = CAST(f_char1 AS SIGNED INT),
9907
f_charbig = CONCAT('===',f_char1,'===');
9908
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9910
SET new.f_int1 = @my_max1 + @counter,
9911
new.f_int2 = @my_min2 - @counter,
9912
new.f_charbig = '####updated per insert trigger####';
9913
SET @counter = @counter + 1;
9916
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9917
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9918
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9919
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9920
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9924
# check trigger-11 success: 1
9926
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9927
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9928
AND f_charbig = '####updated per insert trigger####';
9929
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9931
SET new.f_int1 = @my_max1 + @counter,
9932
new.f_int2 = @my_min2 - @counter,
9933
new.f_charbig = '####updated per insert trigger####';
9934
SET @counter = @counter + 1;
9937
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9938
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9939
SELECT CAST(f_int1 AS CHAR),
9940
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9941
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9945
# check trigger-12 success: 1
9947
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9948
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9949
AND f_charbig = '####updated per insert trigger####';
9951
Table Op Msg_type Msg_text
9952
test.t1 analyze status OK
9953
CHECK TABLE t1 EXTENDED;
9954
Table Op Msg_type Msg_text
9955
test.t1 check status OK
9956
CHECKSUM TABLE t1 EXTENDED;
9958
test.t1 <some_value>
9960
Table Op Msg_type Msg_text
9961
test.t1 optimize status OK
9962
# check layout success: 1
9963
REPAIR TABLE t1 EXTENDED;
9964
Table Op Msg_type Msg_text
9965
test.t1 repair note The storage engine for the table doesn't support repair
9966
# check layout success: 1
9969
# check TRUNCATE success: 1
9970
# check layout success: 1
9971
# End usability test (inc/partition_check.inc)
9978
f_charbig VARCHAR(1000)
9981
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
9982
(PARTITION part_1 VALUES LESS THAN (0)
9983
(SUBPARTITION subpart11, SUBPARTITION subpart12),
9984
PARTITION part_2 VALUES LESS THAN (5)
9985
(SUBPARTITION subpart21, SUBPARTITION subpart22),
9986
PARTITION part_3 VALUES LESS THAN (10)
9987
(SUBPARTITION subpart31, SUBPARTITION subpart32),
9988
PARTITION part_4 VALUES LESS THAN (2147483646)
9989
(SUBPARTITION subpart41, SUBPARTITION subpart42));
9990
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9991
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9992
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9993
ALTER TABLE t1 CHECK PARTITION part_1;
9994
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9995
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9996
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9997
# Start usability test (inc/partition_check.inc)
9999
SHOW CREATE TABLE t1;
10001
t1 CREATE TABLE `t1` (
10002
`f_int1` int(11) DEFAULT NULL,
10003
`f_int2` int(11) DEFAULT NULL,
10004
`f_char1` char(20) DEFAULT NULL,
10005
`f_char2` char(20) DEFAULT NULL,
10006
`f_charbig` varchar(1000) DEFAULT NULL
10007
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
10009
# check prerequisites-1 success: 1
10010
# check COUNT(*) success: 1
10011
# check MIN/MAX(f_int1) success: 1
10012
# check MIN/MAX(f_int2) success: 1
10013
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10014
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10015
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10016
WHERE f_int1 IN (2,3);
10017
# check prerequisites-3 success: 1
10018
DELETE FROM t1 WHERE f_charbig = 'delete me';
10019
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
10020
# check read via f_int1 success: 1
10021
# check read via f_int2 success: 1
10023
# check multiple-1 success: 1
10024
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10026
# check multiple-2 success: 1
10027
INSERT INTO t1 SELECT * FROM t0_template
10028
WHERE MOD(f_int1,3) = 0;
10030
# check multiple-3 success: 1
10031
UPDATE t1 SET f_int1 = f_int1 + @max_row
10032
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10033
AND @max_row_div2 + @max_row_div4;
10035
# check multiple-4 success: 1
10037
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10038
AND @max_row_div2 + @max_row_div4 + @max_row;
10040
# check multiple-5 success: 1
10041
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10043
SET f_int1 = @cur_value , f_int2 = @cur_value,
10044
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10045
f_charbig = '#SINGLE#';
10047
# check single-1 success: 1
10048
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10050
SET f_int1 = @cur_value , f_int2 = @cur_value,
10051
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10052
f_charbig = '#SINGLE#';
10054
# check single-2 success: 1
10055
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10056
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10057
UPDATE t1 SET f_int1 = @cur_value2
10058
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10060
# check single-3 success: 1
10061
SET @cur_value1= -1;
10062
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10063
UPDATE t1 SET f_int1 = @cur_value1
10064
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10066
# check single-4 success: 1
10067
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10068
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10070
# check single-5 success: 1
10071
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10073
# check single-6 success: 1
10074
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10075
ERROR HY000: Table has no partition for value 2147483647
10076
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10077
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10078
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10079
f_charbig = '#NULL#';
10081
SET f_int1 = NULL , f_int2 = -@max_row,
10082
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10083
f_charbig = '#NULL#';
10084
# check null success: 1
10086
# check null-1 success: 1
10087
UPDATE t1 SET f_int1 = -@max_row
10088
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10089
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10091
# check null-2 success: 1
10092
UPDATE t1 SET f_int1 = NULL
10093
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10094
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10096
# check null-3 success: 1
10098
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10099
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10101
# check null-4 success: 1
10103
WHERE f_int1 = 0 AND f_int2 = 0
10104
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10105
AND f_charbig = '#NULL#';
10107
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10108
SELECT f_int1, f_int1, '', '', 'was inserted'
10109
FROM t0_template source_tab
10110
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10112
# check transactions-1 success: 1
10115
# check transactions-2 success: 1
10118
# check transactions-3 success: 1
10119
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10123
# check transactions-4 success: 1
10124
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10125
SELECT f_int1, f_int1, '', '', 'was inserted'
10126
FROM t0_template source_tab
10127
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10129
# check transactions-5 success: 1
10132
# check transactions-6 success: 1
10133
# INFO: Storage engine used for t1 seems to be transactional.
10136
# check transactions-7 success: 1
10137
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10139
SET @@session.sql_mode = 'traditional';
10140
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10141
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10142
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10143
'', '', 'was inserted' FROM t0_template
10144
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10145
ERROR 22012: Division by 0
10148
# check transactions-8 success: 1
10149
# INFO: Storage engine used for t1 seems to be able to revert
10150
# changes made by the failing statement.
10151
SET @@session.sql_mode = '';
10153
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10155
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10157
# check special-1 success: 1
10158
UPDATE t1 SET f_charbig = '';
10160
# check special-2 success: 1
10161
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10162
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10163
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10164
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10165
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10166
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10167
'just inserted' FROM t0_template
10168
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10169
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10171
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10172
f_charbig = 'updated by trigger'
10173
WHERE f_int1 = new.f_int1;
10175
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10176
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10177
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10179
# check trigger-1 success: 1
10180
DROP TRIGGER trg_1;
10181
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10182
f_int2 = CAST(f_char1 AS SIGNED INT),
10183
f_charbig = 'just inserted'
10184
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10186
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10187
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10188
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10189
'just inserted' FROM t0_template
10190
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10191
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10193
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10194
f_charbig = 'updated by trigger'
10195
WHERE f_int1 = new.f_int1;
10197
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10198
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10199
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10201
# check trigger-2 success: 1
10202
DROP TRIGGER trg_1;
10203
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10204
f_int2 = CAST(f_char1 AS SIGNED INT),
10205
f_charbig = 'just inserted'
10206
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10208
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10209
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10210
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10211
'just inserted' FROM t0_template
10212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10213
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10215
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10216
f_charbig = 'updated by trigger'
10217
WHERE f_int1 = new.f_int1;
10219
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10220
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10222
# check trigger-3 success: 1
10223
DROP TRIGGER trg_1;
10224
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10225
f_int2 = CAST(f_char1 AS SIGNED INT),
10226
f_charbig = 'just inserted'
10227
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10229
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10230
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10231
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10232
'just inserted' FROM t0_template
10233
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10234
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10236
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10237
f_charbig = 'updated by trigger'
10238
WHERE f_int1 = - old.f_int1;
10240
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10241
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10243
# check trigger-4 success: 1
10244
DROP TRIGGER trg_1;
10245
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10246
f_int2 = CAST(f_char1 AS SIGNED INT),
10247
f_charbig = 'just inserted'
10248
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10250
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10251
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10252
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10253
'just inserted' FROM t0_template
10254
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10255
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10257
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10258
f_charbig = 'updated by trigger'
10259
WHERE f_int1 = new.f_int1;
10261
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10262
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10264
# check trigger-5 success: 1
10265
DROP TRIGGER trg_1;
10266
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10267
f_int2 = CAST(f_char1 AS SIGNED INT),
10268
f_charbig = 'just inserted'
10269
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10271
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10272
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10273
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10274
'just inserted' FROM t0_template
10275
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10276
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10278
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10279
f_charbig = 'updated by trigger'
10280
WHERE f_int1 = - old.f_int1;
10282
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10283
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10285
# check trigger-6 success: 1
10286
DROP TRIGGER trg_1;
10287
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10288
f_int2 = CAST(f_char1 AS SIGNED INT),
10289
f_charbig = 'just inserted'
10290
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10292
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10293
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10294
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10295
'just inserted' FROM t0_template
10296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10297
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10299
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10300
f_charbig = 'updated by trigger'
10301
WHERE f_int1 = - old.f_int1;
10304
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10306
# check trigger-7 success: 1
10307
DROP TRIGGER trg_1;
10308
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10309
f_int2 = CAST(f_char1 AS SIGNED INT),
10310
f_charbig = 'just inserted'
10311
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10313
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10314
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10315
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10316
'just inserted' FROM t0_template
10317
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10318
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10320
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10321
f_charbig = 'updated by trigger'
10322
WHERE f_int1 = - old.f_int1;
10325
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10327
# check trigger-8 success: 1
10328
DROP TRIGGER trg_1;
10329
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10330
f_int2 = CAST(f_char1 AS SIGNED INT),
10331
f_charbig = 'just inserted'
10332
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10334
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10336
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10337
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10339
SET new.f_int1 = old.f_int1 + @max_row,
10340
new.f_int2 = old.f_int2 - @max_row,
10341
new.f_charbig = '####updated per update trigger####';
10344
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10345
f_charbig = '####updated per update statement itself####';
10347
# check trigger-9 success: 1
10348
DROP TRIGGER trg_2;
10349
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10350
f_int2 = CAST(f_char1 AS SIGNED INT),
10351
f_charbig = CONCAT('===',f_char1,'===');
10352
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10354
SET new.f_int1 = new.f_int1 + @max_row,
10355
new.f_int2 = new.f_int2 - @max_row,
10356
new.f_charbig = '####updated per update trigger####';
10359
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10360
f_charbig = '####updated per update statement itself####';
10362
# check trigger-10 success: 1
10363
DROP TRIGGER trg_2;
10364
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10365
f_int2 = CAST(f_char1 AS SIGNED INT),
10366
f_charbig = CONCAT('===',f_char1,'===');
10367
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10369
SET new.f_int1 = @my_max1 + @counter,
10370
new.f_int2 = @my_min2 - @counter,
10371
new.f_charbig = '####updated per insert trigger####';
10372
SET @counter = @counter + 1;
10375
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10376
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10377
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10378
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10379
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10381
DROP TRIGGER trg_3;
10383
# check trigger-11 success: 1
10385
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10386
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10387
AND f_charbig = '####updated per insert trigger####';
10388
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10390
SET new.f_int1 = @my_max1 + @counter,
10391
new.f_int2 = @my_min2 - @counter,
10392
new.f_charbig = '####updated per insert trigger####';
10393
SET @counter = @counter + 1;
10396
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10397
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10398
SELECT CAST(f_int1 AS CHAR),
10399
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10400
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10402
DROP TRIGGER trg_3;
10404
# check trigger-12 success: 1
10406
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10407
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10408
AND f_charbig = '####updated per insert trigger####';
10410
Table Op Msg_type Msg_text
10411
test.t1 analyze status OK
10412
CHECK TABLE t1 EXTENDED;
10413
Table Op Msg_type Msg_text
10414
test.t1 check status OK
10415
CHECKSUM TABLE t1 EXTENDED;
10417
test.t1 <some_value>
10419
Table Op Msg_type Msg_text
10420
test.t1 optimize status OK
10421
# check layout success: 1
10422
REPAIR TABLE t1 EXTENDED;
10423
Table Op Msg_type Msg_text
10424
test.t1 repair note The storage engine for the table doesn't support repair
10425
# check layout success: 1
10428
# check TRUNCATE success: 1
10429
# check layout success: 1
10430
# End usability test (inc/partition_check.inc)
10437
f_charbig VARCHAR(1000)
10440
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
10441
(PARTITION part_1 VALUES IN (0)
10442
(SUBPARTITION sp11, SUBPARTITION sp12),
10443
PARTITION part_2 VALUES IN (1)
10444
(SUBPARTITION sp21, SUBPARTITION sp22),
10445
PARTITION part_3 VALUES IN (2)
10446
(SUBPARTITION sp31, SUBPARTITION sp32),
10447
PARTITION part_4 VALUES IN (NULL)
10448
(SUBPARTITION sp41, SUBPARTITION sp42));
10449
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10450
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10451
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10452
ALTER TABLE t1 CHECK PARTITION part_1;
10453
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10454
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10455
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10456
# Start usability test (inc/partition_check.inc)
10458
SHOW CREATE TABLE t1;
10460
t1 CREATE TABLE `t1` (
10461
`f_int1` int(11) DEFAULT NULL,
10462
`f_int2` int(11) DEFAULT NULL,
10463
`f_char1` char(20) DEFAULT NULL,
10464
`f_char2` char(20) DEFAULT NULL,
10465
`f_charbig` varchar(1000) DEFAULT NULL
10466
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
10468
# check prerequisites-1 success: 1
10469
# check COUNT(*) success: 1
10470
# check MIN/MAX(f_int1) success: 1
10471
# check MIN/MAX(f_int2) success: 1
10472
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10473
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10474
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10475
WHERE f_int1 IN (2,3);
10476
# check prerequisites-3 success: 1
10477
DELETE FROM t1 WHERE f_charbig = 'delete me';
10478
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
10479
# check read via f_int1 success: 1
10480
# check read via f_int2 success: 1
10482
# check multiple-1 success: 1
10483
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10485
# check multiple-2 success: 1
10486
INSERT INTO t1 SELECT * FROM t0_template
10487
WHERE MOD(f_int1,3) = 0;
10489
# check multiple-3 success: 1
10490
UPDATE t1 SET f_int1 = f_int1 + @max_row
10491
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10492
AND @max_row_div2 + @max_row_div4;
10494
# check multiple-4 success: 1
10496
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10497
AND @max_row_div2 + @max_row_div4 + @max_row;
10499
# check multiple-5 success: 1
10500
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10502
SET f_int1 = @cur_value , f_int2 = @cur_value,
10503
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10504
f_charbig = '#SINGLE#';
10506
# check single-1 success: 1
10507
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10509
SET f_int1 = @cur_value , f_int2 = @cur_value,
10510
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10511
f_charbig = '#SINGLE#';
10513
# check single-2 success: 1
10514
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10515
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10516
UPDATE t1 SET f_int1 = @cur_value2
10517
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10519
# check single-3 success: 1
10520
SET @cur_value1= -1;
10521
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10522
UPDATE t1 SET f_int1 = @cur_value1
10523
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10525
# check single-4 success: 1
10526
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10527
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10529
# check single-5 success: 1
10530
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10532
# check single-6 success: 1
10533
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10535
# check single-7 success: 1
10536
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10537
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10538
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10539
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10540
f_charbig = '#NULL#';
10542
SET f_int1 = NULL , f_int2 = -@max_row,
10543
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10544
f_charbig = '#NULL#';
10545
# check null success: 1
10547
# check null-1 success: 1
10548
UPDATE t1 SET f_int1 = -@max_row
10549
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10550
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10552
# check null-2 success: 1
10553
UPDATE t1 SET f_int1 = NULL
10554
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10555
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10557
# check null-3 success: 1
10559
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10560
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10562
# check null-4 success: 1
10564
WHERE f_int1 = 0 AND f_int2 = 0
10565
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10566
AND f_charbig = '#NULL#';
10568
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10569
SELECT f_int1, f_int1, '', '', 'was inserted'
10570
FROM t0_template source_tab
10571
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10573
# check transactions-1 success: 1
10576
# check transactions-2 success: 1
10579
# check transactions-3 success: 1
10580
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10584
# check transactions-4 success: 1
10585
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10586
SELECT f_int1, f_int1, '', '', 'was inserted'
10587
FROM t0_template source_tab
10588
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10590
# check transactions-5 success: 1
10593
# check transactions-6 success: 1
10594
# INFO: Storage engine used for t1 seems to be transactional.
10597
# check transactions-7 success: 1
10598
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10600
SET @@session.sql_mode = 'traditional';
10601
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10602
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10603
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10604
'', '', 'was inserted' FROM t0_template
10605
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10606
ERROR 22012: Division by 0
10609
# check transactions-8 success: 1
10610
# INFO: Storage engine used for t1 seems to be able to revert
10611
# changes made by the failing statement.
10612
SET @@session.sql_mode = '';
10614
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10616
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10618
# check special-1 success: 1
10619
UPDATE t1 SET f_charbig = '';
10621
# check special-2 success: 1
10622
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10623
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10624
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10625
WHERE 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 INSERT 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 = new.f_int1;
10636
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10637
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10638
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10640
# check trigger-1 success: 1
10641
DROP TRIGGER trg_1;
10642
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10643
f_int2 = CAST(f_char1 AS SIGNED INT),
10644
f_charbig = 'just inserted'
10645
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10647
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10648
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10649
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10650
'just inserted' FROM t0_template
10651
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10652
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10654
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10655
f_charbig = 'updated by trigger'
10656
WHERE f_int1 = new.f_int1;
10658
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10659
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10660
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10662
# check trigger-2 success: 1
10663
DROP TRIGGER trg_1;
10664
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10665
f_int2 = CAST(f_char1 AS SIGNED INT),
10666
f_charbig = 'just inserted'
10667
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10669
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10670
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10671
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10672
'just inserted' FROM t0_template
10673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10674
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10676
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10677
f_charbig = 'updated by trigger'
10678
WHERE f_int1 = new.f_int1;
10680
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10681
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10683
# check trigger-3 success: 1
10684
DROP TRIGGER trg_1;
10685
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10686
f_int2 = CAST(f_char1 AS SIGNED INT),
10687
f_charbig = 'just inserted'
10688
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10690
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10691
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10692
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10693
'just inserted' FROM t0_template
10694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10695
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10697
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10698
f_charbig = 'updated by trigger'
10699
WHERE f_int1 = - old.f_int1;
10701
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10702
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10704
# check trigger-4 success: 1
10705
DROP TRIGGER trg_1;
10706
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10707
f_int2 = CAST(f_char1 AS SIGNED INT),
10708
f_charbig = 'just inserted'
10709
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10711
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10712
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10713
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10714
'just inserted' FROM t0_template
10715
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10716
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10718
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10719
f_charbig = 'updated by trigger'
10720
WHERE f_int1 = new.f_int1;
10722
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10723
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10725
# check trigger-5 success: 1
10726
DROP TRIGGER trg_1;
10727
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10728
f_int2 = CAST(f_char1 AS SIGNED INT),
10729
f_charbig = 'just inserted'
10730
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10732
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10733
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10734
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10735
'just inserted' FROM t0_template
10736
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10737
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10739
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10740
f_charbig = 'updated by trigger'
10741
WHERE f_int1 = - old.f_int1;
10743
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10744
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10746
# check trigger-6 success: 1
10747
DROP TRIGGER trg_1;
10748
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10749
f_int2 = CAST(f_char1 AS SIGNED INT),
10750
f_charbig = 'just inserted'
10751
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10753
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10754
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10755
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10756
'just inserted' FROM t0_template
10757
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10758
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10760
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10761
f_charbig = 'updated by trigger'
10762
WHERE f_int1 = - old.f_int1;
10765
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10767
# check trigger-7 success: 1
10768
DROP TRIGGER trg_1;
10769
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10770
f_int2 = CAST(f_char1 AS SIGNED INT),
10771
f_charbig = 'just inserted'
10772
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10774
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10775
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10776
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10777
'just inserted' FROM t0_template
10778
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10779
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10781
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10782
f_charbig = 'updated by trigger'
10783
WHERE f_int1 = - old.f_int1;
10786
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10788
# check trigger-8 success: 1
10789
DROP TRIGGER trg_1;
10790
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10791
f_int2 = CAST(f_char1 AS SIGNED INT),
10792
f_charbig = 'just inserted'
10793
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10795
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10797
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10798
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10800
SET new.f_int1 = old.f_int1 + @max_row,
10801
new.f_int2 = old.f_int2 - @max_row,
10802
new.f_charbig = '####updated per update trigger####';
10805
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10806
f_charbig = '####updated per update statement itself####';
10808
# check trigger-9 success: 1
10809
DROP TRIGGER trg_2;
10810
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10811
f_int2 = CAST(f_char1 AS SIGNED INT),
10812
f_charbig = CONCAT('===',f_char1,'===');
10813
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10815
SET new.f_int1 = new.f_int1 + @max_row,
10816
new.f_int2 = new.f_int2 - @max_row,
10817
new.f_charbig = '####updated per update trigger####';
10820
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10821
f_charbig = '####updated per update statement itself####';
10823
# check trigger-10 success: 1
10824
DROP TRIGGER trg_2;
10825
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10826
f_int2 = CAST(f_char1 AS SIGNED INT),
10827
f_charbig = CONCAT('===',f_char1,'===');
10828
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10830
SET new.f_int1 = @my_max1 + @counter,
10831
new.f_int2 = @my_min2 - @counter,
10832
new.f_charbig = '####updated per insert trigger####';
10833
SET @counter = @counter + 1;
10836
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10837
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10838
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10839
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10840
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10842
DROP TRIGGER trg_3;
10844
# check trigger-11 success: 1
10846
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10847
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10848
AND f_charbig = '####updated per insert trigger####';
10849
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10851
SET new.f_int1 = @my_max1 + @counter,
10852
new.f_int2 = @my_min2 - @counter,
10853
new.f_charbig = '####updated per insert trigger####';
10854
SET @counter = @counter + 1;
10857
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10858
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10859
SELECT CAST(f_int1 AS CHAR),
10860
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10861
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10863
DROP TRIGGER trg_3;
10865
# check trigger-12 success: 1
10867
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10868
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10869
AND f_charbig = '####updated per insert trigger####';
10871
Table Op Msg_type Msg_text
10872
test.t1 analyze status OK
10873
CHECK TABLE t1 EXTENDED;
10874
Table Op Msg_type Msg_text
10875
test.t1 check status OK
10876
CHECKSUM TABLE t1 EXTENDED;
10878
test.t1 <some_value>
10880
Table Op Msg_type Msg_text
10881
test.t1 optimize status OK
10882
# check layout success: 1
10883
REPAIR TABLE t1 EXTENDED;
10884
Table Op Msg_type Msg_text
10885
test.t1 repair note The storage engine for the table doesn't support repair
10886
# check layout success: 1
10889
# check TRUNCATE success: 1
10890
# check layout success: 1
10891
# End usability test (inc/partition_check.inc)
10898
f_charbig VARCHAR(1000)
10901
PARTITION BY LIST(ABS(MOD(f_int1,2)))
10902
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
10903
(PARTITION part_1 VALUES IN (0),
10904
PARTITION part_2 VALUES IN (1),
10905
PARTITION part_3 VALUES IN (NULL));
10906
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10907
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10908
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10909
ALTER TABLE t1 CHECK PARTITION part_1;
10910
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10911
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10912
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10913
# Start usability test (inc/partition_check.inc)
10915
SHOW CREATE TABLE t1;
10917
t1 CREATE TABLE `t1` (
10918
`f_int1` int(11) DEFAULT NULL,
10919
`f_int2` int(11) DEFAULT NULL,
10920
`f_char1` char(20) DEFAULT NULL,
10921
`f_char2` char(20) DEFAULT NULL,
10922
`f_charbig` varchar(1000) DEFAULT NULL
10923
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */
10925
# check prerequisites-1 success: 1
10926
# check COUNT(*) success: 1
10927
# check MIN/MAX(f_int1) success: 1
10928
# check MIN/MAX(f_int2) success: 1
10929
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10930
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10931
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10932
WHERE f_int1 IN (2,3);
10933
# check prerequisites-3 success: 1
10934
DELETE FROM t1 WHERE f_charbig = 'delete me';
10935
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
10936
# check read via f_int1 success: 1
10937
# check read via f_int2 success: 1
10939
# check multiple-1 success: 1
10940
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10942
# check multiple-2 success: 1
10943
INSERT INTO t1 SELECT * FROM t0_template
10944
WHERE MOD(f_int1,3) = 0;
10946
# check multiple-3 success: 1
10947
UPDATE t1 SET f_int1 = f_int1 + @max_row
10948
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10949
AND @max_row_div2 + @max_row_div4;
10951
# check multiple-4 success: 1
10953
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10954
AND @max_row_div2 + @max_row_div4 + @max_row;
10956
# check multiple-5 success: 1
10957
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10959
SET f_int1 = @cur_value , f_int2 = @cur_value,
10960
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10961
f_charbig = '#SINGLE#';
10963
# check single-1 success: 1
10964
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10966
SET f_int1 = @cur_value , f_int2 = @cur_value,
10967
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10968
f_charbig = '#SINGLE#';
10970
# check single-2 success: 1
10971
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10972
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10973
UPDATE t1 SET f_int1 = @cur_value2
10974
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10976
# check single-3 success: 1
10977
SET @cur_value1= -1;
10978
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10979
UPDATE t1 SET f_int1 = @cur_value1
10980
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10982
# check single-4 success: 1
10983
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10984
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10986
# check single-5 success: 1
10987
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10989
# check single-6 success: 1
10990
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10992
# check single-7 success: 1
10993
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10994
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10995
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10996
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10997
f_charbig = '#NULL#';
10999
SET f_int1 = NULL , f_int2 = -@max_row,
11000
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11001
f_charbig = '#NULL#';
11002
# check null success: 1
11004
# check null-1 success: 1
11005
UPDATE t1 SET f_int1 = -@max_row
11006
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11007
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11009
# check null-2 success: 1
11010
UPDATE t1 SET f_int1 = NULL
11011
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11012
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11014
# check null-3 success: 1
11016
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11017
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11019
# check null-4 success: 1
11021
WHERE f_int1 = 0 AND f_int2 = 0
11022
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11023
AND f_charbig = '#NULL#';
11025
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11026
SELECT f_int1, f_int1, '', '', 'was inserted'
11027
FROM t0_template source_tab
11028
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11030
# check transactions-1 success: 1
11033
# check transactions-2 success: 1
11036
# check transactions-3 success: 1
11037
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11041
# check transactions-4 success: 1
11042
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11043
SELECT f_int1, f_int1, '', '', 'was inserted'
11044
FROM t0_template source_tab
11045
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11047
# check transactions-5 success: 1
11050
# check transactions-6 success: 1
11051
# INFO: Storage engine used for t1 seems to be transactional.
11054
# check transactions-7 success: 1
11055
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11057
SET @@session.sql_mode = 'traditional';
11058
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11059
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11060
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11061
'', '', 'was inserted' FROM t0_template
11062
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11063
ERROR 22012: Division by 0
11066
# check transactions-8 success: 1
11067
# INFO: Storage engine used for t1 seems to be able to revert
11068
# changes made by the failing statement.
11069
SET @@session.sql_mode = '';
11071
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11073
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11075
# check special-1 success: 1
11076
UPDATE t1 SET f_charbig = '';
11078
# check special-2 success: 1
11079
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11080
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11081
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11082
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11083
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11084
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11085
'just inserted' FROM t0_template
11086
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11087
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11089
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11090
f_charbig = 'updated by trigger'
11091
WHERE f_int1 = new.f_int1;
11093
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11094
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11095
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11097
# check trigger-1 success: 1
11098
DROP TRIGGER trg_1;
11099
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11100
f_int2 = CAST(f_char1 AS SIGNED INT),
11101
f_charbig = 'just inserted'
11102
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11104
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11105
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11106
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11107
'just inserted' FROM t0_template
11108
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11109
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11111
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11112
f_charbig = 'updated by trigger'
11113
WHERE f_int1 = new.f_int1;
11115
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11116
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11117
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11119
# check trigger-2 success: 1
11120
DROP TRIGGER trg_1;
11121
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11122
f_int2 = CAST(f_char1 AS SIGNED INT),
11123
f_charbig = 'just inserted'
11124
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11126
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11127
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11128
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11129
'just inserted' FROM t0_template
11130
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11131
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11133
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11134
f_charbig = 'updated by trigger'
11135
WHERE f_int1 = new.f_int1;
11137
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11138
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11140
# check trigger-3 success: 1
11141
DROP TRIGGER trg_1;
11142
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11143
f_int2 = CAST(f_char1 AS SIGNED INT),
11144
f_charbig = 'just inserted'
11145
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11147
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11148
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11149
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11150
'just inserted' FROM t0_template
11151
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11152
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11154
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11155
f_charbig = 'updated by trigger'
11156
WHERE f_int1 = - old.f_int1;
11158
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11159
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11161
# check trigger-4 success: 1
11162
DROP TRIGGER trg_1;
11163
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11164
f_int2 = CAST(f_char1 AS SIGNED INT),
11165
f_charbig = 'just inserted'
11166
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11168
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11169
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11170
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11171
'just inserted' FROM t0_template
11172
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11173
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11175
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11176
f_charbig = 'updated by trigger'
11177
WHERE f_int1 = new.f_int1;
11179
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11180
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11182
# check trigger-5 success: 1
11183
DROP TRIGGER trg_1;
11184
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11185
f_int2 = CAST(f_char1 AS SIGNED INT),
11186
f_charbig = 'just inserted'
11187
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11189
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11190
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11191
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11192
'just inserted' FROM t0_template
11193
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11194
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11196
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11197
f_charbig = 'updated by trigger'
11198
WHERE f_int1 = - old.f_int1;
11200
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11201
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11203
# check trigger-6 success: 1
11204
DROP TRIGGER trg_1;
11205
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11206
f_int2 = CAST(f_char1 AS SIGNED INT),
11207
f_charbig = 'just inserted'
11208
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11210
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11211
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11212
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11213
'just inserted' FROM t0_template
11214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11215
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11217
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11218
f_charbig = 'updated by trigger'
11219
WHERE f_int1 = - old.f_int1;
11222
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11224
# check trigger-7 success: 1
11225
DROP TRIGGER trg_1;
11226
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11227
f_int2 = CAST(f_char1 AS SIGNED INT),
11228
f_charbig = 'just inserted'
11229
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11231
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11232
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11233
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11234
'just inserted' FROM t0_template
11235
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11236
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11238
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11239
f_charbig = 'updated by trigger'
11240
WHERE f_int1 = - old.f_int1;
11243
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11245
# check trigger-8 success: 1
11246
DROP TRIGGER trg_1;
11247
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11248
f_int2 = CAST(f_char1 AS SIGNED INT),
11249
f_charbig = 'just inserted'
11250
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11252
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11254
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11255
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11257
SET new.f_int1 = old.f_int1 + @max_row,
11258
new.f_int2 = old.f_int2 - @max_row,
11259
new.f_charbig = '####updated per update trigger####';
11262
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11263
f_charbig = '####updated per update statement itself####';
11265
# check trigger-9 success: 1
11266
DROP TRIGGER trg_2;
11267
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11268
f_int2 = CAST(f_char1 AS SIGNED INT),
11269
f_charbig = CONCAT('===',f_char1,'===');
11270
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11272
SET new.f_int1 = new.f_int1 + @max_row,
11273
new.f_int2 = new.f_int2 - @max_row,
11274
new.f_charbig = '####updated per update trigger####';
11277
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11278
f_charbig = '####updated per update statement itself####';
11280
# check trigger-10 success: 1
11281
DROP TRIGGER trg_2;
11282
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11283
f_int2 = CAST(f_char1 AS SIGNED INT),
11284
f_charbig = CONCAT('===',f_char1,'===');
11285
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11287
SET new.f_int1 = @my_max1 + @counter,
11288
new.f_int2 = @my_min2 - @counter,
11289
new.f_charbig = '####updated per insert trigger####';
11290
SET @counter = @counter + 1;
11293
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11294
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11295
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11296
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11297
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11299
DROP TRIGGER trg_3;
11301
# check trigger-11 success: 1
11303
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11304
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11305
AND f_charbig = '####updated per insert trigger####';
11306
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11308
SET new.f_int1 = @my_max1 + @counter,
11309
new.f_int2 = @my_min2 - @counter,
11310
new.f_charbig = '####updated per insert trigger####';
11311
SET @counter = @counter + 1;
11314
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11315
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11316
SELECT CAST(f_int1 AS CHAR),
11317
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11320
DROP TRIGGER trg_3;
11322
# check trigger-12 success: 1
11324
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11325
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11326
AND f_charbig = '####updated per insert trigger####';
11328
Table Op Msg_type Msg_text
11329
test.t1 analyze status OK
11330
CHECK TABLE t1 EXTENDED;
11331
Table Op Msg_type Msg_text
11332
test.t1 check status OK
11333
CHECKSUM TABLE t1 EXTENDED;
11335
test.t1 <some_value>
11337
Table Op Msg_type Msg_text
11338
test.t1 optimize status OK
11339
# check layout success: 1
11340
REPAIR TABLE t1 EXTENDED;
11341
Table Op Msg_type Msg_text
11342
test.t1 repair note The storage engine for the table doesn't support repair
11343
# check layout success: 1
11346
# check TRUNCATE success: 1
11347
# check layout success: 1
11348
# End usability test (inc/partition_check.inc)
11350
# 2.2 ALTER ... CHECK PARTITION part_1,part_2;
11351
DROP TABLE IF EXISTS t1;
11357
f_charbig VARCHAR(1000)
11360
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
11361
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11362
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11363
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11364
ALTER TABLE t1 CHECK PARTITION part_1,part_2;
11365
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11366
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11367
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11368
# Start usability test (inc/partition_check.inc)
11370
SHOW CREATE TABLE t1;
11372
t1 CREATE TABLE `t1` (
11373
`f_int1` int(11) DEFAULT NULL,
11374
`f_int2` int(11) DEFAULT NULL,
11375
`f_char1` char(20) DEFAULT NULL,
11376
`f_char2` char(20) DEFAULT NULL,
11377
`f_charbig` varchar(1000) DEFAULT NULL
11378
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */
11380
# check prerequisites-1 success: 1
11381
# check COUNT(*) success: 1
11382
# check MIN/MAX(f_int1) success: 1
11383
# check MIN/MAX(f_int2) success: 1
11384
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11385
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11386
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11387
WHERE f_int1 IN (2,3);
11388
# check prerequisites-3 success: 1
11389
DELETE FROM t1 WHERE f_charbig = 'delete me';
11390
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
11391
# check read via f_int1 success: 1
11392
# check read via f_int2 success: 1
11394
# check multiple-1 success: 1
11395
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11397
# check multiple-2 success: 1
11398
INSERT INTO t1 SELECT * FROM t0_template
11399
WHERE MOD(f_int1,3) = 0;
11401
# check multiple-3 success: 1
11402
UPDATE t1 SET f_int1 = f_int1 + @max_row
11403
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11404
AND @max_row_div2 + @max_row_div4;
11406
# check multiple-4 success: 1
11408
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11409
AND @max_row_div2 + @max_row_div4 + @max_row;
11411
# check multiple-5 success: 1
11412
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11414
SET f_int1 = @cur_value , f_int2 = @cur_value,
11415
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11416
f_charbig = '#SINGLE#';
11418
# check single-1 success: 1
11419
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11421
SET f_int1 = @cur_value , f_int2 = @cur_value,
11422
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11423
f_charbig = '#SINGLE#';
11425
# check single-2 success: 1
11426
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11427
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11428
UPDATE t1 SET f_int1 = @cur_value2
11429
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11431
# check single-3 success: 1
11432
SET @cur_value1= -1;
11433
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11434
UPDATE t1 SET f_int1 = @cur_value1
11435
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11437
# check single-4 success: 1
11438
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11439
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11441
# check single-5 success: 1
11442
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11444
# check single-6 success: 1
11445
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11447
# check single-7 success: 1
11448
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11449
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11450
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11451
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11452
f_charbig = '#NULL#';
11454
SET f_int1 = NULL , f_int2 = -@max_row,
11455
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11456
f_charbig = '#NULL#';
11457
# check null success: 1
11459
# check null-1 success: 1
11460
UPDATE t1 SET f_int1 = -@max_row
11461
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11462
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11464
# check null-2 success: 1
11465
UPDATE t1 SET f_int1 = NULL
11466
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11467
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11469
# check null-3 success: 1
11471
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11472
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11474
# check null-4 success: 1
11476
WHERE f_int1 = 0 AND f_int2 = 0
11477
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11478
AND f_charbig = '#NULL#';
11480
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11481
SELECT f_int1, f_int1, '', '', 'was inserted'
11482
FROM t0_template source_tab
11483
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11485
# check transactions-1 success: 1
11488
# check transactions-2 success: 1
11491
# check transactions-3 success: 1
11492
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11496
# check transactions-4 success: 1
11497
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11498
SELECT f_int1, f_int1, '', '', 'was inserted'
11499
FROM t0_template source_tab
11500
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11502
# check transactions-5 success: 1
11505
# check transactions-6 success: 1
11506
# INFO: Storage engine used for t1 seems to be transactional.
11509
# check transactions-7 success: 1
11510
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11512
SET @@session.sql_mode = 'traditional';
11513
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11514
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11515
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11516
'', '', 'was inserted' FROM t0_template
11517
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11518
ERROR 22012: Division by 0
11521
# check transactions-8 success: 1
11522
# INFO: Storage engine used for t1 seems to be able to revert
11523
# changes made by the failing statement.
11524
SET @@session.sql_mode = '';
11526
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11528
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11530
# check special-1 success: 1
11531
UPDATE t1 SET f_charbig = '';
11533
# check special-2 success: 1
11534
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11535
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11536
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11537
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11538
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11539
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11540
'just inserted' FROM t0_template
11541
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11542
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11544
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11545
f_charbig = 'updated by trigger'
11546
WHERE f_int1 = new.f_int1;
11548
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11549
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11550
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11552
# check trigger-1 success: 1
11553
DROP TRIGGER trg_1;
11554
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11555
f_int2 = CAST(f_char1 AS SIGNED INT),
11556
f_charbig = 'just inserted'
11557
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11559
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11560
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11561
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11562
'just inserted' FROM t0_template
11563
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11564
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11566
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11567
f_charbig = 'updated by trigger'
11568
WHERE f_int1 = new.f_int1;
11570
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11571
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11572
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11574
# check trigger-2 success: 1
11575
DROP TRIGGER trg_1;
11576
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11577
f_int2 = CAST(f_char1 AS SIGNED INT),
11578
f_charbig = 'just inserted'
11579
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11581
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11582
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11583
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11584
'just inserted' FROM t0_template
11585
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11586
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11588
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11589
f_charbig = 'updated by trigger'
11590
WHERE f_int1 = new.f_int1;
11592
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11593
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11595
# check trigger-3 success: 1
11596
DROP TRIGGER trg_1;
11597
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11598
f_int2 = CAST(f_char1 AS SIGNED INT),
11599
f_charbig = 'just inserted'
11600
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11602
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11603
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11604
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11605
'just inserted' FROM t0_template
11606
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11607
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11609
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11610
f_charbig = 'updated by trigger'
11611
WHERE f_int1 = - old.f_int1;
11613
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11614
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11616
# check trigger-4 success: 1
11617
DROP TRIGGER trg_1;
11618
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11619
f_int2 = CAST(f_char1 AS SIGNED INT),
11620
f_charbig = 'just inserted'
11621
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11623
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11624
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11625
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11626
'just inserted' FROM t0_template
11627
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11628
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11630
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11631
f_charbig = 'updated by trigger'
11632
WHERE f_int1 = new.f_int1;
11634
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11635
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11637
# check trigger-5 success: 1
11638
DROP TRIGGER trg_1;
11639
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11640
f_int2 = CAST(f_char1 AS SIGNED INT),
11641
f_charbig = 'just inserted'
11642
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11644
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11645
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11646
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11647
'just inserted' FROM t0_template
11648
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11649
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11651
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11652
f_charbig = 'updated by trigger'
11653
WHERE f_int1 = - old.f_int1;
11655
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11656
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11658
# check trigger-6 success: 1
11659
DROP TRIGGER trg_1;
11660
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11661
f_int2 = CAST(f_char1 AS SIGNED INT),
11662
f_charbig = 'just inserted'
11663
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11665
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11666
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11667
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11668
'just inserted' FROM t0_template
11669
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11670
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11672
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11673
f_charbig = 'updated by trigger'
11674
WHERE f_int1 = - old.f_int1;
11677
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11679
# check trigger-7 success: 1
11680
DROP TRIGGER trg_1;
11681
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11682
f_int2 = CAST(f_char1 AS SIGNED INT),
11683
f_charbig = 'just inserted'
11684
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11686
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11687
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11688
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11689
'just inserted' FROM t0_template
11690
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11691
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11693
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11694
f_charbig = 'updated by trigger'
11695
WHERE f_int1 = - old.f_int1;
11698
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11700
# check trigger-8 success: 1
11701
DROP TRIGGER trg_1;
11702
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11703
f_int2 = CAST(f_char1 AS SIGNED INT),
11704
f_charbig = 'just inserted'
11705
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11707
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11709
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11710
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11712
SET new.f_int1 = old.f_int1 + @max_row,
11713
new.f_int2 = old.f_int2 - @max_row,
11714
new.f_charbig = '####updated per update trigger####';
11717
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11718
f_charbig = '####updated per update statement itself####';
11720
# check trigger-9 success: 1
11721
DROP TRIGGER trg_2;
11722
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11723
f_int2 = CAST(f_char1 AS SIGNED INT),
11724
f_charbig = CONCAT('===',f_char1,'===');
11725
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11727
SET new.f_int1 = new.f_int1 + @max_row,
11728
new.f_int2 = new.f_int2 - @max_row,
11729
new.f_charbig = '####updated per update trigger####';
11732
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11733
f_charbig = '####updated per update statement itself####';
11735
# check trigger-10 success: 1
11736
DROP TRIGGER trg_2;
11737
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11738
f_int2 = CAST(f_char1 AS SIGNED INT),
11739
f_charbig = CONCAT('===',f_char1,'===');
11740
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11742
SET new.f_int1 = @my_max1 + @counter,
11743
new.f_int2 = @my_min2 - @counter,
11744
new.f_charbig = '####updated per insert trigger####';
11745
SET @counter = @counter + 1;
11748
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11749
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11750
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11751
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11752
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11754
DROP TRIGGER trg_3;
11756
# check trigger-11 success: 1
11758
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11759
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11760
AND f_charbig = '####updated per insert trigger####';
11761
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11763
SET new.f_int1 = @my_max1 + @counter,
11764
new.f_int2 = @my_min2 - @counter,
11765
new.f_charbig = '####updated per insert trigger####';
11766
SET @counter = @counter + 1;
11769
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11770
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11771
SELECT CAST(f_int1 AS CHAR),
11772
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11773
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11775
DROP TRIGGER trg_3;
11777
# check trigger-12 success: 1
11779
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11780
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11781
AND f_charbig = '####updated per insert trigger####';
11783
Table Op Msg_type Msg_text
11784
test.t1 analyze status OK
11785
CHECK TABLE t1 EXTENDED;
11786
Table Op Msg_type Msg_text
11787
test.t1 check status OK
11788
CHECKSUM TABLE t1 EXTENDED;
11790
test.t1 <some_value>
11792
Table Op Msg_type Msg_text
11793
test.t1 optimize status OK
11794
# check layout success: 1
11795
REPAIR TABLE t1 EXTENDED;
11796
Table Op Msg_type Msg_text
11797
test.t1 repair note The storage engine for the table doesn't support repair
11798
# check layout success: 1
11801
# check TRUNCATE success: 1
11802
# check layout success: 1
11803
# End usability test (inc/partition_check.inc)
11810
f_charbig VARCHAR(1000)
11813
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
11814
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11815
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11816
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11817
ALTER TABLE t1 CHECK PARTITION part_1,part_2;
11818
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11819
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11820
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11821
# Start usability test (inc/partition_check.inc)
11823
SHOW CREATE TABLE t1;
11825
t1 CREATE TABLE `t1` (
11826
`f_int1` int(11) DEFAULT NULL,
11827
`f_int2` int(11) DEFAULT NULL,
11828
`f_char1` char(20) DEFAULT NULL,
11829
`f_char2` char(20) DEFAULT NULL,
11830
`f_charbig` varchar(1000) DEFAULT NULL
11831
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */
11833
# check prerequisites-1 success: 1
11834
# check COUNT(*) success: 1
11835
# check MIN/MAX(f_int1) success: 1
11836
# check MIN/MAX(f_int2) success: 1
11837
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11838
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11839
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11840
WHERE f_int1 IN (2,3);
11841
# check prerequisites-3 success: 1
11842
DELETE FROM t1 WHERE f_charbig = 'delete me';
11843
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
11844
# check read via f_int1 success: 1
11845
# check read via f_int2 success: 1
11847
# check multiple-1 success: 1
11848
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11850
# check multiple-2 success: 1
11851
INSERT INTO t1 SELECT * FROM t0_template
11852
WHERE MOD(f_int1,3) = 0;
11854
# check multiple-3 success: 1
11855
UPDATE t1 SET f_int1 = f_int1 + @max_row
11856
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11857
AND @max_row_div2 + @max_row_div4;
11859
# check multiple-4 success: 1
11861
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11862
AND @max_row_div2 + @max_row_div4 + @max_row;
11864
# check multiple-5 success: 1
11865
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11867
SET f_int1 = @cur_value , f_int2 = @cur_value,
11868
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11869
f_charbig = '#SINGLE#';
11871
# check single-1 success: 1
11872
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11874
SET f_int1 = @cur_value , f_int2 = @cur_value,
11875
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11876
f_charbig = '#SINGLE#';
11878
# check single-2 success: 1
11879
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11880
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11881
UPDATE t1 SET f_int1 = @cur_value2
11882
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11884
# check single-3 success: 1
11885
SET @cur_value1= -1;
11886
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11887
UPDATE t1 SET f_int1 = @cur_value1
11888
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11890
# check single-4 success: 1
11891
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11892
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11894
# check single-5 success: 1
11895
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11897
# check single-6 success: 1
11898
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11900
# check single-7 success: 1
11901
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11902
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11903
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11904
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11905
f_charbig = '#NULL#';
11907
SET f_int1 = NULL , f_int2 = -@max_row,
11908
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11909
f_charbig = '#NULL#';
11910
# check null success: 1
11912
# check null-1 success: 1
11913
UPDATE t1 SET f_int1 = -@max_row
11914
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11915
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11917
# check null-2 success: 1
11918
UPDATE t1 SET f_int1 = NULL
11919
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11920
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11922
# check null-3 success: 1
11924
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11925
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11927
# check null-4 success: 1
11929
WHERE f_int1 = 0 AND f_int2 = 0
11930
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11931
AND f_charbig = '#NULL#';
11933
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11934
SELECT f_int1, f_int1, '', '', 'was inserted'
11935
FROM t0_template source_tab
11936
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11938
# check transactions-1 success: 1
11941
# check transactions-2 success: 1
11944
# check transactions-3 success: 1
11945
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11949
# check transactions-4 success: 1
11950
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11951
SELECT f_int1, f_int1, '', '', 'was inserted'
11952
FROM t0_template source_tab
11953
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11955
# check transactions-5 success: 1
11958
# check transactions-6 success: 1
11959
# INFO: Storage engine used for t1 seems to be transactional.
11962
# check transactions-7 success: 1
11963
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11965
SET @@session.sql_mode = 'traditional';
11966
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11967
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11968
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11969
'', '', 'was inserted' FROM t0_template
11970
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11971
ERROR 22012: Division by 0
11974
# check transactions-8 success: 1
11975
# INFO: Storage engine used for t1 seems to be able to revert
11976
# changes made by the failing statement.
11977
SET @@session.sql_mode = '';
11979
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11981
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11983
# check special-1 success: 1
11984
UPDATE t1 SET f_charbig = '';
11986
# check special-2 success: 1
11987
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11988
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11989
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11990
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11991
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11992
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11993
'just inserted' FROM t0_template
11994
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11995
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11997
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11998
f_charbig = 'updated by trigger'
11999
WHERE f_int1 = new.f_int1;
12001
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12002
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12003
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12005
# check trigger-1 success: 1
12006
DROP TRIGGER trg_1;
12007
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12008
f_int2 = CAST(f_char1 AS SIGNED INT),
12009
f_charbig = 'just inserted'
12010
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12012
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12013
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12014
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12015
'just inserted' FROM t0_template
12016
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12017
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12019
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12020
f_charbig = 'updated by trigger'
12021
WHERE f_int1 = new.f_int1;
12023
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12024
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12025
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12027
# check trigger-2 success: 1
12028
DROP TRIGGER trg_1;
12029
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12030
f_int2 = CAST(f_char1 AS SIGNED INT),
12031
f_charbig = 'just inserted'
12032
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12034
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12035
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12036
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12037
'just inserted' FROM t0_template
12038
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12039
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12041
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12042
f_charbig = 'updated by trigger'
12043
WHERE f_int1 = new.f_int1;
12045
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12046
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12048
# check trigger-3 success: 1
12049
DROP TRIGGER trg_1;
12050
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12051
f_int2 = CAST(f_char1 AS SIGNED INT),
12052
f_charbig = 'just inserted'
12053
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12055
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12056
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12057
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12058
'just inserted' FROM t0_template
12059
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12060
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12062
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12063
f_charbig = 'updated by trigger'
12064
WHERE f_int1 = - old.f_int1;
12066
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12067
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12069
# check trigger-4 success: 1
12070
DROP TRIGGER trg_1;
12071
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12072
f_int2 = CAST(f_char1 AS SIGNED INT),
12073
f_charbig = 'just inserted'
12074
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12076
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12077
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12078
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12079
'just inserted' FROM t0_template
12080
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12081
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12083
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12084
f_charbig = 'updated by trigger'
12085
WHERE f_int1 = new.f_int1;
12087
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12088
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12090
# check trigger-5 success: 1
12091
DROP TRIGGER trg_1;
12092
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12093
f_int2 = CAST(f_char1 AS SIGNED INT),
12094
f_charbig = 'just inserted'
12095
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12097
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12098
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12099
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12100
'just inserted' FROM t0_template
12101
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12102
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12104
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12105
f_charbig = 'updated by trigger'
12106
WHERE f_int1 = - old.f_int1;
12108
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12109
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12111
# check trigger-6 success: 1
12112
DROP TRIGGER trg_1;
12113
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12114
f_int2 = CAST(f_char1 AS SIGNED INT),
12115
f_charbig = 'just inserted'
12116
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12118
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12119
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12120
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12121
'just inserted' FROM t0_template
12122
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12123
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12125
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12126
f_charbig = 'updated by trigger'
12127
WHERE f_int1 = - old.f_int1;
12130
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12132
# check trigger-7 success: 1
12133
DROP TRIGGER trg_1;
12134
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12135
f_int2 = CAST(f_char1 AS SIGNED INT),
12136
f_charbig = 'just inserted'
12137
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12139
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12140
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12141
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12142
'just inserted' FROM t0_template
12143
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12144
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12146
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12147
f_charbig = 'updated by trigger'
12148
WHERE f_int1 = - old.f_int1;
12151
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12153
# check trigger-8 success: 1
12154
DROP TRIGGER trg_1;
12155
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12156
f_int2 = CAST(f_char1 AS SIGNED INT),
12157
f_charbig = 'just inserted'
12158
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12160
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12162
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12163
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12165
SET new.f_int1 = old.f_int1 + @max_row,
12166
new.f_int2 = old.f_int2 - @max_row,
12167
new.f_charbig = '####updated per update trigger####';
12170
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12171
f_charbig = '####updated per update statement itself####';
12173
# check trigger-9 success: 1
12174
DROP TRIGGER trg_2;
12175
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12176
f_int2 = CAST(f_char1 AS SIGNED INT),
12177
f_charbig = CONCAT('===',f_char1,'===');
12178
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12180
SET new.f_int1 = new.f_int1 + @max_row,
12181
new.f_int2 = new.f_int2 - @max_row,
12182
new.f_charbig = '####updated per update trigger####';
12185
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12186
f_charbig = '####updated per update statement itself####';
12188
# check trigger-10 success: 1
12189
DROP TRIGGER trg_2;
12190
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12191
f_int2 = CAST(f_char1 AS SIGNED INT),
12192
f_charbig = CONCAT('===',f_char1,'===');
12193
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12195
SET new.f_int1 = @my_max1 + @counter,
12196
new.f_int2 = @my_min2 - @counter,
12197
new.f_charbig = '####updated per insert trigger####';
12198
SET @counter = @counter + 1;
12201
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12202
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12203
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12204
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12205
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12207
DROP TRIGGER trg_3;
12209
# check trigger-11 success: 1
12211
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12212
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12213
AND f_charbig = '####updated per insert trigger####';
12214
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12216
SET new.f_int1 = @my_max1 + @counter,
12217
new.f_int2 = @my_min2 - @counter,
12218
new.f_charbig = '####updated per insert trigger####';
12219
SET @counter = @counter + 1;
12222
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12223
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12224
SELECT CAST(f_int1 AS CHAR),
12225
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12226
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12228
DROP TRIGGER trg_3;
12230
# check trigger-12 success: 1
12232
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12233
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12234
AND f_charbig = '####updated per insert trigger####';
12236
Table Op Msg_type Msg_text
12237
test.t1 analyze status OK
12238
CHECK TABLE t1 EXTENDED;
12239
Table Op Msg_type Msg_text
12240
test.t1 check status OK
12241
CHECKSUM TABLE t1 EXTENDED;
12243
test.t1 <some_value>
12245
Table Op Msg_type Msg_text
12246
test.t1 optimize status OK
12247
# check layout success: 1
12248
REPAIR TABLE t1 EXTENDED;
12249
Table Op Msg_type Msg_text
12250
test.t1 repair note The storage engine for the table doesn't support repair
12251
# check layout success: 1
12254
# check TRUNCATE success: 1
12255
# check layout success: 1
12256
# End usability test (inc/partition_check.inc)
12263
f_charbig VARCHAR(1000)
12266
PARTITION BY LIST(MOD(f_int1,4))
12267
(PARTITION part_3 VALUES IN (-3),
12268
PARTITION part_2 VALUES IN (-2),
12269
PARTITION part_1 VALUES IN (-1),
12270
PARTITION part_N VALUES IN (NULL),
12271
PARTITION part0 VALUES IN (0),
12272
PARTITION part1 VALUES IN (1),
12273
PARTITION part2 VALUES IN (2),
12274
PARTITION part3 VALUES IN (3));
12275
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12276
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12277
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12278
ALTER TABLE t1 CHECK PARTITION part_1,part_2;
12279
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12280
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12281
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12282
# Start usability test (inc/partition_check.inc)
12284
SHOW CREATE TABLE t1;
12286
t1 CREATE TABLE `t1` (
12287
`f_int1` int(11) DEFAULT NULL,
12288
`f_int2` int(11) DEFAULT NULL,
12289
`f_char1` char(20) DEFAULT NULL,
12290
`f_char2` char(20) DEFAULT NULL,
12291
`f_charbig` varchar(1000) DEFAULT NULL
12292
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
12294
# check prerequisites-1 success: 1
12295
# check COUNT(*) success: 1
12296
# check MIN/MAX(f_int1) success: 1
12297
# check MIN/MAX(f_int2) success: 1
12298
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12299
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12300
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12301
WHERE f_int1 IN (2,3);
12302
# check prerequisites-3 success: 1
12303
DELETE FROM t1 WHERE f_charbig = 'delete me';
12304
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
12305
# check read via f_int1 success: 1
12306
# check read via f_int2 success: 1
12308
# check multiple-1 success: 1
12309
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12311
# check multiple-2 success: 1
12312
INSERT INTO t1 SELECT * FROM t0_template
12313
WHERE MOD(f_int1,3) = 0;
12315
# check multiple-3 success: 1
12316
UPDATE t1 SET f_int1 = f_int1 + @max_row
12317
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12318
AND @max_row_div2 + @max_row_div4;
12320
# check multiple-4 success: 1
12322
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12323
AND @max_row_div2 + @max_row_div4 + @max_row;
12325
# check multiple-5 success: 1
12326
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12328
SET f_int1 = @cur_value , f_int2 = @cur_value,
12329
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12330
f_charbig = '#SINGLE#';
12332
# check single-1 success: 1
12333
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12335
SET f_int1 = @cur_value , f_int2 = @cur_value,
12336
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12337
f_charbig = '#SINGLE#';
12339
# check single-2 success: 1
12340
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12341
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12342
UPDATE t1 SET f_int1 = @cur_value2
12343
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12345
# check single-3 success: 1
12346
SET @cur_value1= -1;
12347
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12348
UPDATE t1 SET f_int1 = @cur_value1
12349
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12351
# check single-4 success: 1
12352
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12353
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12355
# check single-5 success: 1
12356
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12358
# check single-6 success: 1
12359
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12361
# check single-7 success: 1
12362
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12363
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12364
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12365
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12366
f_charbig = '#NULL#';
12368
SET f_int1 = NULL , f_int2 = -@max_row,
12369
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12370
f_charbig = '#NULL#';
12371
# check null success: 1
12373
# check null-1 success: 1
12374
UPDATE t1 SET f_int1 = -@max_row
12375
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12376
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12378
# check null-2 success: 1
12379
UPDATE t1 SET f_int1 = NULL
12380
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12381
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12383
# check null-3 success: 1
12385
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12386
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12388
# check null-4 success: 1
12390
WHERE f_int1 = 0 AND f_int2 = 0
12391
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12392
AND f_charbig = '#NULL#';
12394
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12395
SELECT f_int1, f_int1, '', '', 'was inserted'
12396
FROM t0_template source_tab
12397
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12399
# check transactions-1 success: 1
12402
# check transactions-2 success: 1
12405
# check transactions-3 success: 1
12406
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12410
# check transactions-4 success: 1
12411
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12412
SELECT f_int1, f_int1, '', '', 'was inserted'
12413
FROM t0_template source_tab
12414
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12416
# check transactions-5 success: 1
12419
# check transactions-6 success: 1
12420
# INFO: Storage engine used for t1 seems to be transactional.
12423
# check transactions-7 success: 1
12424
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12426
SET @@session.sql_mode = 'traditional';
12427
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12428
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12429
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12430
'', '', 'was inserted' FROM t0_template
12431
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12432
ERROR 22012: Division by 0
12435
# check transactions-8 success: 1
12436
# INFO: Storage engine used for t1 seems to be able to revert
12437
# changes made by the failing statement.
12438
SET @@session.sql_mode = '';
12440
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12442
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12444
# check special-1 success: 1
12445
UPDATE t1 SET f_charbig = '';
12447
# check special-2 success: 1
12448
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12449
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12450
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12451
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12452
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12453
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12454
'just inserted' FROM t0_template
12455
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12456
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12458
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12459
f_charbig = 'updated by trigger'
12460
WHERE f_int1 = new.f_int1;
12462
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12463
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12464
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12466
# check trigger-1 success: 1
12467
DROP TRIGGER trg_1;
12468
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12469
f_int2 = CAST(f_char1 AS SIGNED INT),
12470
f_charbig = 'just inserted'
12471
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12473
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12474
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12475
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12476
'just inserted' FROM t0_template
12477
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12478
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12480
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12481
f_charbig = 'updated by trigger'
12482
WHERE f_int1 = new.f_int1;
12484
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12485
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12486
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12488
# check trigger-2 success: 1
12489
DROP TRIGGER trg_1;
12490
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12491
f_int2 = CAST(f_char1 AS SIGNED INT),
12492
f_charbig = 'just inserted'
12493
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12495
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12496
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12497
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12498
'just inserted' FROM t0_template
12499
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12500
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12502
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12503
f_charbig = 'updated by trigger'
12504
WHERE f_int1 = new.f_int1;
12506
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12507
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12509
# check trigger-3 success: 1
12510
DROP TRIGGER trg_1;
12511
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12512
f_int2 = CAST(f_char1 AS SIGNED INT),
12513
f_charbig = 'just inserted'
12514
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12516
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12517
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12518
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12519
'just inserted' FROM t0_template
12520
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12521
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12523
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12524
f_charbig = 'updated by trigger'
12525
WHERE f_int1 = - old.f_int1;
12527
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12528
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12530
# check trigger-4 success: 1
12531
DROP TRIGGER trg_1;
12532
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12533
f_int2 = CAST(f_char1 AS SIGNED INT),
12534
f_charbig = 'just inserted'
12535
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12537
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12538
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12539
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12540
'just inserted' FROM t0_template
12541
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12542
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12544
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12545
f_charbig = 'updated by trigger'
12546
WHERE f_int1 = new.f_int1;
12548
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12549
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12551
# check trigger-5 success: 1
12552
DROP TRIGGER trg_1;
12553
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12554
f_int2 = CAST(f_char1 AS SIGNED INT),
12555
f_charbig = 'just inserted'
12556
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12558
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12559
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12560
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12561
'just inserted' FROM t0_template
12562
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12563
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12565
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12566
f_charbig = 'updated by trigger'
12567
WHERE f_int1 = - old.f_int1;
12569
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12570
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12572
# check trigger-6 success: 1
12573
DROP TRIGGER trg_1;
12574
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12575
f_int2 = CAST(f_char1 AS SIGNED INT),
12576
f_charbig = 'just inserted'
12577
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12579
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12580
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12581
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12582
'just inserted' FROM t0_template
12583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12584
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12586
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12587
f_charbig = 'updated by trigger'
12588
WHERE f_int1 = - old.f_int1;
12591
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12593
# check trigger-7 success: 1
12594
DROP TRIGGER trg_1;
12595
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12596
f_int2 = CAST(f_char1 AS SIGNED INT),
12597
f_charbig = 'just inserted'
12598
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12600
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12601
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12602
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12603
'just inserted' FROM t0_template
12604
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12605
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12607
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12608
f_charbig = 'updated by trigger'
12609
WHERE f_int1 = - old.f_int1;
12612
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12614
# check trigger-8 success: 1
12615
DROP TRIGGER trg_1;
12616
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12617
f_int2 = CAST(f_char1 AS SIGNED INT),
12618
f_charbig = 'just inserted'
12619
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12621
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12623
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12624
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12626
SET new.f_int1 = old.f_int1 + @max_row,
12627
new.f_int2 = old.f_int2 - @max_row,
12628
new.f_charbig = '####updated per update trigger####';
12631
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12632
f_charbig = '####updated per update statement itself####';
12634
# check trigger-9 success: 1
12635
DROP TRIGGER trg_2;
12636
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12637
f_int2 = CAST(f_char1 AS SIGNED INT),
12638
f_charbig = CONCAT('===',f_char1,'===');
12639
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12641
SET new.f_int1 = new.f_int1 + @max_row,
12642
new.f_int2 = new.f_int2 - @max_row,
12643
new.f_charbig = '####updated per update trigger####';
12646
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12647
f_charbig = '####updated per update statement itself####';
12649
# check trigger-10 success: 1
12650
DROP TRIGGER trg_2;
12651
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12652
f_int2 = CAST(f_char1 AS SIGNED INT),
12653
f_charbig = CONCAT('===',f_char1,'===');
12654
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12656
SET new.f_int1 = @my_max1 + @counter,
12657
new.f_int2 = @my_min2 - @counter,
12658
new.f_charbig = '####updated per insert trigger####';
12659
SET @counter = @counter + 1;
12662
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12663
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12664
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12665
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12666
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12668
DROP TRIGGER trg_3;
12670
# check trigger-11 success: 1
12672
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12673
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12674
AND f_charbig = '####updated per insert trigger####';
12675
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12677
SET new.f_int1 = @my_max1 + @counter,
12678
new.f_int2 = @my_min2 - @counter,
12679
new.f_charbig = '####updated per insert trigger####';
12680
SET @counter = @counter + 1;
12683
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12684
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12685
SELECT CAST(f_int1 AS CHAR),
12686
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12687
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12689
DROP TRIGGER trg_3;
12691
# check trigger-12 success: 1
12693
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12694
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12695
AND f_charbig = '####updated per insert trigger####';
12697
Table Op Msg_type Msg_text
12698
test.t1 analyze status OK
12699
CHECK TABLE t1 EXTENDED;
12700
Table Op Msg_type Msg_text
12701
test.t1 check status OK
12702
CHECKSUM TABLE t1 EXTENDED;
12704
test.t1 <some_value>
12706
Table Op Msg_type Msg_text
12707
test.t1 optimize status OK
12708
# check layout success: 1
12709
REPAIR TABLE t1 EXTENDED;
12710
Table Op Msg_type Msg_text
12711
test.t1 repair note The storage engine for the table doesn't support repair
12712
# check layout success: 1
12715
# check TRUNCATE success: 1
12716
# check layout success: 1
12717
# End usability test (inc/partition_check.inc)
12724
f_charbig VARCHAR(1000)
12727
PARTITION BY RANGE(f_int1)
12728
(PARTITION parta VALUES LESS THAN (0),
12729
PARTITION part_1 VALUES LESS THAN (5),
12730
PARTITION part_2 VALUES LESS THAN (10),
12731
PARTITION part_3 VALUES LESS THAN (10 + 5),
12732
PARTITION part_4 VALUES LESS THAN (20),
12733
PARTITION part_5 VALUES LESS THAN (2147483646));
12734
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12735
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12736
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12737
ALTER TABLE t1 CHECK PARTITION part_1,part_2;
12738
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12739
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12740
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12741
# Start usability test (inc/partition_check.inc)
12743
SHOW CREATE TABLE t1;
12745
t1 CREATE TABLE `t1` (
12746
`f_int1` int(11) DEFAULT NULL,
12747
`f_int2` int(11) DEFAULT NULL,
12748
`f_char1` char(20) DEFAULT NULL,
12749
`f_char2` char(20) DEFAULT NULL,
12750
`f_charbig` varchar(1000) DEFAULT NULL
12751
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
12753
# check prerequisites-1 success: 1
12754
# check COUNT(*) success: 1
12755
# check MIN/MAX(f_int1) success: 1
12756
# check MIN/MAX(f_int2) success: 1
12757
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12758
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12759
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12760
WHERE f_int1 IN (2,3);
12761
# check prerequisites-3 success: 1
12762
DELETE FROM t1 WHERE f_charbig = 'delete me';
12763
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
12764
# check read via f_int1 success: 1
12765
# check read via f_int2 success: 1
12767
# check multiple-1 success: 1
12768
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12770
# check multiple-2 success: 1
12771
INSERT INTO t1 SELECT * FROM t0_template
12772
WHERE MOD(f_int1,3) = 0;
12774
# check multiple-3 success: 1
12775
UPDATE t1 SET f_int1 = f_int1 + @max_row
12776
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12777
AND @max_row_div2 + @max_row_div4;
12779
# check multiple-4 success: 1
12781
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12782
AND @max_row_div2 + @max_row_div4 + @max_row;
12784
# check multiple-5 success: 1
12785
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12787
SET f_int1 = @cur_value , f_int2 = @cur_value,
12788
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12789
f_charbig = '#SINGLE#';
12791
# check single-1 success: 1
12792
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12794
SET f_int1 = @cur_value , f_int2 = @cur_value,
12795
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12796
f_charbig = '#SINGLE#';
12798
# check single-2 success: 1
12799
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12800
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12801
UPDATE t1 SET f_int1 = @cur_value2
12802
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12804
# check single-3 success: 1
12805
SET @cur_value1= -1;
12806
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12807
UPDATE t1 SET f_int1 = @cur_value1
12808
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12810
# check single-4 success: 1
12811
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12812
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12814
# check single-5 success: 1
12815
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12817
# check single-6 success: 1
12818
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12819
ERROR HY000: Table has no partition for value 2147483647
12820
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12821
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12822
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12823
f_charbig = '#NULL#';
12825
SET f_int1 = NULL , f_int2 = -@max_row,
12826
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12827
f_charbig = '#NULL#';
12828
# check null success: 1
12830
# check null-1 success: 1
12831
UPDATE t1 SET f_int1 = -@max_row
12832
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12833
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12835
# check null-2 success: 1
12836
UPDATE t1 SET f_int1 = NULL
12837
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12838
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12840
# check null-3 success: 1
12842
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12843
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12845
# check null-4 success: 1
12847
WHERE f_int1 = 0 AND f_int2 = 0
12848
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12849
AND f_charbig = '#NULL#';
12851
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12852
SELECT f_int1, f_int1, '', '', 'was inserted'
12853
FROM t0_template source_tab
12854
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12856
# check transactions-1 success: 1
12859
# check transactions-2 success: 1
12862
# check transactions-3 success: 1
12863
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12867
# check transactions-4 success: 1
12868
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12869
SELECT f_int1, f_int1, '', '', 'was inserted'
12870
FROM t0_template source_tab
12871
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12873
# check transactions-5 success: 1
12876
# check transactions-6 success: 1
12877
# INFO: Storage engine used for t1 seems to be transactional.
12880
# check transactions-7 success: 1
12881
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12883
SET @@session.sql_mode = 'traditional';
12884
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12885
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12886
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12887
'', '', 'was inserted' FROM t0_template
12888
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12889
ERROR 22012: Division by 0
12892
# check transactions-8 success: 1
12893
# INFO: Storage engine used for t1 seems to be able to revert
12894
# changes made by the failing statement.
12895
SET @@session.sql_mode = '';
12897
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12899
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12901
# check special-1 success: 1
12902
UPDATE t1 SET f_charbig = '';
12904
# check special-2 success: 1
12905
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12906
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12907
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12908
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12909
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12910
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12911
'just inserted' FROM t0_template
12912
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12913
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12915
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12916
f_charbig = 'updated by trigger'
12917
WHERE f_int1 = new.f_int1;
12919
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12920
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12921
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12923
# check trigger-1 success: 1
12924
DROP TRIGGER trg_1;
12925
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12926
f_int2 = CAST(f_char1 AS SIGNED INT),
12927
f_charbig = 'just inserted'
12928
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12930
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12931
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12932
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12933
'just inserted' FROM t0_template
12934
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12935
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12937
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12938
f_charbig = 'updated by trigger'
12939
WHERE f_int1 = new.f_int1;
12941
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12942
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12943
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12945
# check trigger-2 success: 1
12946
DROP TRIGGER trg_1;
12947
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12948
f_int2 = CAST(f_char1 AS SIGNED INT),
12949
f_charbig = 'just inserted'
12950
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12952
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12953
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12954
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12955
'just inserted' FROM t0_template
12956
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12957
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12959
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12960
f_charbig = 'updated by trigger'
12961
WHERE f_int1 = new.f_int1;
12963
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12964
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12966
# check trigger-3 success: 1
12967
DROP TRIGGER trg_1;
12968
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12969
f_int2 = CAST(f_char1 AS SIGNED INT),
12970
f_charbig = 'just inserted'
12971
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12973
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12974
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12975
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12976
'just inserted' FROM t0_template
12977
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12978
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12980
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12981
f_charbig = 'updated by trigger'
12982
WHERE f_int1 = - old.f_int1;
12984
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12985
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12987
# check trigger-4 success: 1
12988
DROP TRIGGER trg_1;
12989
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12990
f_int2 = CAST(f_char1 AS SIGNED INT),
12991
f_charbig = 'just inserted'
12992
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12994
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12995
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12996
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12997
'just inserted' FROM t0_template
12998
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12999
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13001
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13002
f_charbig = 'updated by trigger'
13003
WHERE f_int1 = new.f_int1;
13005
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13006
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13008
# check trigger-5 success: 1
13009
DROP TRIGGER trg_1;
13010
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13011
f_int2 = CAST(f_char1 AS SIGNED INT),
13012
f_charbig = 'just inserted'
13013
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13015
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13016
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13017
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13018
'just inserted' FROM t0_template
13019
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13020
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13022
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13023
f_charbig = 'updated by trigger'
13024
WHERE f_int1 = - old.f_int1;
13026
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13027
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13029
# check trigger-6 success: 1
13030
DROP TRIGGER trg_1;
13031
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13032
f_int2 = CAST(f_char1 AS SIGNED INT),
13033
f_charbig = 'just inserted'
13034
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13036
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13037
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13038
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13039
'just inserted' FROM t0_template
13040
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13041
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13043
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13044
f_charbig = 'updated by trigger'
13045
WHERE f_int1 = - old.f_int1;
13048
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13050
# check trigger-7 success: 1
13051
DROP TRIGGER trg_1;
13052
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13053
f_int2 = CAST(f_char1 AS SIGNED INT),
13054
f_charbig = 'just inserted'
13055
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13057
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13058
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13059
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13060
'just inserted' FROM t0_template
13061
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13062
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13064
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13065
f_charbig = 'updated by trigger'
13066
WHERE f_int1 = - old.f_int1;
13069
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13071
# check trigger-8 success: 1
13072
DROP TRIGGER trg_1;
13073
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13074
f_int2 = CAST(f_char1 AS SIGNED INT),
13075
f_charbig = 'just inserted'
13076
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13078
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13080
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13081
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13083
SET new.f_int1 = old.f_int1 + @max_row,
13084
new.f_int2 = old.f_int2 - @max_row,
13085
new.f_charbig = '####updated per update trigger####';
13088
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13089
f_charbig = '####updated per update statement itself####';
13091
# check trigger-9 success: 1
13092
DROP TRIGGER trg_2;
13093
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13094
f_int2 = CAST(f_char1 AS SIGNED INT),
13095
f_charbig = CONCAT('===',f_char1,'===');
13096
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13098
SET new.f_int1 = new.f_int1 + @max_row,
13099
new.f_int2 = new.f_int2 - @max_row,
13100
new.f_charbig = '####updated per update trigger####';
13103
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13104
f_charbig = '####updated per update statement itself####';
13106
# check trigger-10 success: 1
13107
DROP TRIGGER trg_2;
13108
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13109
f_int2 = CAST(f_char1 AS SIGNED INT),
13110
f_charbig = CONCAT('===',f_char1,'===');
13111
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13113
SET new.f_int1 = @my_max1 + @counter,
13114
new.f_int2 = @my_min2 - @counter,
13115
new.f_charbig = '####updated per insert trigger####';
13116
SET @counter = @counter + 1;
13119
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13120
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13121
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13122
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13123
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13125
DROP TRIGGER trg_3;
13127
# check trigger-11 success: 1
13129
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13130
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13131
AND f_charbig = '####updated per insert trigger####';
13132
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13134
SET new.f_int1 = @my_max1 + @counter,
13135
new.f_int2 = @my_min2 - @counter,
13136
new.f_charbig = '####updated per insert trigger####';
13137
SET @counter = @counter + 1;
13140
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13141
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13142
SELECT CAST(f_int1 AS CHAR),
13143
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13144
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13146
DROP TRIGGER trg_3;
13148
# check trigger-12 success: 1
13150
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13151
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13152
AND f_charbig = '####updated per insert trigger####';
13154
Table Op Msg_type Msg_text
13155
test.t1 analyze status OK
13156
CHECK TABLE t1 EXTENDED;
13157
Table Op Msg_type Msg_text
13158
test.t1 check status OK
13159
CHECKSUM TABLE t1 EXTENDED;
13161
test.t1 <some_value>
13163
Table Op Msg_type Msg_text
13164
test.t1 optimize status OK
13165
# check layout success: 1
13166
REPAIR TABLE t1 EXTENDED;
13167
Table Op Msg_type Msg_text
13168
test.t1 repair note The storage engine for the table doesn't support repair
13169
# check layout success: 1
13172
# check TRUNCATE success: 1
13173
# check layout success: 1
13174
# End usability test (inc/partition_check.inc)
13181
f_charbig VARCHAR(1000)
13184
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
13185
(PARTITION part_1 VALUES LESS THAN (0),
13186
PARTITION part_2 VALUES LESS THAN (5),
13187
PARTITION part_3 VALUES LESS THAN (10),
13188
PARTITION part_4 VALUES LESS THAN (2147483646));
13189
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13190
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13191
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13192
ALTER TABLE t1 CHECK PARTITION part_1,part_2;
13193
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13194
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13195
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13196
# Start usability test (inc/partition_check.inc)
13198
SHOW CREATE TABLE t1;
13200
t1 CREATE TABLE `t1` (
13201
`f_int1` int(11) DEFAULT NULL,
13202
`f_int2` int(11) DEFAULT NULL,
13203
`f_char1` char(20) DEFAULT NULL,
13204
`f_char2` char(20) DEFAULT NULL,
13205
`f_charbig` varchar(1000) DEFAULT NULL
13206
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
13208
# check prerequisites-1 success: 1
13209
# check COUNT(*) success: 1
13210
# check MIN/MAX(f_int1) success: 1
13211
# check MIN/MAX(f_int2) success: 1
13212
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13213
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13214
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13215
WHERE f_int1 IN (2,3);
13216
# check prerequisites-3 success: 1
13217
DELETE FROM t1 WHERE f_charbig = 'delete me';
13218
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13219
# check read via f_int1 success: 1
13220
# check read via f_int2 success: 1
13222
# check multiple-1 success: 1
13223
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13225
# check multiple-2 success: 1
13226
INSERT INTO t1 SELECT * FROM t0_template
13227
WHERE MOD(f_int1,3) = 0;
13229
# check multiple-3 success: 1
13230
UPDATE t1 SET f_int1 = f_int1 + @max_row
13231
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13232
AND @max_row_div2 + @max_row_div4;
13234
# check multiple-4 success: 1
13236
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13237
AND @max_row_div2 + @max_row_div4 + @max_row;
13239
# check multiple-5 success: 1
13240
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13242
SET f_int1 = @cur_value , f_int2 = @cur_value,
13243
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13244
f_charbig = '#SINGLE#';
13246
# check single-1 success: 1
13247
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13249
SET f_int1 = @cur_value , f_int2 = @cur_value,
13250
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13251
f_charbig = '#SINGLE#';
13253
# check single-2 success: 1
13254
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13255
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13256
UPDATE t1 SET f_int1 = @cur_value2
13257
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13259
# check single-3 success: 1
13260
SET @cur_value1= -1;
13261
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13262
UPDATE t1 SET f_int1 = @cur_value1
13263
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13265
# check single-4 success: 1
13266
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13267
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13269
# check single-5 success: 1
13270
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13272
# check single-6 success: 1
13273
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13275
# check single-7 success: 1
13276
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13277
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13278
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13279
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13280
f_charbig = '#NULL#';
13282
SET f_int1 = NULL , f_int2 = -@max_row,
13283
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13284
f_charbig = '#NULL#';
13285
# check null success: 1
13287
# check null-1 success: 1
13288
UPDATE t1 SET f_int1 = -@max_row
13289
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13290
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13292
# check null-2 success: 1
13293
UPDATE t1 SET f_int1 = NULL
13294
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13295
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13297
# check null-3 success: 1
13299
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13300
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13302
# check null-4 success: 1
13304
WHERE f_int1 = 0 AND f_int2 = 0
13305
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13306
AND f_charbig = '#NULL#';
13308
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13309
SELECT f_int1, f_int1, '', '', 'was inserted'
13310
FROM t0_template source_tab
13311
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13313
# check transactions-1 success: 1
13316
# check transactions-2 success: 1
13319
# check transactions-3 success: 1
13320
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13324
# check transactions-4 success: 1
13325
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13326
SELECT f_int1, f_int1, '', '', 'was inserted'
13327
FROM t0_template source_tab
13328
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13330
# check transactions-5 success: 1
13333
# check transactions-6 success: 1
13334
# INFO: Storage engine used for t1 seems to be transactional.
13337
# check transactions-7 success: 1
13338
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13340
SET @@session.sql_mode = 'traditional';
13341
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13342
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13343
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13344
'', '', 'was inserted' FROM t0_template
13345
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13346
ERROR 22012: Division by 0
13349
# check transactions-8 success: 1
13350
# INFO: Storage engine used for t1 seems to be able to revert
13351
# changes made by the failing statement.
13352
SET @@session.sql_mode = '';
13354
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13356
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13358
# check special-1 success: 1
13359
UPDATE t1 SET f_charbig = '';
13361
# check special-2 success: 1
13362
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13363
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13364
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13365
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13366
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13367
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13368
'just inserted' FROM t0_template
13369
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13370
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13372
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13373
f_charbig = 'updated by trigger'
13374
WHERE f_int1 = new.f_int1;
13376
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13377
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13378
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13380
# check trigger-1 success: 1
13381
DROP TRIGGER trg_1;
13382
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13383
f_int2 = CAST(f_char1 AS SIGNED INT),
13384
f_charbig = 'just inserted'
13385
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13387
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13388
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13389
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13390
'just inserted' FROM t0_template
13391
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13392
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13394
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13395
f_charbig = 'updated by trigger'
13396
WHERE f_int1 = new.f_int1;
13398
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13399
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13400
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13402
# check trigger-2 success: 1
13403
DROP TRIGGER trg_1;
13404
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13405
f_int2 = CAST(f_char1 AS SIGNED INT),
13406
f_charbig = 'just inserted'
13407
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13409
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13410
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13411
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13412
'just inserted' FROM t0_template
13413
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13414
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13416
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13417
f_charbig = 'updated by trigger'
13418
WHERE f_int1 = new.f_int1;
13420
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13421
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13423
# check trigger-3 success: 1
13424
DROP TRIGGER trg_1;
13425
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13426
f_int2 = CAST(f_char1 AS SIGNED INT),
13427
f_charbig = 'just inserted'
13428
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13430
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13431
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13432
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13433
'just inserted' FROM t0_template
13434
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13435
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13437
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13438
f_charbig = 'updated by trigger'
13439
WHERE f_int1 = - old.f_int1;
13441
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13442
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13444
# check trigger-4 success: 1
13445
DROP TRIGGER trg_1;
13446
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13447
f_int2 = CAST(f_char1 AS SIGNED INT),
13448
f_charbig = 'just inserted'
13449
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13451
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13452
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13453
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13454
'just inserted' FROM t0_template
13455
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13456
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13458
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13459
f_charbig = 'updated by trigger'
13460
WHERE f_int1 = new.f_int1;
13462
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13463
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13465
# check trigger-5 success: 1
13466
DROP TRIGGER trg_1;
13467
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13468
f_int2 = CAST(f_char1 AS SIGNED INT),
13469
f_charbig = 'just inserted'
13470
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13472
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13473
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13474
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13475
'just inserted' FROM t0_template
13476
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13477
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13479
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13480
f_charbig = 'updated by trigger'
13481
WHERE f_int1 = - old.f_int1;
13483
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13484
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13486
# check trigger-6 success: 1
13487
DROP TRIGGER trg_1;
13488
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13489
f_int2 = CAST(f_char1 AS SIGNED INT),
13490
f_charbig = 'just inserted'
13491
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13493
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13494
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13495
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13496
'just inserted' FROM t0_template
13497
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13498
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13500
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13501
f_charbig = 'updated by trigger'
13502
WHERE f_int1 = - old.f_int1;
13505
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13507
# check trigger-7 success: 1
13508
DROP TRIGGER trg_1;
13509
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13510
f_int2 = CAST(f_char1 AS SIGNED INT),
13511
f_charbig = 'just inserted'
13512
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13514
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13515
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13516
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13517
'just inserted' FROM t0_template
13518
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13519
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13521
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13522
f_charbig = 'updated by trigger'
13523
WHERE f_int1 = - old.f_int1;
13526
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13528
# check trigger-8 success: 1
13529
DROP TRIGGER trg_1;
13530
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13531
f_int2 = CAST(f_char1 AS SIGNED INT),
13532
f_charbig = 'just inserted'
13533
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13535
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13537
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13538
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13540
SET new.f_int1 = old.f_int1 + @max_row,
13541
new.f_int2 = old.f_int2 - @max_row,
13542
new.f_charbig = '####updated per update trigger####';
13545
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13546
f_charbig = '####updated per update statement itself####';
13548
# check trigger-9 success: 1
13549
DROP TRIGGER trg_2;
13550
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13551
f_int2 = CAST(f_char1 AS SIGNED INT),
13552
f_charbig = CONCAT('===',f_char1,'===');
13553
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13555
SET new.f_int1 = new.f_int1 + @max_row,
13556
new.f_int2 = new.f_int2 - @max_row,
13557
new.f_charbig = '####updated per update trigger####';
13560
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13561
f_charbig = '####updated per update statement itself####';
13563
# check trigger-10 success: 1
13564
DROP TRIGGER trg_2;
13565
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13566
f_int2 = CAST(f_char1 AS SIGNED INT),
13567
f_charbig = CONCAT('===',f_char1,'===');
13568
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13570
SET new.f_int1 = @my_max1 + @counter,
13571
new.f_int2 = @my_min2 - @counter,
13572
new.f_charbig = '####updated per insert trigger####';
13573
SET @counter = @counter + 1;
13576
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13577
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13578
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13579
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13580
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13582
DROP TRIGGER trg_3;
13584
# check trigger-11 success: 1
13586
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13587
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13588
AND f_charbig = '####updated per insert trigger####';
13589
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13591
SET new.f_int1 = @my_max1 + @counter,
13592
new.f_int2 = @my_min2 - @counter,
13593
new.f_charbig = '####updated per insert trigger####';
13594
SET @counter = @counter + 1;
13597
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13598
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13599
SELECT CAST(f_int1 AS CHAR),
13600
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13601
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13603
DROP TRIGGER trg_3;
13605
# check trigger-12 success: 1
13607
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13608
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13609
AND f_charbig = '####updated per insert trigger####';
13611
Table Op Msg_type Msg_text
13612
test.t1 analyze status OK
13613
CHECK TABLE t1 EXTENDED;
13614
Table Op Msg_type Msg_text
13615
test.t1 check status OK
13616
CHECKSUM TABLE t1 EXTENDED;
13618
test.t1 <some_value>
13620
Table Op Msg_type Msg_text
13621
test.t1 optimize status OK
13622
# check layout success: 1
13623
REPAIR TABLE t1 EXTENDED;
13624
Table Op Msg_type Msg_text
13625
test.t1 repair note The storage engine for the table doesn't support repair
13626
# check layout success: 1
13629
# check TRUNCATE success: 1
13630
# check layout success: 1
13631
# End usability test (inc/partition_check.inc)
13638
f_charbig VARCHAR(1000)
13641
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
13642
(PARTITION part_1 VALUES LESS THAN (0)
13643
(SUBPARTITION subpart11, SUBPARTITION subpart12),
13644
PARTITION part_2 VALUES LESS THAN (5)
13645
(SUBPARTITION subpart21, SUBPARTITION subpart22),
13646
PARTITION part_3 VALUES LESS THAN (10)
13647
(SUBPARTITION subpart31, SUBPARTITION subpart32),
13648
PARTITION part_4 VALUES LESS THAN (2147483646)
13649
(SUBPARTITION subpart41, SUBPARTITION subpart42));
13650
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13651
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13652
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13653
ALTER TABLE t1 CHECK PARTITION part_1,part_2;
13654
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13655
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13656
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13657
# Start usability test (inc/partition_check.inc)
13659
SHOW CREATE TABLE t1;
13661
t1 CREATE TABLE `t1` (
13662
`f_int1` int(11) DEFAULT NULL,
13663
`f_int2` int(11) DEFAULT NULL,
13664
`f_char1` char(20) DEFAULT NULL,
13665
`f_char2` char(20) DEFAULT NULL,
13666
`f_charbig` varchar(1000) DEFAULT NULL
13667
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
13669
# check prerequisites-1 success: 1
13670
# check COUNT(*) success: 1
13671
# check MIN/MAX(f_int1) success: 1
13672
# check MIN/MAX(f_int2) success: 1
13673
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13674
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13675
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13676
WHERE f_int1 IN (2,3);
13677
# check prerequisites-3 success: 1
13678
DELETE FROM t1 WHERE f_charbig = 'delete me';
13679
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13680
# check read via f_int1 success: 1
13681
# check read via f_int2 success: 1
13683
# check multiple-1 success: 1
13684
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13686
# check multiple-2 success: 1
13687
INSERT INTO t1 SELECT * FROM t0_template
13688
WHERE MOD(f_int1,3) = 0;
13690
# check multiple-3 success: 1
13691
UPDATE t1 SET f_int1 = f_int1 + @max_row
13692
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13693
AND @max_row_div2 + @max_row_div4;
13695
# check multiple-4 success: 1
13697
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13698
AND @max_row_div2 + @max_row_div4 + @max_row;
13700
# check multiple-5 success: 1
13701
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13703
SET f_int1 = @cur_value , f_int2 = @cur_value,
13704
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13705
f_charbig = '#SINGLE#';
13707
# check single-1 success: 1
13708
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13710
SET f_int1 = @cur_value , f_int2 = @cur_value,
13711
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13712
f_charbig = '#SINGLE#';
13714
# check single-2 success: 1
13715
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13716
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13717
UPDATE t1 SET f_int1 = @cur_value2
13718
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13720
# check single-3 success: 1
13721
SET @cur_value1= -1;
13722
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13723
UPDATE t1 SET f_int1 = @cur_value1
13724
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13726
# check single-4 success: 1
13727
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13728
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13730
# check single-5 success: 1
13731
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13733
# check single-6 success: 1
13734
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13735
ERROR HY000: Table has no partition for value 2147483647
13736
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13737
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13738
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13739
f_charbig = '#NULL#';
13741
SET f_int1 = NULL , f_int2 = -@max_row,
13742
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13743
f_charbig = '#NULL#';
13744
# check null success: 1
13746
# check null-1 success: 1
13747
UPDATE t1 SET f_int1 = -@max_row
13748
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13749
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13751
# check null-2 success: 1
13752
UPDATE t1 SET f_int1 = NULL
13753
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13754
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13756
# check null-3 success: 1
13758
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13759
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13761
# check null-4 success: 1
13763
WHERE f_int1 = 0 AND f_int2 = 0
13764
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13765
AND f_charbig = '#NULL#';
13767
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13768
SELECT f_int1, f_int1, '', '', 'was inserted'
13769
FROM t0_template source_tab
13770
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13772
# check transactions-1 success: 1
13775
# check transactions-2 success: 1
13778
# check transactions-3 success: 1
13779
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13783
# check transactions-4 success: 1
13784
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13785
SELECT f_int1, f_int1, '', '', 'was inserted'
13786
FROM t0_template source_tab
13787
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13789
# check transactions-5 success: 1
13792
# check transactions-6 success: 1
13793
# INFO: Storage engine used for t1 seems to be transactional.
13796
# check transactions-7 success: 1
13797
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13799
SET @@session.sql_mode = 'traditional';
13800
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13801
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13802
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13803
'', '', 'was inserted' FROM t0_template
13804
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13805
ERROR 22012: Division by 0
13808
# check transactions-8 success: 1
13809
# INFO: Storage engine used for t1 seems to be able to revert
13810
# changes made by the failing statement.
13811
SET @@session.sql_mode = '';
13813
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13815
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13817
# check special-1 success: 1
13818
UPDATE t1 SET f_charbig = '';
13820
# check special-2 success: 1
13821
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13822
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13823
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13824
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13825
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13826
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13827
'just inserted' FROM t0_template
13828
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13829
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13831
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13832
f_charbig = 'updated by trigger'
13833
WHERE f_int1 = new.f_int1;
13835
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13836
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13837
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13839
# check trigger-1 success: 1
13840
DROP TRIGGER trg_1;
13841
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13842
f_int2 = CAST(f_char1 AS SIGNED INT),
13843
f_charbig = 'just inserted'
13844
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13846
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13847
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13848
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13849
'just inserted' FROM t0_template
13850
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13851
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13853
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13854
f_charbig = 'updated by trigger'
13855
WHERE f_int1 = new.f_int1;
13857
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13858
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13859
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13861
# check trigger-2 success: 1
13862
DROP TRIGGER trg_1;
13863
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13864
f_int2 = CAST(f_char1 AS SIGNED INT),
13865
f_charbig = 'just inserted'
13866
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13868
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13869
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13870
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13871
'just inserted' FROM t0_template
13872
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13873
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13875
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13876
f_charbig = 'updated by trigger'
13877
WHERE f_int1 = new.f_int1;
13879
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13880
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13882
# check trigger-3 success: 1
13883
DROP TRIGGER trg_1;
13884
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13885
f_int2 = CAST(f_char1 AS SIGNED INT),
13886
f_charbig = 'just inserted'
13887
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13889
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13890
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13891
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13892
'just inserted' FROM t0_template
13893
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13894
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13896
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13897
f_charbig = 'updated by trigger'
13898
WHERE f_int1 = - old.f_int1;
13900
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13901
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13903
# check trigger-4 success: 1
13904
DROP TRIGGER trg_1;
13905
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13906
f_int2 = CAST(f_char1 AS SIGNED INT),
13907
f_charbig = 'just inserted'
13908
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13910
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13911
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13912
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13913
'just inserted' FROM t0_template
13914
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13915
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13917
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13918
f_charbig = 'updated by trigger'
13919
WHERE f_int1 = new.f_int1;
13921
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13922
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13924
# check trigger-5 success: 1
13925
DROP TRIGGER trg_1;
13926
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13927
f_int2 = CAST(f_char1 AS SIGNED INT),
13928
f_charbig = 'just inserted'
13929
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13931
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13932
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13933
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13934
'just inserted' FROM t0_template
13935
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13936
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13938
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13939
f_charbig = 'updated by trigger'
13940
WHERE f_int1 = - old.f_int1;
13942
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13943
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13945
# check trigger-6 success: 1
13946
DROP TRIGGER trg_1;
13947
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13948
f_int2 = CAST(f_char1 AS SIGNED INT),
13949
f_charbig = 'just inserted'
13950
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13952
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13953
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13954
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13955
'just inserted' FROM t0_template
13956
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13957
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13959
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13960
f_charbig = 'updated by trigger'
13961
WHERE f_int1 = - old.f_int1;
13964
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13966
# check trigger-7 success: 1
13967
DROP TRIGGER trg_1;
13968
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13969
f_int2 = CAST(f_char1 AS SIGNED INT),
13970
f_charbig = 'just inserted'
13971
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13973
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13974
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13975
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13976
'just inserted' FROM t0_template
13977
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13978
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13980
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13981
f_charbig = 'updated by trigger'
13982
WHERE f_int1 = - old.f_int1;
13985
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13987
# check trigger-8 success: 1
13988
DROP TRIGGER trg_1;
13989
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13990
f_int2 = CAST(f_char1 AS SIGNED INT),
13991
f_charbig = 'just inserted'
13992
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13994
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13996
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13997
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13999
SET new.f_int1 = old.f_int1 + @max_row,
14000
new.f_int2 = old.f_int2 - @max_row,
14001
new.f_charbig = '####updated per update trigger####';
14004
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14005
f_charbig = '####updated per update statement itself####';
14007
# check trigger-9 success: 1
14008
DROP TRIGGER trg_2;
14009
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14010
f_int2 = CAST(f_char1 AS SIGNED INT),
14011
f_charbig = CONCAT('===',f_char1,'===');
14012
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14014
SET new.f_int1 = new.f_int1 + @max_row,
14015
new.f_int2 = new.f_int2 - @max_row,
14016
new.f_charbig = '####updated per update trigger####';
14019
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14020
f_charbig = '####updated per update statement itself####';
14022
# check trigger-10 success: 1
14023
DROP TRIGGER trg_2;
14024
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14025
f_int2 = CAST(f_char1 AS SIGNED INT),
14026
f_charbig = CONCAT('===',f_char1,'===');
14027
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14029
SET new.f_int1 = @my_max1 + @counter,
14030
new.f_int2 = @my_min2 - @counter,
14031
new.f_charbig = '####updated per insert trigger####';
14032
SET @counter = @counter + 1;
14035
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14036
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14037
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14038
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14041
DROP TRIGGER trg_3;
14043
# check trigger-11 success: 1
14045
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14046
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14047
AND f_charbig = '####updated per insert trigger####';
14048
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14050
SET new.f_int1 = @my_max1 + @counter,
14051
new.f_int2 = @my_min2 - @counter,
14052
new.f_charbig = '####updated per insert trigger####';
14053
SET @counter = @counter + 1;
14056
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14057
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14058
SELECT CAST(f_int1 AS CHAR),
14059
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14060
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14062
DROP TRIGGER trg_3;
14064
# check trigger-12 success: 1
14066
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14067
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14068
AND f_charbig = '####updated per insert trigger####';
14070
Table Op Msg_type Msg_text
14071
test.t1 analyze status OK
14072
CHECK TABLE t1 EXTENDED;
14073
Table Op Msg_type Msg_text
14074
test.t1 check status OK
14075
CHECKSUM TABLE t1 EXTENDED;
14077
test.t1 <some_value>
14079
Table Op Msg_type Msg_text
14080
test.t1 optimize status OK
14081
# check layout success: 1
14082
REPAIR TABLE t1 EXTENDED;
14083
Table Op Msg_type Msg_text
14084
test.t1 repair note The storage engine for the table doesn't support repair
14085
# check layout success: 1
14088
# check TRUNCATE success: 1
14089
# check layout success: 1
14090
# End usability test (inc/partition_check.inc)
14097
f_charbig VARCHAR(1000)
14100
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
14101
(PARTITION part_1 VALUES IN (0)
14102
(SUBPARTITION sp11, SUBPARTITION sp12),
14103
PARTITION part_2 VALUES IN (1)
14104
(SUBPARTITION sp21, SUBPARTITION sp22),
14105
PARTITION part_3 VALUES IN (2)
14106
(SUBPARTITION sp31, SUBPARTITION sp32),
14107
PARTITION part_4 VALUES IN (NULL)
14108
(SUBPARTITION sp41, SUBPARTITION sp42));
14109
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14110
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14111
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14112
ALTER TABLE t1 CHECK PARTITION part_1,part_2;
14113
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14114
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14115
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14116
# Start usability test (inc/partition_check.inc)
14118
SHOW CREATE TABLE t1;
14120
t1 CREATE TABLE `t1` (
14121
`f_int1` int(11) DEFAULT NULL,
14122
`f_int2` int(11) DEFAULT NULL,
14123
`f_char1` char(20) DEFAULT NULL,
14124
`f_char2` char(20) DEFAULT NULL,
14125
`f_charbig` varchar(1000) DEFAULT NULL
14126
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
14128
# check prerequisites-1 success: 1
14129
# check COUNT(*) success: 1
14130
# check MIN/MAX(f_int1) success: 1
14131
# check MIN/MAX(f_int2) success: 1
14132
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14133
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14134
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14135
WHERE f_int1 IN (2,3);
14136
# check prerequisites-3 success: 1
14137
DELETE FROM t1 WHERE f_charbig = 'delete me';
14138
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14139
# check read via f_int1 success: 1
14140
# check read via f_int2 success: 1
14142
# check multiple-1 success: 1
14143
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14145
# check multiple-2 success: 1
14146
INSERT INTO t1 SELECT * FROM t0_template
14147
WHERE MOD(f_int1,3) = 0;
14149
# check multiple-3 success: 1
14150
UPDATE t1 SET f_int1 = f_int1 + @max_row
14151
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14152
AND @max_row_div2 + @max_row_div4;
14154
# check multiple-4 success: 1
14156
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14157
AND @max_row_div2 + @max_row_div4 + @max_row;
14159
# check multiple-5 success: 1
14160
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14162
SET f_int1 = @cur_value , f_int2 = @cur_value,
14163
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14164
f_charbig = '#SINGLE#';
14166
# check single-1 success: 1
14167
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14169
SET f_int1 = @cur_value , f_int2 = @cur_value,
14170
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14171
f_charbig = '#SINGLE#';
14173
# check single-2 success: 1
14174
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14175
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14176
UPDATE t1 SET f_int1 = @cur_value2
14177
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14179
# check single-3 success: 1
14180
SET @cur_value1= -1;
14181
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14182
UPDATE t1 SET f_int1 = @cur_value1
14183
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14185
# check single-4 success: 1
14186
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14187
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14189
# check single-5 success: 1
14190
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14192
# check single-6 success: 1
14193
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14195
# check single-7 success: 1
14196
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14197
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14198
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14199
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14200
f_charbig = '#NULL#';
14202
SET f_int1 = NULL , f_int2 = -@max_row,
14203
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14204
f_charbig = '#NULL#';
14205
# check null success: 1
14207
# check null-1 success: 1
14208
UPDATE t1 SET f_int1 = -@max_row
14209
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14210
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14212
# check null-2 success: 1
14213
UPDATE t1 SET f_int1 = NULL
14214
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14215
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14217
# check null-3 success: 1
14219
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14220
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14222
# check null-4 success: 1
14224
WHERE f_int1 = 0 AND f_int2 = 0
14225
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14226
AND f_charbig = '#NULL#';
14228
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14229
SELECT f_int1, f_int1, '', '', 'was inserted'
14230
FROM t0_template source_tab
14231
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14233
# check transactions-1 success: 1
14236
# check transactions-2 success: 1
14239
# check transactions-3 success: 1
14240
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14244
# check transactions-4 success: 1
14245
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14246
SELECT f_int1, f_int1, '', '', 'was inserted'
14247
FROM t0_template source_tab
14248
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14250
# check transactions-5 success: 1
14253
# check transactions-6 success: 1
14254
# INFO: Storage engine used for t1 seems to be transactional.
14257
# check transactions-7 success: 1
14258
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14260
SET @@session.sql_mode = 'traditional';
14261
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14262
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14263
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14264
'', '', 'was inserted' FROM t0_template
14265
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14266
ERROR 22012: Division by 0
14269
# check transactions-8 success: 1
14270
# INFO: Storage engine used for t1 seems to be able to revert
14271
# changes made by the failing statement.
14272
SET @@session.sql_mode = '';
14274
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14276
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14278
# check special-1 success: 1
14279
UPDATE t1 SET f_charbig = '';
14281
# check special-2 success: 1
14282
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14283
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14284
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14285
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14286
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14287
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14288
'just inserted' FROM t0_template
14289
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14290
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14292
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14293
f_charbig = 'updated by trigger'
14294
WHERE f_int1 = new.f_int1;
14296
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14297
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14298
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14300
# check trigger-1 success: 1
14301
DROP TRIGGER trg_1;
14302
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14303
f_int2 = CAST(f_char1 AS SIGNED INT),
14304
f_charbig = 'just inserted'
14305
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14307
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14308
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14309
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14310
'just inserted' FROM t0_template
14311
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14312
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14314
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14315
f_charbig = 'updated by trigger'
14316
WHERE f_int1 = new.f_int1;
14318
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14319
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14320
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14322
# check trigger-2 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;
14330
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14331
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14332
'just inserted' FROM t0_template
14333
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14334
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14336
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14337
f_charbig = 'updated by trigger'
14338
WHERE f_int1 = new.f_int1;
14340
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14341
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14343
# check trigger-3 success: 1
14344
DROP TRIGGER trg_1;
14345
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14346
f_int2 = CAST(f_char1 AS SIGNED INT),
14347
f_charbig = 'just inserted'
14348
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14350
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14351
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14352
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14353
'just inserted' FROM t0_template
14354
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14355
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14357
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14358
f_charbig = 'updated by trigger'
14359
WHERE f_int1 = - old.f_int1;
14361
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14362
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14364
# check trigger-4 success: 1
14365
DROP TRIGGER trg_1;
14366
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14367
f_int2 = CAST(f_char1 AS SIGNED INT),
14368
f_charbig = 'just inserted'
14369
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14371
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14372
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14373
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14374
'just inserted' FROM t0_template
14375
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14376
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14378
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14379
f_charbig = 'updated by trigger'
14380
WHERE f_int1 = new.f_int1;
14382
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14383
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14385
# check trigger-5 success: 1
14386
DROP TRIGGER trg_1;
14387
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14388
f_int2 = CAST(f_char1 AS SIGNED INT),
14389
f_charbig = 'just inserted'
14390
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14392
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14393
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14394
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14395
'just inserted' FROM t0_template
14396
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14397
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14399
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14400
f_charbig = 'updated by trigger'
14401
WHERE f_int1 = - old.f_int1;
14403
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14404
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14406
# check trigger-6 success: 1
14407
DROP TRIGGER trg_1;
14408
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14409
f_int2 = CAST(f_char1 AS SIGNED INT),
14410
f_charbig = 'just inserted'
14411
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14413
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14414
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14415
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14416
'just inserted' FROM t0_template
14417
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14418
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14420
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14421
f_charbig = 'updated by trigger'
14422
WHERE f_int1 = - old.f_int1;
14425
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14427
# check trigger-7 success: 1
14428
DROP TRIGGER trg_1;
14429
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14430
f_int2 = CAST(f_char1 AS SIGNED INT),
14431
f_charbig = 'just inserted'
14432
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14434
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14435
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14436
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14437
'just inserted' FROM t0_template
14438
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14439
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14441
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14442
f_charbig = 'updated by trigger'
14443
WHERE f_int1 = - old.f_int1;
14446
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14448
# check trigger-8 success: 1
14449
DROP TRIGGER trg_1;
14450
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14451
f_int2 = CAST(f_char1 AS SIGNED INT),
14452
f_charbig = 'just inserted'
14453
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14455
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14457
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14458
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14460
SET new.f_int1 = old.f_int1 + @max_row,
14461
new.f_int2 = old.f_int2 - @max_row,
14462
new.f_charbig = '####updated per update trigger####';
14465
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14466
f_charbig = '####updated per update statement itself####';
14468
# check trigger-9 success: 1
14469
DROP TRIGGER trg_2;
14470
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14471
f_int2 = CAST(f_char1 AS SIGNED INT),
14472
f_charbig = CONCAT('===',f_char1,'===');
14473
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14475
SET new.f_int1 = new.f_int1 + @max_row,
14476
new.f_int2 = new.f_int2 - @max_row,
14477
new.f_charbig = '####updated per update trigger####';
14480
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14481
f_charbig = '####updated per update statement itself####';
14483
# check trigger-10 success: 1
14484
DROP TRIGGER trg_2;
14485
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14486
f_int2 = CAST(f_char1 AS SIGNED INT),
14487
f_charbig = CONCAT('===',f_char1,'===');
14488
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14490
SET new.f_int1 = @my_max1 + @counter,
14491
new.f_int2 = @my_min2 - @counter,
14492
new.f_charbig = '####updated per insert trigger####';
14493
SET @counter = @counter + 1;
14496
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14497
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14498
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14499
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14500
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14502
DROP TRIGGER trg_3;
14504
# check trigger-11 success: 1
14506
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14507
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14508
AND f_charbig = '####updated per insert trigger####';
14509
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14511
SET new.f_int1 = @my_max1 + @counter,
14512
new.f_int2 = @my_min2 - @counter,
14513
new.f_charbig = '####updated per insert trigger####';
14514
SET @counter = @counter + 1;
14517
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14518
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14519
SELECT CAST(f_int1 AS CHAR),
14520
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14521
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14523
DROP TRIGGER trg_3;
14525
# check trigger-12 success: 1
14527
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14528
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14529
AND f_charbig = '####updated per insert trigger####';
14531
Table Op Msg_type Msg_text
14532
test.t1 analyze status OK
14533
CHECK TABLE t1 EXTENDED;
14534
Table Op Msg_type Msg_text
14535
test.t1 check status OK
14536
CHECKSUM TABLE t1 EXTENDED;
14538
test.t1 <some_value>
14540
Table Op Msg_type Msg_text
14541
test.t1 optimize status OK
14542
# check layout success: 1
14543
REPAIR TABLE t1 EXTENDED;
14544
Table Op Msg_type Msg_text
14545
test.t1 repair note The storage engine for the table doesn't support repair
14546
# check layout success: 1
14549
# check TRUNCATE success: 1
14550
# check layout success: 1
14551
# End usability test (inc/partition_check.inc)
14558
f_charbig VARCHAR(1000)
14561
PARTITION BY LIST(ABS(MOD(f_int1,2)))
14562
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
14563
(PARTITION part_1 VALUES IN (0),
14564
PARTITION part_2 VALUES IN (1),
14565
PARTITION part_3 VALUES IN (NULL));
14566
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14567
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14568
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14569
ALTER TABLE t1 CHECK PARTITION part_1,part_2;
14570
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14571
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14572
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14573
# Start usability test (inc/partition_check.inc)
14575
SHOW CREATE TABLE t1;
14577
t1 CREATE TABLE `t1` (
14578
`f_int1` int(11) DEFAULT NULL,
14579
`f_int2` int(11) DEFAULT NULL,
14580
`f_char1` char(20) DEFAULT NULL,
14581
`f_char2` char(20) DEFAULT NULL,
14582
`f_charbig` varchar(1000) DEFAULT NULL
14583
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */
14585
# check prerequisites-1 success: 1
14586
# check COUNT(*) success: 1
14587
# check MIN/MAX(f_int1) success: 1
14588
# check MIN/MAX(f_int2) success: 1
14589
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14590
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14591
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14592
WHERE f_int1 IN (2,3);
14593
# check prerequisites-3 success: 1
14594
DELETE FROM t1 WHERE f_charbig = 'delete me';
14595
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14596
# check read via f_int1 success: 1
14597
# check read via f_int2 success: 1
14599
# check multiple-1 success: 1
14600
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14602
# check multiple-2 success: 1
14603
INSERT INTO t1 SELECT * FROM t0_template
14604
WHERE MOD(f_int1,3) = 0;
14606
# check multiple-3 success: 1
14607
UPDATE t1 SET f_int1 = f_int1 + @max_row
14608
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14609
AND @max_row_div2 + @max_row_div4;
14611
# check multiple-4 success: 1
14613
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14614
AND @max_row_div2 + @max_row_div4 + @max_row;
14616
# check multiple-5 success: 1
14617
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14619
SET f_int1 = @cur_value , f_int2 = @cur_value,
14620
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14621
f_charbig = '#SINGLE#';
14623
# check single-1 success: 1
14624
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14626
SET f_int1 = @cur_value , f_int2 = @cur_value,
14627
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14628
f_charbig = '#SINGLE#';
14630
# check single-2 success: 1
14631
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14632
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14633
UPDATE t1 SET f_int1 = @cur_value2
14634
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14636
# check single-3 success: 1
14637
SET @cur_value1= -1;
14638
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14639
UPDATE t1 SET f_int1 = @cur_value1
14640
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14642
# check single-4 success: 1
14643
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14644
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14646
# check single-5 success: 1
14647
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14649
# check single-6 success: 1
14650
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14652
# check single-7 success: 1
14653
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14654
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14655
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14656
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14657
f_charbig = '#NULL#';
14659
SET f_int1 = NULL , f_int2 = -@max_row,
14660
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14661
f_charbig = '#NULL#';
14662
# check null success: 1
14664
# check null-1 success: 1
14665
UPDATE t1 SET f_int1 = -@max_row
14666
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14667
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14669
# check null-2 success: 1
14670
UPDATE t1 SET f_int1 = NULL
14671
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14672
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14674
# check null-3 success: 1
14676
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14677
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14679
# check null-4 success: 1
14681
WHERE f_int1 = 0 AND f_int2 = 0
14682
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14683
AND f_charbig = '#NULL#';
14685
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14686
SELECT f_int1, f_int1, '', '', 'was inserted'
14687
FROM t0_template source_tab
14688
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14690
# check transactions-1 success: 1
14693
# check transactions-2 success: 1
14696
# check transactions-3 success: 1
14697
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14701
# check transactions-4 success: 1
14702
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14703
SELECT f_int1, f_int1, '', '', 'was inserted'
14704
FROM t0_template source_tab
14705
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14707
# check transactions-5 success: 1
14710
# check transactions-6 success: 1
14711
# INFO: Storage engine used for t1 seems to be transactional.
14714
# check transactions-7 success: 1
14715
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14717
SET @@session.sql_mode = 'traditional';
14718
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14719
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14720
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14721
'', '', 'was inserted' FROM t0_template
14722
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14723
ERROR 22012: Division by 0
14726
# check transactions-8 success: 1
14727
# INFO: Storage engine used for t1 seems to be able to revert
14728
# changes made by the failing statement.
14729
SET @@session.sql_mode = '';
14731
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14733
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14735
# check special-1 success: 1
14736
UPDATE t1 SET f_charbig = '';
14738
# check special-2 success: 1
14739
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14740
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14741
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14743
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14744
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14745
'just inserted' FROM t0_template
14746
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14747
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14749
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14750
f_charbig = 'updated by trigger'
14751
WHERE f_int1 = new.f_int1;
14753
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14754
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14755
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14757
# check trigger-1 success: 1
14758
DROP TRIGGER trg_1;
14759
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14760
f_int2 = CAST(f_char1 AS SIGNED INT),
14761
f_charbig = 'just inserted'
14762
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14764
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14765
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14766
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14767
'just inserted' FROM t0_template
14768
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14769
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14771
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14772
f_charbig = 'updated by trigger'
14773
WHERE f_int1 = new.f_int1;
14775
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14776
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14779
# check trigger-2 success: 1
14780
DROP TRIGGER trg_1;
14781
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14782
f_int2 = CAST(f_char1 AS SIGNED INT),
14783
f_charbig = 'just inserted'
14784
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14786
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14787
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14788
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14789
'just inserted' FROM t0_template
14790
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14791
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14793
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14794
f_charbig = 'updated by trigger'
14795
WHERE f_int1 = new.f_int1;
14797
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14798
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14800
# check trigger-3 success: 1
14801
DROP TRIGGER trg_1;
14802
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14803
f_int2 = CAST(f_char1 AS SIGNED INT),
14804
f_charbig = 'just inserted'
14805
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14807
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14808
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14809
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14810
'just inserted' FROM t0_template
14811
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14812
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14814
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14815
f_charbig = 'updated by trigger'
14816
WHERE f_int1 = - old.f_int1;
14818
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14819
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14821
# check trigger-4 success: 1
14822
DROP TRIGGER trg_1;
14823
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14824
f_int2 = CAST(f_char1 AS SIGNED INT),
14825
f_charbig = 'just inserted'
14826
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14828
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14829
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14830
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14831
'just inserted' FROM t0_template
14832
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14833
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14835
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14836
f_charbig = 'updated by trigger'
14837
WHERE f_int1 = new.f_int1;
14839
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14840
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14842
# check trigger-5 success: 1
14843
DROP TRIGGER trg_1;
14844
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14845
f_int2 = CAST(f_char1 AS SIGNED INT),
14846
f_charbig = 'just inserted'
14847
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14849
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14850
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14851
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14852
'just inserted' FROM t0_template
14853
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14854
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14856
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14857
f_charbig = 'updated by trigger'
14858
WHERE f_int1 = - old.f_int1;
14860
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14861
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14863
# check trigger-6 success: 1
14864
DROP TRIGGER trg_1;
14865
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14866
f_int2 = CAST(f_char1 AS SIGNED INT),
14867
f_charbig = 'just inserted'
14868
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14870
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14871
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14872
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14873
'just inserted' FROM t0_template
14874
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14875
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14877
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14878
f_charbig = 'updated by trigger'
14879
WHERE f_int1 = - old.f_int1;
14882
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14884
# check trigger-7 success: 1
14885
DROP TRIGGER trg_1;
14886
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14887
f_int2 = CAST(f_char1 AS SIGNED INT),
14888
f_charbig = 'just inserted'
14889
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14891
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14892
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14893
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14894
'just inserted' FROM t0_template
14895
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14896
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14898
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14899
f_charbig = 'updated by trigger'
14900
WHERE f_int1 = - old.f_int1;
14903
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14905
# check trigger-8 success: 1
14906
DROP TRIGGER trg_1;
14907
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14908
f_int2 = CAST(f_char1 AS SIGNED INT),
14909
f_charbig = 'just inserted'
14910
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14912
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14914
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14915
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14917
SET new.f_int1 = old.f_int1 + @max_row,
14918
new.f_int2 = old.f_int2 - @max_row,
14919
new.f_charbig = '####updated per update trigger####';
14922
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14923
f_charbig = '####updated per update statement itself####';
14925
# check trigger-9 success: 1
14926
DROP TRIGGER trg_2;
14927
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14928
f_int2 = CAST(f_char1 AS SIGNED INT),
14929
f_charbig = CONCAT('===',f_char1,'===');
14930
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14932
SET new.f_int1 = new.f_int1 + @max_row,
14933
new.f_int2 = new.f_int2 - @max_row,
14934
new.f_charbig = '####updated per update trigger####';
14937
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14938
f_charbig = '####updated per update statement itself####';
14940
# check trigger-10 success: 1
14941
DROP TRIGGER trg_2;
14942
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14943
f_int2 = CAST(f_char1 AS SIGNED INT),
14944
f_charbig = CONCAT('===',f_char1,'===');
14945
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14947
SET new.f_int1 = @my_max1 + @counter,
14948
new.f_int2 = @my_min2 - @counter,
14949
new.f_charbig = '####updated per insert trigger####';
14950
SET @counter = @counter + 1;
14953
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14954
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14955
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14956
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14957
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14959
DROP TRIGGER trg_3;
14961
# check trigger-11 success: 1
14963
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14964
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14965
AND f_charbig = '####updated per insert trigger####';
14966
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14968
SET new.f_int1 = @my_max1 + @counter,
14969
new.f_int2 = @my_min2 - @counter,
14970
new.f_charbig = '####updated per insert trigger####';
14971
SET @counter = @counter + 1;
14974
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14975
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14976
SELECT CAST(f_int1 AS CHAR),
14977
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14978
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14980
DROP TRIGGER trg_3;
14982
# check trigger-12 success: 1
14984
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14985
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14986
AND f_charbig = '####updated per insert trigger####';
14988
Table Op Msg_type Msg_text
14989
test.t1 analyze status OK
14990
CHECK TABLE t1 EXTENDED;
14991
Table Op Msg_type Msg_text
14992
test.t1 check status OK
14993
CHECKSUM TABLE t1 EXTENDED;
14995
test.t1 <some_value>
14997
Table Op Msg_type Msg_text
14998
test.t1 optimize status OK
14999
# check layout success: 1
15000
REPAIR TABLE t1 EXTENDED;
15001
Table Op Msg_type Msg_text
15002
test.t1 repair note The storage engine for the table doesn't support repair
15003
# check layout success: 1
15006
# check TRUNCATE success: 1
15007
# check layout success: 1
15008
# End usability test (inc/partition_check.inc)
15010
# 2.3 ALTER ... CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
15011
DROP TABLE IF EXISTS t1;
15017
f_charbig VARCHAR(1000)
15020
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
15021
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15022
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15023
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15024
ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
15025
ERROR HY000: Error in list of partitions to CHECK
15032
f_charbig VARCHAR(1000)
15035
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
15036
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15037
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15038
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15039
ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
15040
ERROR HY000: Error in list of partitions to CHECK
15047
f_charbig VARCHAR(1000)
15050
PARTITION BY LIST(MOD(f_int1,4))
15051
(PARTITION part_3 VALUES IN (-3),
15052
PARTITION part_2 VALUES IN (-2),
15053
PARTITION part_1 VALUES IN (-1),
15054
PARTITION part_N VALUES IN (NULL),
15055
PARTITION part0 VALUES IN (0),
15056
PARTITION part1 VALUES IN (1),
15057
PARTITION part2 VALUES IN (2),
15058
PARTITION part3 VALUES IN (3));
15059
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15060
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15061
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15062
ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
15063
ERROR HY000: Error in list of partitions to CHECK
15070
f_charbig VARCHAR(1000)
15073
PARTITION BY RANGE(f_int1)
15074
(PARTITION parta VALUES LESS THAN (0),
15075
PARTITION part_1 VALUES LESS THAN (5),
15076
PARTITION part_2 VALUES LESS THAN (10),
15077
PARTITION part_3 VALUES LESS THAN (10 + 5),
15078
PARTITION part_4 VALUES LESS THAN (20),
15079
PARTITION part_5 VALUES LESS THAN (2147483646));
15080
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15081
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15082
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15083
ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
15084
ERROR HY000: Error in list of partitions to CHECK
15091
f_charbig VARCHAR(1000)
15094
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
15095
(PARTITION part_1 VALUES LESS THAN (0),
15096
PARTITION part_2 VALUES LESS THAN (5),
15097
PARTITION part_3 VALUES LESS THAN (10),
15098
PARTITION part_4 VALUES LESS THAN (2147483646));
15099
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15100
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15101
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15102
ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
15103
ERROR HY000: Error in list of partitions to CHECK
15110
f_charbig VARCHAR(1000)
15113
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
15114
(PARTITION part_1 VALUES LESS THAN (0)
15115
(SUBPARTITION subpart11, SUBPARTITION subpart12),
15116
PARTITION part_2 VALUES LESS THAN (5)
15117
(SUBPARTITION subpart21, SUBPARTITION subpart22),
15118
PARTITION part_3 VALUES LESS THAN (10)
15119
(SUBPARTITION subpart31, SUBPARTITION subpart32),
15120
PARTITION part_4 VALUES LESS THAN (2147483646)
15121
(SUBPARTITION subpart41, SUBPARTITION subpart42));
15122
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15123
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15124
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15125
ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
15126
ERROR HY000: Error in list of partitions to CHECK
15133
f_charbig VARCHAR(1000)
15136
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
15137
(PARTITION part_1 VALUES IN (0)
15138
(SUBPARTITION sp11, SUBPARTITION sp12),
15139
PARTITION part_2 VALUES IN (1)
15140
(SUBPARTITION sp21, SUBPARTITION sp22),
15141
PARTITION part_3 VALUES IN (2)
15142
(SUBPARTITION sp31, SUBPARTITION sp32),
15143
PARTITION part_4 VALUES IN (NULL)
15144
(SUBPARTITION sp41, SUBPARTITION sp42));
15145
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15146
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15147
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15148
ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
15149
ERROR HY000: Error in list of partitions to CHECK
15156
f_charbig VARCHAR(1000)
15159
PARTITION BY LIST(ABS(MOD(f_int1,2)))
15160
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
15161
(PARTITION part_1 VALUES IN (0),
15162
PARTITION part_2 VALUES IN (1),
15163
PARTITION part_3 VALUES IN (NULL));
15164
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15165
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15166
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15167
ALTER TABLE t1 CHECK PARTITION part_1,part_2,part_5,part_6,part_10;
15168
ERROR HY000: Error in list of partitions to CHECK
15170
# 2.4 ALTER ... CHECK PARTITION part_1,part_1,part_1;
15171
DROP TABLE IF EXISTS t1;
15177
f_charbig VARCHAR(1000)
15180
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
15181
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15182
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15183
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15184
ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
15185
ERROR HY000: Error in list of partitions to CHECK
15192
f_charbig VARCHAR(1000)
15195
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
15196
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15197
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15198
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15199
ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
15200
ERROR HY000: Error in list of partitions to CHECK
15207
f_charbig VARCHAR(1000)
15210
PARTITION BY LIST(MOD(f_int1,4))
15211
(PARTITION part_3 VALUES IN (-3),
15212
PARTITION part_2 VALUES IN (-2),
15213
PARTITION part_1 VALUES IN (-1),
15214
PARTITION part_N VALUES IN (NULL),
15215
PARTITION part0 VALUES IN (0),
15216
PARTITION part1 VALUES IN (1),
15217
PARTITION part2 VALUES IN (2),
15218
PARTITION part3 VALUES IN (3));
15219
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15220
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15221
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15222
ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
15223
ERROR HY000: Error in list of partitions to CHECK
15230
f_charbig VARCHAR(1000)
15233
PARTITION BY RANGE(f_int1)
15234
(PARTITION parta VALUES LESS THAN (0),
15235
PARTITION part_1 VALUES LESS THAN (5),
15236
PARTITION part_2 VALUES LESS THAN (10),
15237
PARTITION part_3 VALUES LESS THAN (10 + 5),
15238
PARTITION part_4 VALUES LESS THAN (20),
15239
PARTITION part_5 VALUES LESS THAN (2147483646));
15240
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15241
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15242
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15243
ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
15244
ERROR HY000: Error in list of partitions to CHECK
15251
f_charbig VARCHAR(1000)
15254
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
15255
(PARTITION part_1 VALUES LESS THAN (0),
15256
PARTITION part_2 VALUES LESS THAN (5),
15257
PARTITION part_3 VALUES LESS THAN (10),
15258
PARTITION part_4 VALUES LESS THAN (2147483646));
15259
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15260
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15261
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15262
ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
15263
ERROR HY000: Error in list of partitions to CHECK
15270
f_charbig VARCHAR(1000)
15273
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
15274
(PARTITION part_1 VALUES LESS THAN (0)
15275
(SUBPARTITION subpart11, SUBPARTITION subpart12),
15276
PARTITION part_2 VALUES LESS THAN (5)
15277
(SUBPARTITION subpart21, SUBPARTITION subpart22),
15278
PARTITION part_3 VALUES LESS THAN (10)
15279
(SUBPARTITION subpart31, SUBPARTITION subpart32),
15280
PARTITION part_4 VALUES LESS THAN (2147483646)
15281
(SUBPARTITION subpart41, SUBPARTITION subpart42));
15282
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15283
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15284
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15285
ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
15286
ERROR HY000: Error in list of partitions to CHECK
15293
f_charbig VARCHAR(1000)
15296
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
15297
(PARTITION part_1 VALUES IN (0)
15298
(SUBPARTITION sp11, SUBPARTITION sp12),
15299
PARTITION part_2 VALUES IN (1)
15300
(SUBPARTITION sp21, SUBPARTITION sp22),
15301
PARTITION part_3 VALUES IN (2)
15302
(SUBPARTITION sp31, SUBPARTITION sp32),
15303
PARTITION part_4 VALUES IN (NULL)
15304
(SUBPARTITION sp41, SUBPARTITION sp42));
15305
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15306
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15307
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15308
ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
15309
ERROR HY000: Error in list of partitions to CHECK
15316
f_charbig VARCHAR(1000)
15319
PARTITION BY LIST(ABS(MOD(f_int1,2)))
15320
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
15321
(PARTITION part_1 VALUES IN (0),
15322
PARTITION part_2 VALUES IN (1),
15323
PARTITION part_3 VALUES IN (NULL));
15324
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15325
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15326
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15327
ALTER TABLE t1 CHECK PARTITION part_1,part_1,part_1;
15328
ERROR HY000: Error in list of partitions to CHECK
15330
#------------------------------------------------------------------------
15331
# 3 ALTER ... OPTIMIZE PARTITION
15332
#------------------------------------------------------------------------
15333
# 3.1 ALTER ... OPTIMIZE PARTITION part_1;
15334
DROP TABLE IF EXISTS t1;
15340
f_charbig VARCHAR(1000)
15343
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
15344
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15345
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15346
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15347
ALTER TABLE t1 OPTIMIZE PARTITION part_1;
15348
ERROR HY000: Got error -7 from storage engine
15355
f_charbig VARCHAR(1000)
15358
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
15359
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15360
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15361
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15362
ALTER TABLE t1 OPTIMIZE PARTITION part_1;
15363
ERROR HY000: Got error -7 from storage engine
15370
f_charbig VARCHAR(1000)
15373
PARTITION BY LIST(MOD(f_int1,4))
15374
(PARTITION part_3 VALUES IN (-3),
15375
PARTITION part_2 VALUES IN (-2),
15376
PARTITION part_1 VALUES IN (-1),
15377
PARTITION part_N VALUES IN (NULL),
15378
PARTITION part0 VALUES IN (0),
15379
PARTITION part1 VALUES IN (1),
15380
PARTITION part2 VALUES IN (2),
15381
PARTITION part3 VALUES IN (3));
15382
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15383
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15384
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15385
ALTER TABLE t1 OPTIMIZE PARTITION part_1;
15386
ERROR HY000: Got error -7 from storage engine
15393
f_charbig VARCHAR(1000)
15396
PARTITION BY RANGE(f_int1)
15397
(PARTITION parta VALUES LESS THAN (0),
15398
PARTITION part_1 VALUES LESS THAN (5),
15399
PARTITION part_2 VALUES LESS THAN (10),
15400
PARTITION part_3 VALUES LESS THAN (10 + 5),
15401
PARTITION part_4 VALUES LESS THAN (20),
15402
PARTITION part_5 VALUES LESS THAN (2147483646));
15403
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15404
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15405
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15406
ALTER TABLE t1 OPTIMIZE PARTITION part_1;
15407
ERROR HY000: Got error -7 from storage engine
15414
f_charbig VARCHAR(1000)
15417
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
15418
(PARTITION part_1 VALUES LESS THAN (0),
15419
PARTITION part_2 VALUES LESS THAN (5),
15420
PARTITION part_3 VALUES LESS THAN (10),
15421
PARTITION part_4 VALUES LESS THAN (2147483646));
15422
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15423
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15424
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15425
ALTER TABLE t1 OPTIMIZE PARTITION part_1;
15426
ERROR HY000: Got error -7 from storage engine
15433
f_charbig VARCHAR(1000)
15436
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
15437
(PARTITION part_1 VALUES LESS THAN (0)
15438
(SUBPARTITION subpart11, SUBPARTITION subpart12),
15439
PARTITION part_2 VALUES LESS THAN (5)
15440
(SUBPARTITION subpart21, SUBPARTITION subpart22),
15441
PARTITION part_3 VALUES LESS THAN (10)
15442
(SUBPARTITION subpart31, SUBPARTITION subpart32),
15443
PARTITION part_4 VALUES LESS THAN (2147483646)
15444
(SUBPARTITION subpart41, SUBPARTITION subpart42));
15445
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15446
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15447
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15448
ALTER TABLE t1 OPTIMIZE PARTITION part_1;
15449
ERROR HY000: Got error -7 from storage engine
15456
f_charbig VARCHAR(1000)
15459
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
15460
(PARTITION part_1 VALUES IN (0)
15461
(SUBPARTITION sp11, SUBPARTITION sp12),
15462
PARTITION part_2 VALUES IN (1)
15463
(SUBPARTITION sp21, SUBPARTITION sp22),
15464
PARTITION part_3 VALUES IN (2)
15465
(SUBPARTITION sp31, SUBPARTITION sp32),
15466
PARTITION part_4 VALUES IN (NULL)
15467
(SUBPARTITION sp41, SUBPARTITION sp42));
15468
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15469
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15470
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15471
ALTER TABLE t1 OPTIMIZE PARTITION part_1;
15472
ERROR HY000: Got error -7 from storage engine
15479
f_charbig VARCHAR(1000)
15482
PARTITION BY LIST(ABS(MOD(f_int1,2)))
15483
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
15484
(PARTITION part_1 VALUES IN (0),
15485
PARTITION part_2 VALUES IN (1),
15486
PARTITION part_3 VALUES IN (NULL));
15487
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15488
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15489
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15490
ALTER TABLE t1 OPTIMIZE PARTITION part_1;
15491
ERROR HY000: Got error -7 from storage engine
15493
# 3.2 ALTER ... OPTIMIZE PARTITION part_1,part_2;
15494
DROP TABLE IF EXISTS t1;
15500
f_charbig VARCHAR(1000)
15503
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
15504
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15505
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15506
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15507
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
15508
ERROR HY000: Got error -7 from storage engine
15515
f_charbig VARCHAR(1000)
15518
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
15519
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15520
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15521
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15522
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
15523
ERROR HY000: Got error -7 from storage engine
15530
f_charbig VARCHAR(1000)
15533
PARTITION BY LIST(MOD(f_int1,4))
15534
(PARTITION part_3 VALUES IN (-3),
15535
PARTITION part_2 VALUES IN (-2),
15536
PARTITION part_1 VALUES IN (-1),
15537
PARTITION part_N VALUES IN (NULL),
15538
PARTITION part0 VALUES IN (0),
15539
PARTITION part1 VALUES IN (1),
15540
PARTITION part2 VALUES IN (2),
15541
PARTITION part3 VALUES IN (3));
15542
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15543
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15544
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15545
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
15546
ERROR HY000: Got error -7 from storage engine
15553
f_charbig VARCHAR(1000)
15556
PARTITION BY RANGE(f_int1)
15557
(PARTITION parta VALUES LESS THAN (0),
15558
PARTITION part_1 VALUES LESS THAN (5),
15559
PARTITION part_2 VALUES LESS THAN (10),
15560
PARTITION part_3 VALUES LESS THAN (10 + 5),
15561
PARTITION part_4 VALUES LESS THAN (20),
15562
PARTITION part_5 VALUES LESS THAN (2147483646));
15563
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15564
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15565
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15566
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
15567
ERROR HY000: Got error -7 from storage engine
15574
f_charbig VARCHAR(1000)
15577
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
15578
(PARTITION part_1 VALUES LESS THAN (0),
15579
PARTITION part_2 VALUES LESS THAN (5),
15580
PARTITION part_3 VALUES LESS THAN (10),
15581
PARTITION part_4 VALUES LESS THAN (2147483646));
15582
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15583
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15584
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15585
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
15586
ERROR HY000: Got error -7 from storage engine
15593
f_charbig VARCHAR(1000)
15596
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
15597
(PARTITION part_1 VALUES LESS THAN (0)
15598
(SUBPARTITION subpart11, SUBPARTITION subpart12),
15599
PARTITION part_2 VALUES LESS THAN (5)
15600
(SUBPARTITION subpart21, SUBPARTITION subpart22),
15601
PARTITION part_3 VALUES LESS THAN (10)
15602
(SUBPARTITION subpart31, SUBPARTITION subpart32),
15603
PARTITION part_4 VALUES LESS THAN (2147483646)
15604
(SUBPARTITION subpart41, SUBPARTITION subpart42));
15605
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15606
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15607
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15608
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
15609
ERROR HY000: Got error -7 from storage engine
15616
f_charbig VARCHAR(1000)
15619
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
15620
(PARTITION part_1 VALUES IN (0)
15621
(SUBPARTITION sp11, SUBPARTITION sp12),
15622
PARTITION part_2 VALUES IN (1)
15623
(SUBPARTITION sp21, SUBPARTITION sp22),
15624
PARTITION part_3 VALUES IN (2)
15625
(SUBPARTITION sp31, SUBPARTITION sp32),
15626
PARTITION part_4 VALUES IN (NULL)
15627
(SUBPARTITION sp41, SUBPARTITION sp42));
15628
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15629
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15630
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15631
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
15632
ERROR HY000: Got error -7 from storage engine
15639
f_charbig VARCHAR(1000)
15642
PARTITION BY LIST(ABS(MOD(f_int1,2)))
15643
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
15644
(PARTITION part_1 VALUES IN (0),
15645
PARTITION part_2 VALUES IN (1),
15646
PARTITION part_3 VALUES IN (NULL));
15647
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15648
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15649
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15650
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2;
15651
ERROR HY000: Got error -7 from storage engine
15653
# 3.3 ALTER ... OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
15654
DROP TABLE IF EXISTS t1;
15660
f_charbig VARCHAR(1000)
15663
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
15664
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15665
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15666
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15667
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
15668
ERROR HY000: Error in list of partitions to OPTIMIZE
15675
f_charbig VARCHAR(1000)
15678
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
15679
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15680
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15681
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15682
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
15683
ERROR HY000: Error in list of partitions to OPTIMIZE
15690
f_charbig VARCHAR(1000)
15693
PARTITION BY LIST(MOD(f_int1,4))
15694
(PARTITION part_3 VALUES IN (-3),
15695
PARTITION part_2 VALUES IN (-2),
15696
PARTITION part_1 VALUES IN (-1),
15697
PARTITION part_N VALUES IN (NULL),
15698
PARTITION part0 VALUES IN (0),
15699
PARTITION part1 VALUES IN (1),
15700
PARTITION part2 VALUES IN (2),
15701
PARTITION part3 VALUES IN (3));
15702
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15703
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15704
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15705
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
15706
ERROR HY000: Error in list of partitions to OPTIMIZE
15713
f_charbig VARCHAR(1000)
15716
PARTITION BY RANGE(f_int1)
15717
(PARTITION parta VALUES LESS THAN (0),
15718
PARTITION part_1 VALUES LESS THAN (5),
15719
PARTITION part_2 VALUES LESS THAN (10),
15720
PARTITION part_3 VALUES LESS THAN (10 + 5),
15721
PARTITION part_4 VALUES LESS THAN (20),
15722
PARTITION part_5 VALUES LESS THAN (2147483646));
15723
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15724
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15725
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15726
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
15727
ERROR HY000: Error in list of partitions to OPTIMIZE
15734
f_charbig VARCHAR(1000)
15737
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
15738
(PARTITION part_1 VALUES LESS THAN (0),
15739
PARTITION part_2 VALUES LESS THAN (5),
15740
PARTITION part_3 VALUES LESS THAN (10),
15741
PARTITION part_4 VALUES LESS THAN (2147483646));
15742
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15743
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15744
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15745
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
15746
ERROR HY000: Error in list of partitions to OPTIMIZE
15753
f_charbig VARCHAR(1000)
15756
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
15757
(PARTITION part_1 VALUES LESS THAN (0)
15758
(SUBPARTITION subpart11, SUBPARTITION subpart12),
15759
PARTITION part_2 VALUES LESS THAN (5)
15760
(SUBPARTITION subpart21, SUBPARTITION subpart22),
15761
PARTITION part_3 VALUES LESS THAN (10)
15762
(SUBPARTITION subpart31, SUBPARTITION subpart32),
15763
PARTITION part_4 VALUES LESS THAN (2147483646)
15764
(SUBPARTITION subpart41, SUBPARTITION subpart42));
15765
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15766
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15767
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15768
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
15769
ERROR HY000: Error in list of partitions to OPTIMIZE
15776
f_charbig VARCHAR(1000)
15779
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
15780
(PARTITION part_1 VALUES IN (0)
15781
(SUBPARTITION sp11, SUBPARTITION sp12),
15782
PARTITION part_2 VALUES IN (1)
15783
(SUBPARTITION sp21, SUBPARTITION sp22),
15784
PARTITION part_3 VALUES IN (2)
15785
(SUBPARTITION sp31, SUBPARTITION sp32),
15786
PARTITION part_4 VALUES IN (NULL)
15787
(SUBPARTITION sp41, SUBPARTITION sp42));
15788
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15789
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15790
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15791
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
15792
ERROR HY000: Error in list of partitions to OPTIMIZE
15799
f_charbig VARCHAR(1000)
15802
PARTITION BY LIST(ABS(MOD(f_int1,2)))
15803
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
15804
(PARTITION part_1 VALUES IN (0),
15805
PARTITION part_2 VALUES IN (1),
15806
PARTITION part_3 VALUES IN (NULL));
15807
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15808
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15809
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15810
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_2,part_5,part_6,part_10;
15811
ERROR HY000: Error in list of partitions to OPTIMIZE
15813
# 3.4 ALTER ... OPTIMIZE PARTITION part_1,part_1,part_1;
15814
DROP TABLE IF EXISTS t1;
15820
f_charbig VARCHAR(1000)
15823
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
15824
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15825
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15826
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15827
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
15828
ERROR HY000: Error in list of partitions to OPTIMIZE
15835
f_charbig VARCHAR(1000)
15838
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
15839
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15840
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15841
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15842
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
15843
ERROR HY000: Error in list of partitions to OPTIMIZE
15850
f_charbig VARCHAR(1000)
15853
PARTITION BY LIST(MOD(f_int1,4))
15854
(PARTITION part_3 VALUES IN (-3),
15855
PARTITION part_2 VALUES IN (-2),
15856
PARTITION part_1 VALUES IN (-1),
15857
PARTITION part_N VALUES IN (NULL),
15858
PARTITION part0 VALUES IN (0),
15859
PARTITION part1 VALUES IN (1),
15860
PARTITION part2 VALUES IN (2),
15861
PARTITION part3 VALUES IN (3));
15862
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15863
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15864
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15865
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
15866
ERROR HY000: Error in list of partitions to OPTIMIZE
15873
f_charbig VARCHAR(1000)
15876
PARTITION BY RANGE(f_int1)
15877
(PARTITION parta VALUES LESS THAN (0),
15878
PARTITION part_1 VALUES LESS THAN (5),
15879
PARTITION part_2 VALUES LESS THAN (10),
15880
PARTITION part_3 VALUES LESS THAN (10 + 5),
15881
PARTITION part_4 VALUES LESS THAN (20),
15882
PARTITION part_5 VALUES LESS THAN (2147483646));
15883
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15884
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15885
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15886
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
15887
ERROR HY000: Error in list of partitions to OPTIMIZE
15894
f_charbig VARCHAR(1000)
15897
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
15898
(PARTITION part_1 VALUES LESS THAN (0),
15899
PARTITION part_2 VALUES LESS THAN (5),
15900
PARTITION part_3 VALUES LESS THAN (10),
15901
PARTITION part_4 VALUES LESS THAN (2147483646));
15902
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15903
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15904
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15905
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
15906
ERROR HY000: Error in list of partitions to OPTIMIZE
15913
f_charbig VARCHAR(1000)
15916
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
15917
(PARTITION part_1 VALUES LESS THAN (0)
15918
(SUBPARTITION subpart11, SUBPARTITION subpart12),
15919
PARTITION part_2 VALUES LESS THAN (5)
15920
(SUBPARTITION subpart21, SUBPARTITION subpart22),
15921
PARTITION part_3 VALUES LESS THAN (10)
15922
(SUBPARTITION subpart31, SUBPARTITION subpart32),
15923
PARTITION part_4 VALUES LESS THAN (2147483646)
15924
(SUBPARTITION subpart41, SUBPARTITION subpart42));
15925
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15926
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15927
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15928
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
15929
ERROR HY000: Error in list of partitions to OPTIMIZE
15936
f_charbig VARCHAR(1000)
15939
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
15940
(PARTITION part_1 VALUES IN (0)
15941
(SUBPARTITION sp11, SUBPARTITION sp12),
15942
PARTITION part_2 VALUES IN (1)
15943
(SUBPARTITION sp21, SUBPARTITION sp22),
15944
PARTITION part_3 VALUES IN (2)
15945
(SUBPARTITION sp31, SUBPARTITION sp32),
15946
PARTITION part_4 VALUES IN (NULL)
15947
(SUBPARTITION sp41, SUBPARTITION sp42));
15948
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15949
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15950
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15951
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
15952
ERROR HY000: Error in list of partitions to OPTIMIZE
15959
f_charbig VARCHAR(1000)
15962
PARTITION BY LIST(ABS(MOD(f_int1,2)))
15963
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
15964
(PARTITION part_1 VALUES IN (0),
15965
PARTITION part_2 VALUES IN (1),
15966
PARTITION part_3 VALUES IN (NULL));
15967
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15968
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15969
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15970
ALTER TABLE t1 OPTIMIZE PARTITION part_1,part_1,part_1;
15971
ERROR HY000: Error in list of partitions to OPTIMIZE
15973
#------------------------------------------------------------------------
15974
# 4 ALTER ... REBUILD PARTITION
15975
#------------------------------------------------------------------------
15976
# 4.1 ALTER ... REBUILD PARTITION part_1;
15977
DROP TABLE IF EXISTS t1;
15983
f_charbig VARCHAR(1000)
15986
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
15987
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15988
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15989
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15990
ALTER TABLE t1 REBUILD PARTITION part_1;
15991
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15992
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15993
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15994
# Start usability test (inc/partition_check.inc)
15996
SHOW CREATE TABLE t1;
15998
t1 CREATE TABLE `t1` (
15999
`f_int1` int(11) DEFAULT NULL,
16000
`f_int2` int(11) DEFAULT NULL,
16001
`f_char1` char(20) DEFAULT NULL,
16002
`f_char2` char(20) DEFAULT NULL,
16003
`f_charbig` varchar(1000) DEFAULT NULL
16004
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */
16006
# check prerequisites-1 success: 1
16007
# check COUNT(*) success: 1
16008
# check MIN/MAX(f_int1) success: 1
16009
# check MIN/MAX(f_int2) success: 1
16010
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16011
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16012
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16013
WHERE f_int1 IN (2,3);
16014
# check prerequisites-3 success: 1
16015
DELETE FROM t1 WHERE f_charbig = 'delete me';
16016
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16017
# check read via f_int1 success: 1
16018
# check read via f_int2 success: 1
16020
# check multiple-1 success: 1
16021
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16023
# check multiple-2 success: 1
16024
INSERT INTO t1 SELECT * FROM t0_template
16025
WHERE MOD(f_int1,3) = 0;
16027
# check multiple-3 success: 1
16028
UPDATE t1 SET f_int1 = f_int1 + @max_row
16029
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16030
AND @max_row_div2 + @max_row_div4;
16032
# check multiple-4 success: 1
16034
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16035
AND @max_row_div2 + @max_row_div4 + @max_row;
16037
# check multiple-5 success: 1
16038
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16040
SET f_int1 = @cur_value , f_int2 = @cur_value,
16041
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16042
f_charbig = '#SINGLE#';
16044
# check single-1 success: 1
16045
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16047
SET f_int1 = @cur_value , f_int2 = @cur_value,
16048
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16049
f_charbig = '#SINGLE#';
16051
# check single-2 success: 1
16052
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16053
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16054
UPDATE t1 SET f_int1 = @cur_value2
16055
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16057
# check single-3 success: 1
16058
SET @cur_value1= -1;
16059
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16060
UPDATE t1 SET f_int1 = @cur_value1
16061
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16063
# check single-4 success: 1
16064
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16065
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16067
# check single-5 success: 1
16068
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16070
# check single-6 success: 1
16071
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16073
# check single-7 success: 1
16074
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16075
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16076
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16077
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16078
f_charbig = '#NULL#';
16080
SET f_int1 = NULL , f_int2 = -@max_row,
16081
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16082
f_charbig = '#NULL#';
16083
# check null success: 1
16085
# check null-1 success: 1
16086
UPDATE t1 SET f_int1 = -@max_row
16087
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16088
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16090
# check null-2 success: 1
16091
UPDATE t1 SET f_int1 = NULL
16092
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16093
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16095
# check null-3 success: 1
16097
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16098
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16100
# check null-4 success: 1
16102
WHERE f_int1 = 0 AND f_int2 = 0
16103
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16104
AND f_charbig = '#NULL#';
16106
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16107
SELECT f_int1, f_int1, '', '', 'was inserted'
16108
FROM t0_template source_tab
16109
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16111
# check transactions-1 success: 1
16114
# check transactions-2 success: 1
16117
# check transactions-3 success: 1
16118
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16122
# check transactions-4 success: 1
16123
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16124
SELECT f_int1, f_int1, '', '', 'was inserted'
16125
FROM t0_template source_tab
16126
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16128
# check transactions-5 success: 1
16131
# check transactions-6 success: 1
16132
# INFO: Storage engine used for t1 seems to be transactional.
16135
# check transactions-7 success: 1
16136
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16138
SET @@session.sql_mode = 'traditional';
16139
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16140
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16141
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16142
'', '', 'was inserted' FROM t0_template
16143
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16144
ERROR 22012: Division by 0
16147
# check transactions-8 success: 1
16148
# INFO: Storage engine used for t1 seems to be able to revert
16149
# changes made by the failing statement.
16150
SET @@session.sql_mode = '';
16152
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16154
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16156
# check special-1 success: 1
16157
UPDATE t1 SET f_charbig = '';
16159
# check special-2 success: 1
16160
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16161
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16162
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16163
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16164
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16165
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16166
'just inserted' FROM t0_template
16167
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16168
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16170
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16171
f_charbig = 'updated by trigger'
16172
WHERE f_int1 = new.f_int1;
16174
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16175
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16176
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16178
# check trigger-1 success: 1
16179
DROP TRIGGER trg_1;
16180
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16181
f_int2 = CAST(f_char1 AS SIGNED INT),
16182
f_charbig = 'just inserted'
16183
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16185
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16186
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16187
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16188
'just inserted' FROM t0_template
16189
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16190
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16192
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16193
f_charbig = 'updated by trigger'
16194
WHERE f_int1 = new.f_int1;
16196
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16197
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16198
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16200
# check trigger-2 success: 1
16201
DROP TRIGGER trg_1;
16202
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16203
f_int2 = CAST(f_char1 AS SIGNED INT),
16204
f_charbig = 'just inserted'
16205
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16207
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16208
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16209
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16210
'just inserted' FROM t0_template
16211
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16212
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16214
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16215
f_charbig = 'updated by trigger'
16216
WHERE f_int1 = new.f_int1;
16218
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16219
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16221
# check trigger-3 success: 1
16222
DROP TRIGGER trg_1;
16223
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16224
f_int2 = CAST(f_char1 AS SIGNED INT),
16225
f_charbig = 'just inserted'
16226
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16228
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16229
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16230
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16231
'just inserted' FROM t0_template
16232
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16233
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16235
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16236
f_charbig = 'updated by trigger'
16237
WHERE f_int1 = - old.f_int1;
16239
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16240
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16242
# check trigger-4 success: 1
16243
DROP TRIGGER trg_1;
16244
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16245
f_int2 = CAST(f_char1 AS SIGNED INT),
16246
f_charbig = 'just inserted'
16247
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16249
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16250
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16251
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16252
'just inserted' FROM t0_template
16253
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16254
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16256
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16257
f_charbig = 'updated by trigger'
16258
WHERE f_int1 = new.f_int1;
16260
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16261
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16263
# check trigger-5 success: 1
16264
DROP TRIGGER trg_1;
16265
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16266
f_int2 = CAST(f_char1 AS SIGNED INT),
16267
f_charbig = 'just inserted'
16268
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16270
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16271
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16272
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16273
'just inserted' FROM t0_template
16274
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16275
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16277
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16278
f_charbig = 'updated by trigger'
16279
WHERE f_int1 = - old.f_int1;
16281
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16282
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16284
# check trigger-6 success: 1
16285
DROP TRIGGER trg_1;
16286
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16287
f_int2 = CAST(f_char1 AS SIGNED INT),
16288
f_charbig = 'just inserted'
16289
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16291
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16292
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16293
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16294
'just inserted' FROM t0_template
16295
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16296
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16298
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16299
f_charbig = 'updated by trigger'
16300
WHERE f_int1 = - old.f_int1;
16303
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16305
# check trigger-7 success: 1
16306
DROP TRIGGER trg_1;
16307
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16308
f_int2 = CAST(f_char1 AS SIGNED INT),
16309
f_charbig = 'just inserted'
16310
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16312
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16313
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16314
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16315
'just inserted' FROM t0_template
16316
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16317
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16319
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16320
f_charbig = 'updated by trigger'
16321
WHERE f_int1 = - old.f_int1;
16324
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16326
# check trigger-8 success: 1
16327
DROP TRIGGER trg_1;
16328
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16329
f_int2 = CAST(f_char1 AS SIGNED INT),
16330
f_charbig = 'just inserted'
16331
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16333
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16335
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16336
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16338
SET new.f_int1 = old.f_int1 + @max_row,
16339
new.f_int2 = old.f_int2 - @max_row,
16340
new.f_charbig = '####updated per update trigger####';
16343
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16344
f_charbig = '####updated per update statement itself####';
16346
# check trigger-9 success: 1
16347
DROP TRIGGER trg_2;
16348
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16349
f_int2 = CAST(f_char1 AS SIGNED INT),
16350
f_charbig = CONCAT('===',f_char1,'===');
16351
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16353
SET new.f_int1 = new.f_int1 + @max_row,
16354
new.f_int2 = new.f_int2 - @max_row,
16355
new.f_charbig = '####updated per update trigger####';
16358
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16359
f_charbig = '####updated per update statement itself####';
16361
# check trigger-10 success: 1
16362
DROP TRIGGER trg_2;
16363
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16364
f_int2 = CAST(f_char1 AS SIGNED INT),
16365
f_charbig = CONCAT('===',f_char1,'===');
16366
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16368
SET new.f_int1 = @my_max1 + @counter,
16369
new.f_int2 = @my_min2 - @counter,
16370
new.f_charbig = '####updated per insert trigger####';
16371
SET @counter = @counter + 1;
16374
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16375
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16376
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16377
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16378
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16380
DROP TRIGGER trg_3;
16382
# check trigger-11 success: 1
16384
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16385
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16386
AND f_charbig = '####updated per insert trigger####';
16387
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16389
SET new.f_int1 = @my_max1 + @counter,
16390
new.f_int2 = @my_min2 - @counter,
16391
new.f_charbig = '####updated per insert trigger####';
16392
SET @counter = @counter + 1;
16395
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16396
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16397
SELECT CAST(f_int1 AS CHAR),
16398
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16399
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16401
DROP TRIGGER trg_3;
16403
# check trigger-12 success: 1
16405
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16406
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16407
AND f_charbig = '####updated per insert trigger####';
16409
Table Op Msg_type Msg_text
16410
test.t1 analyze status OK
16411
CHECK TABLE t1 EXTENDED;
16412
Table Op Msg_type Msg_text
16413
test.t1 check status OK
16414
CHECKSUM TABLE t1 EXTENDED;
16416
test.t1 <some_value>
16418
Table Op Msg_type Msg_text
16419
test.t1 optimize status OK
16420
# check layout success: 1
16421
REPAIR TABLE t1 EXTENDED;
16422
Table Op Msg_type Msg_text
16423
test.t1 repair note The storage engine for the table doesn't support repair
16424
# check layout success: 1
16427
# check TRUNCATE success: 1
16428
# check layout success: 1
16429
# End usability test (inc/partition_check.inc)
16436
f_charbig VARCHAR(1000)
16439
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
16440
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16441
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16442
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16443
ALTER TABLE t1 REBUILD PARTITION part_1;
16444
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16445
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16446
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16447
# Start usability test (inc/partition_check.inc)
16449
SHOW CREATE TABLE t1;
16451
t1 CREATE TABLE `t1` (
16452
`f_int1` int(11) DEFAULT NULL,
16453
`f_int2` int(11) DEFAULT NULL,
16454
`f_char1` char(20) DEFAULT NULL,
16455
`f_char2` char(20) DEFAULT NULL,
16456
`f_charbig` varchar(1000) DEFAULT NULL
16457
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */
16459
# check prerequisites-1 success: 1
16460
# check COUNT(*) success: 1
16461
# check MIN/MAX(f_int1) success: 1
16462
# check MIN/MAX(f_int2) success: 1
16463
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16464
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16465
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16466
WHERE f_int1 IN (2,3);
16467
# check prerequisites-3 success: 1
16468
DELETE FROM t1 WHERE f_charbig = 'delete me';
16469
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16470
# check read via f_int1 success: 1
16471
# check read via f_int2 success: 1
16473
# check multiple-1 success: 1
16474
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16476
# check multiple-2 success: 1
16477
INSERT INTO t1 SELECT * FROM t0_template
16478
WHERE MOD(f_int1,3) = 0;
16480
# check multiple-3 success: 1
16481
UPDATE t1 SET f_int1 = f_int1 + @max_row
16482
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16483
AND @max_row_div2 + @max_row_div4;
16485
# check multiple-4 success: 1
16487
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16488
AND @max_row_div2 + @max_row_div4 + @max_row;
16490
# check multiple-5 success: 1
16491
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16493
SET f_int1 = @cur_value , f_int2 = @cur_value,
16494
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16495
f_charbig = '#SINGLE#';
16497
# check single-1 success: 1
16498
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16500
SET f_int1 = @cur_value , f_int2 = @cur_value,
16501
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16502
f_charbig = '#SINGLE#';
16504
# check single-2 success: 1
16505
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16506
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16507
UPDATE t1 SET f_int1 = @cur_value2
16508
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16510
# check single-3 success: 1
16511
SET @cur_value1= -1;
16512
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16513
UPDATE t1 SET f_int1 = @cur_value1
16514
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16516
# check single-4 success: 1
16517
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16518
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16520
# check single-5 success: 1
16521
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16523
# check single-6 success: 1
16524
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16526
# check single-7 success: 1
16527
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16528
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16529
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16530
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16531
f_charbig = '#NULL#';
16533
SET f_int1 = NULL , f_int2 = -@max_row,
16534
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16535
f_charbig = '#NULL#';
16536
# check null success: 1
16538
# check null-1 success: 1
16539
UPDATE t1 SET f_int1 = -@max_row
16540
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16541
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16543
# check null-2 success: 1
16544
UPDATE t1 SET f_int1 = NULL
16545
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16546
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16548
# check null-3 success: 1
16550
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16551
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16553
# check null-4 success: 1
16555
WHERE f_int1 = 0 AND f_int2 = 0
16556
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16557
AND f_charbig = '#NULL#';
16559
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16560
SELECT f_int1, f_int1, '', '', 'was inserted'
16561
FROM t0_template source_tab
16562
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16564
# check transactions-1 success: 1
16567
# check transactions-2 success: 1
16570
# check transactions-3 success: 1
16571
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16575
# check transactions-4 success: 1
16576
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16577
SELECT f_int1, f_int1, '', '', 'was inserted'
16578
FROM t0_template source_tab
16579
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16581
# check transactions-5 success: 1
16584
# check transactions-6 success: 1
16585
# INFO: Storage engine used for t1 seems to be transactional.
16588
# check transactions-7 success: 1
16589
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16591
SET @@session.sql_mode = 'traditional';
16592
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16593
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16594
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16595
'', '', 'was inserted' FROM t0_template
16596
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16597
ERROR 22012: Division by 0
16600
# check transactions-8 success: 1
16601
# INFO: Storage engine used for t1 seems to be able to revert
16602
# changes made by the failing statement.
16603
SET @@session.sql_mode = '';
16605
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16607
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16609
# check special-1 success: 1
16610
UPDATE t1 SET f_charbig = '';
16612
# check special-2 success: 1
16613
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16614
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16615
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16616
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16617
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16618
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16619
'just inserted' FROM t0_template
16620
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16621
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16623
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16624
f_charbig = 'updated by trigger'
16625
WHERE f_int1 = new.f_int1;
16627
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16628
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16629
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16631
# check trigger-1 success: 1
16632
DROP TRIGGER trg_1;
16633
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16634
f_int2 = CAST(f_char1 AS SIGNED INT),
16635
f_charbig = 'just inserted'
16636
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16638
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16639
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16640
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16641
'just inserted' FROM t0_template
16642
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16643
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16645
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16646
f_charbig = 'updated by trigger'
16647
WHERE f_int1 = new.f_int1;
16649
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16650
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16651
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16653
# check trigger-2 success: 1
16654
DROP TRIGGER trg_1;
16655
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16656
f_int2 = CAST(f_char1 AS SIGNED INT),
16657
f_charbig = 'just inserted'
16658
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16660
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16661
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16662
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16663
'just inserted' FROM t0_template
16664
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16665
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16667
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16668
f_charbig = 'updated by trigger'
16669
WHERE f_int1 = new.f_int1;
16671
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16672
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16674
# check trigger-3 success: 1
16675
DROP TRIGGER trg_1;
16676
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16677
f_int2 = CAST(f_char1 AS SIGNED INT),
16678
f_charbig = 'just inserted'
16679
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16681
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16682
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16683
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16684
'just inserted' FROM t0_template
16685
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16686
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16688
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16689
f_charbig = 'updated by trigger'
16690
WHERE f_int1 = - old.f_int1;
16692
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16693
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16695
# check trigger-4 success: 1
16696
DROP TRIGGER trg_1;
16697
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16698
f_int2 = CAST(f_char1 AS SIGNED INT),
16699
f_charbig = 'just inserted'
16700
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16702
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16703
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16704
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16705
'just inserted' FROM t0_template
16706
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16707
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16709
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16710
f_charbig = 'updated by trigger'
16711
WHERE f_int1 = new.f_int1;
16713
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16714
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16716
# check trigger-5 success: 1
16717
DROP TRIGGER trg_1;
16718
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16719
f_int2 = CAST(f_char1 AS SIGNED INT),
16720
f_charbig = 'just inserted'
16721
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16723
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16724
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16725
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16726
'just inserted' FROM t0_template
16727
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16728
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16730
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16731
f_charbig = 'updated by trigger'
16732
WHERE f_int1 = - old.f_int1;
16734
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16735
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16737
# check trigger-6 success: 1
16738
DROP TRIGGER trg_1;
16739
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16740
f_int2 = CAST(f_char1 AS SIGNED INT),
16741
f_charbig = 'just inserted'
16742
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16744
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16745
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16746
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16747
'just inserted' FROM t0_template
16748
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16749
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16751
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16752
f_charbig = 'updated by trigger'
16753
WHERE f_int1 = - old.f_int1;
16756
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16758
# check trigger-7 success: 1
16759
DROP TRIGGER trg_1;
16760
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16761
f_int2 = CAST(f_char1 AS SIGNED INT),
16762
f_charbig = 'just inserted'
16763
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16765
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16766
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16767
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16768
'just inserted' FROM t0_template
16769
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16770
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16772
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16773
f_charbig = 'updated by trigger'
16774
WHERE f_int1 = - old.f_int1;
16777
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16779
# check trigger-8 success: 1
16780
DROP TRIGGER trg_1;
16781
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16782
f_int2 = CAST(f_char1 AS SIGNED INT),
16783
f_charbig = 'just inserted'
16784
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16786
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16788
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16789
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16791
SET new.f_int1 = old.f_int1 + @max_row,
16792
new.f_int2 = old.f_int2 - @max_row,
16793
new.f_charbig = '####updated per update trigger####';
16796
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16797
f_charbig = '####updated per update statement itself####';
16799
# check trigger-9 success: 1
16800
DROP TRIGGER trg_2;
16801
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16802
f_int2 = CAST(f_char1 AS SIGNED INT),
16803
f_charbig = CONCAT('===',f_char1,'===');
16804
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16806
SET new.f_int1 = new.f_int1 + @max_row,
16807
new.f_int2 = new.f_int2 - @max_row,
16808
new.f_charbig = '####updated per update trigger####';
16811
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16812
f_charbig = '####updated per update statement itself####';
16814
# check trigger-10 success: 1
16815
DROP TRIGGER trg_2;
16816
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16817
f_int2 = CAST(f_char1 AS SIGNED INT),
16818
f_charbig = CONCAT('===',f_char1,'===');
16819
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16821
SET new.f_int1 = @my_max1 + @counter,
16822
new.f_int2 = @my_min2 - @counter,
16823
new.f_charbig = '####updated per insert trigger####';
16824
SET @counter = @counter + 1;
16827
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16828
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16829
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16830
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16831
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16833
DROP TRIGGER trg_3;
16835
# check trigger-11 success: 1
16837
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16838
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16839
AND f_charbig = '####updated per insert trigger####';
16840
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16842
SET new.f_int1 = @my_max1 + @counter,
16843
new.f_int2 = @my_min2 - @counter,
16844
new.f_charbig = '####updated per insert trigger####';
16845
SET @counter = @counter + 1;
16848
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16849
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16850
SELECT CAST(f_int1 AS CHAR),
16851
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16852
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16854
DROP TRIGGER trg_3;
16856
# check trigger-12 success: 1
16858
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16859
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16860
AND f_charbig = '####updated per insert trigger####';
16862
Table Op Msg_type Msg_text
16863
test.t1 analyze status OK
16864
CHECK TABLE t1 EXTENDED;
16865
Table Op Msg_type Msg_text
16866
test.t1 check status OK
16867
CHECKSUM TABLE t1 EXTENDED;
16869
test.t1 <some_value>
16871
Table Op Msg_type Msg_text
16872
test.t1 optimize status OK
16873
# check layout success: 1
16874
REPAIR TABLE t1 EXTENDED;
16875
Table Op Msg_type Msg_text
16876
test.t1 repair note The storage engine for the table doesn't support repair
16877
# check layout success: 1
16880
# check TRUNCATE success: 1
16881
# check layout success: 1
16882
# End usability test (inc/partition_check.inc)
16889
f_charbig VARCHAR(1000)
16892
PARTITION BY LIST(MOD(f_int1,4))
16893
(PARTITION part_3 VALUES IN (-3),
16894
PARTITION part_2 VALUES IN (-2),
16895
PARTITION part_1 VALUES IN (-1),
16896
PARTITION part_N VALUES IN (NULL),
16897
PARTITION part0 VALUES IN (0),
16898
PARTITION part1 VALUES IN (1),
16899
PARTITION part2 VALUES IN (2),
16900
PARTITION part3 VALUES IN (3));
16901
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16902
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16903
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16904
ALTER TABLE t1 REBUILD PARTITION part_1;
16905
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16906
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16907
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16908
# Start usability test (inc/partition_check.inc)
16910
SHOW CREATE TABLE t1;
16912
t1 CREATE TABLE `t1` (
16913
`f_int1` int(11) DEFAULT NULL,
16914
`f_int2` int(11) DEFAULT NULL,
16915
`f_char1` char(20) DEFAULT NULL,
16916
`f_char2` char(20) DEFAULT NULL,
16917
`f_charbig` varchar(1000) DEFAULT NULL
16918
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
16920
# check prerequisites-1 success: 1
16921
# check COUNT(*) success: 1
16922
# check MIN/MAX(f_int1) success: 1
16923
# check MIN/MAX(f_int2) success: 1
16924
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16925
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16926
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16927
WHERE f_int1 IN (2,3);
16928
# check prerequisites-3 success: 1
16929
DELETE FROM t1 WHERE f_charbig = 'delete me';
16930
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16931
# check read via f_int1 success: 1
16932
# check read via f_int2 success: 1
16934
# check multiple-1 success: 1
16935
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16937
# check multiple-2 success: 1
16938
INSERT INTO t1 SELECT * FROM t0_template
16939
WHERE MOD(f_int1,3) = 0;
16941
# check multiple-3 success: 1
16942
UPDATE t1 SET f_int1 = f_int1 + @max_row
16943
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16944
AND @max_row_div2 + @max_row_div4;
16946
# check multiple-4 success: 1
16948
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16949
AND @max_row_div2 + @max_row_div4 + @max_row;
16951
# check multiple-5 success: 1
16952
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16954
SET f_int1 = @cur_value , f_int2 = @cur_value,
16955
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16956
f_charbig = '#SINGLE#';
16958
# check single-1 success: 1
16959
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16961
SET f_int1 = @cur_value , f_int2 = @cur_value,
16962
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16963
f_charbig = '#SINGLE#';
16965
# check single-2 success: 1
16966
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16967
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16968
UPDATE t1 SET f_int1 = @cur_value2
16969
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16971
# check single-3 success: 1
16972
SET @cur_value1= -1;
16973
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16974
UPDATE t1 SET f_int1 = @cur_value1
16975
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16977
# check single-4 success: 1
16978
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16979
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16981
# check single-5 success: 1
16982
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16984
# check single-6 success: 1
16985
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16987
# check single-7 success: 1
16988
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16989
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16990
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16991
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16992
f_charbig = '#NULL#';
16994
SET f_int1 = NULL , f_int2 = -@max_row,
16995
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16996
f_charbig = '#NULL#';
16997
# check null success: 1
16999
# check null-1 success: 1
17000
UPDATE t1 SET f_int1 = -@max_row
17001
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17002
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17004
# check null-2 success: 1
17005
UPDATE t1 SET f_int1 = NULL
17006
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17007
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17009
# check null-3 success: 1
17011
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17012
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17014
# check null-4 success: 1
17016
WHERE f_int1 = 0 AND f_int2 = 0
17017
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17018
AND f_charbig = '#NULL#';
17020
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17021
SELECT f_int1, f_int1, '', '', 'was inserted'
17022
FROM t0_template source_tab
17023
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17025
# check transactions-1 success: 1
17028
# check transactions-2 success: 1
17031
# check transactions-3 success: 1
17032
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17036
# check transactions-4 success: 1
17037
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17038
SELECT f_int1, f_int1, '', '', 'was inserted'
17039
FROM t0_template source_tab
17040
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17042
# check transactions-5 success: 1
17045
# check transactions-6 success: 1
17046
# INFO: Storage engine used for t1 seems to be transactional.
17049
# check transactions-7 success: 1
17050
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17052
SET @@session.sql_mode = 'traditional';
17053
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17054
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17055
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17056
'', '', 'was inserted' FROM t0_template
17057
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17058
ERROR 22012: Division by 0
17061
# check transactions-8 success: 1
17062
# INFO: Storage engine used for t1 seems to be able to revert
17063
# changes made by the failing statement.
17064
SET @@session.sql_mode = '';
17066
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17068
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17070
# check special-1 success: 1
17071
UPDATE t1 SET f_charbig = '';
17073
# check special-2 success: 1
17074
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17075
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17076
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17077
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17078
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17079
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17080
'just inserted' FROM t0_template
17081
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17082
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17084
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17085
f_charbig = 'updated by trigger'
17086
WHERE f_int1 = new.f_int1;
17088
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17089
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17090
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17092
# check trigger-1 success: 1
17093
DROP TRIGGER trg_1;
17094
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17095
f_int2 = CAST(f_char1 AS SIGNED INT),
17096
f_charbig = 'just inserted'
17097
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17099
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17100
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17101
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17102
'just inserted' FROM t0_template
17103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17104
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17106
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17107
f_charbig = 'updated by trigger'
17108
WHERE f_int1 = new.f_int1;
17110
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17111
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17112
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17114
# check trigger-2 success: 1
17115
DROP TRIGGER trg_1;
17116
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17117
f_int2 = CAST(f_char1 AS SIGNED INT),
17118
f_charbig = 'just inserted'
17119
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17121
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17122
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17123
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17124
'just inserted' FROM t0_template
17125
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17126
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17128
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17129
f_charbig = 'updated by trigger'
17130
WHERE f_int1 = new.f_int1;
17132
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17133
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17135
# check trigger-3 success: 1
17136
DROP TRIGGER trg_1;
17137
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17138
f_int2 = CAST(f_char1 AS SIGNED INT),
17139
f_charbig = 'just inserted'
17140
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17142
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17143
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17144
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17145
'just inserted' FROM t0_template
17146
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17147
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17149
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17150
f_charbig = 'updated by trigger'
17151
WHERE f_int1 = - old.f_int1;
17153
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17154
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17156
# check trigger-4 success: 1
17157
DROP TRIGGER trg_1;
17158
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17159
f_int2 = CAST(f_char1 AS SIGNED INT),
17160
f_charbig = 'just inserted'
17161
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17163
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17164
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17165
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17166
'just inserted' FROM t0_template
17167
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17168
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17170
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17171
f_charbig = 'updated by trigger'
17172
WHERE f_int1 = new.f_int1;
17174
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17175
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17177
# check trigger-5 success: 1
17178
DROP TRIGGER trg_1;
17179
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17180
f_int2 = CAST(f_char1 AS SIGNED INT),
17181
f_charbig = 'just inserted'
17182
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17184
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17185
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17186
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17187
'just inserted' FROM t0_template
17188
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17189
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17191
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17192
f_charbig = 'updated by trigger'
17193
WHERE f_int1 = - old.f_int1;
17195
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17196
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17198
# check trigger-6 success: 1
17199
DROP TRIGGER trg_1;
17200
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17201
f_int2 = CAST(f_char1 AS SIGNED INT),
17202
f_charbig = 'just inserted'
17203
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17205
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17206
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17207
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17208
'just inserted' FROM t0_template
17209
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17210
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17212
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17213
f_charbig = 'updated by trigger'
17214
WHERE f_int1 = - old.f_int1;
17217
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17219
# check trigger-7 success: 1
17220
DROP TRIGGER trg_1;
17221
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17222
f_int2 = CAST(f_char1 AS SIGNED INT),
17223
f_charbig = 'just inserted'
17224
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17226
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17227
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17228
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17229
'just inserted' FROM t0_template
17230
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17231
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17233
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17234
f_charbig = 'updated by trigger'
17235
WHERE f_int1 = - old.f_int1;
17238
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17240
# check trigger-8 success: 1
17241
DROP TRIGGER trg_1;
17242
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17243
f_int2 = CAST(f_char1 AS SIGNED INT),
17244
f_charbig = 'just inserted'
17245
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17247
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17249
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17250
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17252
SET new.f_int1 = old.f_int1 + @max_row,
17253
new.f_int2 = old.f_int2 - @max_row,
17254
new.f_charbig = '####updated per update trigger####';
17257
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17258
f_charbig = '####updated per update statement itself####';
17260
# check trigger-9 success: 1
17261
DROP TRIGGER trg_2;
17262
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17263
f_int2 = CAST(f_char1 AS SIGNED INT),
17264
f_charbig = CONCAT('===',f_char1,'===');
17265
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17267
SET new.f_int1 = new.f_int1 + @max_row,
17268
new.f_int2 = new.f_int2 - @max_row,
17269
new.f_charbig = '####updated per update trigger####';
17272
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17273
f_charbig = '####updated per update statement itself####';
17275
# check trigger-10 success: 1
17276
DROP TRIGGER trg_2;
17277
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17278
f_int2 = CAST(f_char1 AS SIGNED INT),
17279
f_charbig = CONCAT('===',f_char1,'===');
17280
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17282
SET new.f_int1 = @my_max1 + @counter,
17283
new.f_int2 = @my_min2 - @counter,
17284
new.f_charbig = '####updated per insert trigger####';
17285
SET @counter = @counter + 1;
17288
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17289
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17290
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17291
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17292
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17294
DROP TRIGGER trg_3;
17296
# check trigger-11 success: 1
17298
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17299
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17300
AND f_charbig = '####updated per insert trigger####';
17301
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17303
SET new.f_int1 = @my_max1 + @counter,
17304
new.f_int2 = @my_min2 - @counter,
17305
new.f_charbig = '####updated per insert trigger####';
17306
SET @counter = @counter + 1;
17309
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17310
INSERT INTO t1 (f_char1, f_char2, f_charbig)
17311
SELECT CAST(f_int1 AS CHAR),
17312
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17313
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17315
DROP TRIGGER trg_3;
17317
# check trigger-12 success: 1
17319
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17320
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17321
AND f_charbig = '####updated per insert trigger####';
17323
Table Op Msg_type Msg_text
17324
test.t1 analyze status OK
17325
CHECK TABLE t1 EXTENDED;
17326
Table Op Msg_type Msg_text
17327
test.t1 check status OK
17328
CHECKSUM TABLE t1 EXTENDED;
17330
test.t1 <some_value>
17332
Table Op Msg_type Msg_text
17333
test.t1 optimize status OK
17334
# check layout success: 1
17335
REPAIR TABLE t1 EXTENDED;
17336
Table Op Msg_type Msg_text
17337
test.t1 repair note The storage engine for the table doesn't support repair
17338
# check layout success: 1
17341
# check TRUNCATE success: 1
17342
# check layout success: 1
17343
# End usability test (inc/partition_check.inc)
17350
f_charbig VARCHAR(1000)
17353
PARTITION BY RANGE(f_int1)
17354
(PARTITION parta VALUES LESS THAN (0),
17355
PARTITION part_1 VALUES LESS THAN (5),
17356
PARTITION part_2 VALUES LESS THAN (10),
17357
PARTITION part_3 VALUES LESS THAN (10 + 5),
17358
PARTITION part_4 VALUES LESS THAN (20),
17359
PARTITION part_5 VALUES LESS THAN (2147483646));
17360
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17361
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17362
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17363
ALTER TABLE t1 REBUILD PARTITION part_1;
17364
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17365
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17366
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17367
# Start usability test (inc/partition_check.inc)
17369
SHOW CREATE TABLE t1;
17371
t1 CREATE TABLE `t1` (
17372
`f_int1` int(11) DEFAULT NULL,
17373
`f_int2` int(11) DEFAULT NULL,
17374
`f_char1` char(20) DEFAULT NULL,
17375
`f_char2` char(20) DEFAULT NULL,
17376
`f_charbig` varchar(1000) DEFAULT NULL
17377
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
17379
# check prerequisites-1 success: 1
17380
# check COUNT(*) success: 1
17381
# check MIN/MAX(f_int1) success: 1
17382
# check MIN/MAX(f_int2) success: 1
17383
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17384
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17385
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17386
WHERE f_int1 IN (2,3);
17387
# check prerequisites-3 success: 1
17388
DELETE FROM t1 WHERE f_charbig = 'delete me';
17389
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17390
# check read via f_int1 success: 1
17391
# check read via f_int2 success: 1
17393
# check multiple-1 success: 1
17394
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17396
# check multiple-2 success: 1
17397
INSERT INTO t1 SELECT * FROM t0_template
17398
WHERE MOD(f_int1,3) = 0;
17400
# check multiple-3 success: 1
17401
UPDATE t1 SET f_int1 = f_int1 + @max_row
17402
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17403
AND @max_row_div2 + @max_row_div4;
17405
# check multiple-4 success: 1
17407
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17408
AND @max_row_div2 + @max_row_div4 + @max_row;
17410
# check multiple-5 success: 1
17411
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17413
SET f_int1 = @cur_value , f_int2 = @cur_value,
17414
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17415
f_charbig = '#SINGLE#';
17417
# check single-1 success: 1
17418
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17420
SET f_int1 = @cur_value , f_int2 = @cur_value,
17421
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17422
f_charbig = '#SINGLE#';
17424
# check single-2 success: 1
17425
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17426
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17427
UPDATE t1 SET f_int1 = @cur_value2
17428
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17430
# check single-3 success: 1
17431
SET @cur_value1= -1;
17432
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17433
UPDATE t1 SET f_int1 = @cur_value1
17434
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17436
# check single-4 success: 1
17437
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17438
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17440
# check single-5 success: 1
17441
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17443
# check single-6 success: 1
17444
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17445
ERROR HY000: Table has no partition for value 2147483647
17446
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17447
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17448
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17449
f_charbig = '#NULL#';
17451
SET f_int1 = NULL , f_int2 = -@max_row,
17452
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17453
f_charbig = '#NULL#';
17454
# check null success: 1
17456
# check null-1 success: 1
17457
UPDATE t1 SET f_int1 = -@max_row
17458
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17459
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17461
# check null-2 success: 1
17462
UPDATE t1 SET f_int1 = NULL
17463
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17464
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17466
# check null-3 success: 1
17468
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17469
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17471
# check null-4 success: 1
17473
WHERE f_int1 = 0 AND f_int2 = 0
17474
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17475
AND f_charbig = '#NULL#';
17477
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17478
SELECT f_int1, f_int1, '', '', 'was inserted'
17479
FROM t0_template source_tab
17480
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17482
# check transactions-1 success: 1
17485
# check transactions-2 success: 1
17488
# check transactions-3 success: 1
17489
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17493
# check transactions-4 success: 1
17494
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17495
SELECT f_int1, f_int1, '', '', 'was inserted'
17496
FROM t0_template source_tab
17497
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17499
# check transactions-5 success: 1
17502
# check transactions-6 success: 1
17503
# INFO: Storage engine used for t1 seems to be transactional.
17506
# check transactions-7 success: 1
17507
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17509
SET @@session.sql_mode = 'traditional';
17510
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17511
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17512
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17513
'', '', 'was inserted' FROM t0_template
17514
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17515
ERROR 22012: Division by 0
17518
# check transactions-8 success: 1
17519
# INFO: Storage engine used for t1 seems to be able to revert
17520
# changes made by the failing statement.
17521
SET @@session.sql_mode = '';
17523
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17525
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17527
# check special-1 success: 1
17528
UPDATE t1 SET f_charbig = '';
17530
# check special-2 success: 1
17531
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17532
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17533
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17534
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17535
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17536
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17537
'just inserted' FROM t0_template
17538
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17539
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17541
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17542
f_charbig = 'updated by trigger'
17543
WHERE f_int1 = new.f_int1;
17545
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17546
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17547
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17549
# check trigger-1 success: 1
17550
DROP TRIGGER trg_1;
17551
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17552
f_int2 = CAST(f_char1 AS SIGNED INT),
17553
f_charbig = 'just inserted'
17554
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17556
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17557
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17558
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17559
'just inserted' FROM t0_template
17560
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17561
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17563
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17564
f_charbig = 'updated by trigger'
17565
WHERE f_int1 = new.f_int1;
17567
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17568
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17569
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17571
# check trigger-2 success: 1
17572
DROP TRIGGER trg_1;
17573
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17574
f_int2 = CAST(f_char1 AS SIGNED INT),
17575
f_charbig = 'just inserted'
17576
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17578
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17579
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17580
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17581
'just inserted' FROM t0_template
17582
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17583
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17585
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17586
f_charbig = 'updated by trigger'
17587
WHERE f_int1 = new.f_int1;
17589
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17590
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17592
# check trigger-3 success: 1
17593
DROP TRIGGER trg_1;
17594
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17595
f_int2 = CAST(f_char1 AS SIGNED INT),
17596
f_charbig = 'just inserted'
17597
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17599
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17600
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17601
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17602
'just inserted' FROM t0_template
17603
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17604
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17606
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17607
f_charbig = 'updated by trigger'
17608
WHERE f_int1 = - old.f_int1;
17610
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17611
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17613
# check trigger-4 success: 1
17614
DROP TRIGGER trg_1;
17615
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17616
f_int2 = CAST(f_char1 AS SIGNED INT),
17617
f_charbig = 'just inserted'
17618
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17620
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17621
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17622
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17623
'just inserted' FROM t0_template
17624
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17625
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17627
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17628
f_charbig = 'updated by trigger'
17629
WHERE f_int1 = new.f_int1;
17631
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17632
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17634
# check trigger-5 success: 1
17635
DROP TRIGGER trg_1;
17636
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17637
f_int2 = CAST(f_char1 AS SIGNED INT),
17638
f_charbig = 'just inserted'
17639
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17641
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17642
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17643
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17644
'just inserted' FROM t0_template
17645
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17646
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17648
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17649
f_charbig = 'updated by trigger'
17650
WHERE f_int1 = - old.f_int1;
17652
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17653
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17655
# check trigger-6 success: 1
17656
DROP TRIGGER trg_1;
17657
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17658
f_int2 = CAST(f_char1 AS SIGNED INT),
17659
f_charbig = 'just inserted'
17660
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17662
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17663
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17664
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17665
'just inserted' FROM t0_template
17666
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17667
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17669
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17670
f_charbig = 'updated by trigger'
17671
WHERE f_int1 = - old.f_int1;
17674
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17676
# check trigger-7 success: 1
17677
DROP TRIGGER trg_1;
17678
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17679
f_int2 = CAST(f_char1 AS SIGNED INT),
17680
f_charbig = 'just inserted'
17681
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17683
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17684
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17685
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17686
'just inserted' FROM t0_template
17687
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17688
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17690
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17691
f_charbig = 'updated by trigger'
17692
WHERE f_int1 = - old.f_int1;
17695
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17697
# check trigger-8 success: 1
17698
DROP TRIGGER trg_1;
17699
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17700
f_int2 = CAST(f_char1 AS SIGNED INT),
17701
f_charbig = 'just inserted'
17702
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17704
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17706
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17707
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17709
SET new.f_int1 = old.f_int1 + @max_row,
17710
new.f_int2 = old.f_int2 - @max_row,
17711
new.f_charbig = '####updated per update trigger####';
17714
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17715
f_charbig = '####updated per update statement itself####';
17717
# check trigger-9 success: 1
17718
DROP TRIGGER trg_2;
17719
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17720
f_int2 = CAST(f_char1 AS SIGNED INT),
17721
f_charbig = CONCAT('===',f_char1,'===');
17722
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17724
SET new.f_int1 = new.f_int1 + @max_row,
17725
new.f_int2 = new.f_int2 - @max_row,
17726
new.f_charbig = '####updated per update trigger####';
17729
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17730
f_charbig = '####updated per update statement itself####';
17732
# check trigger-10 success: 1
17733
DROP TRIGGER trg_2;
17734
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17735
f_int2 = CAST(f_char1 AS SIGNED INT),
17736
f_charbig = CONCAT('===',f_char1,'===');
17737
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17739
SET new.f_int1 = @my_max1 + @counter,
17740
new.f_int2 = @my_min2 - @counter,
17741
new.f_charbig = '####updated per insert trigger####';
17742
SET @counter = @counter + 1;
17745
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17746
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17747
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17748
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17749
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17751
DROP TRIGGER trg_3;
17753
# check trigger-11 success: 1
17755
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17756
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17757
AND f_charbig = '####updated per insert trigger####';
17758
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17760
SET new.f_int1 = @my_max1 + @counter,
17761
new.f_int2 = @my_min2 - @counter,
17762
new.f_charbig = '####updated per insert trigger####';
17763
SET @counter = @counter + 1;
17766
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17767
INSERT INTO t1 (f_char1, f_char2, f_charbig)
17768
SELECT CAST(f_int1 AS CHAR),
17769
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17770
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17772
DROP TRIGGER trg_3;
17774
# check trigger-12 success: 1
17776
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17777
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17778
AND f_charbig = '####updated per insert trigger####';
17780
Table Op Msg_type Msg_text
17781
test.t1 analyze status OK
17782
CHECK TABLE t1 EXTENDED;
17783
Table Op Msg_type Msg_text
17784
test.t1 check status OK
17785
CHECKSUM TABLE t1 EXTENDED;
17787
test.t1 <some_value>
17789
Table Op Msg_type Msg_text
17790
test.t1 optimize status OK
17791
# check layout success: 1
17792
REPAIR TABLE t1 EXTENDED;
17793
Table Op Msg_type Msg_text
17794
test.t1 repair note The storage engine for the table doesn't support repair
17795
# check layout success: 1
17798
# check TRUNCATE success: 1
17799
# check layout success: 1
17800
# End usability test (inc/partition_check.inc)
17807
f_charbig VARCHAR(1000)
17810
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
17811
(PARTITION part_1 VALUES LESS THAN (0),
17812
PARTITION part_2 VALUES LESS THAN (5),
17813
PARTITION part_3 VALUES LESS THAN (10),
17814
PARTITION part_4 VALUES LESS THAN (2147483646));
17815
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17816
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17817
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17818
ALTER TABLE t1 REBUILD PARTITION part_1;
17819
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17820
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17821
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17822
# Start usability test (inc/partition_check.inc)
17824
SHOW CREATE TABLE t1;
17826
t1 CREATE TABLE `t1` (
17827
`f_int1` int(11) DEFAULT NULL,
17828
`f_int2` int(11) DEFAULT NULL,
17829
`f_char1` char(20) DEFAULT NULL,
17830
`f_char2` char(20) DEFAULT NULL,
17831
`f_charbig` varchar(1000) DEFAULT NULL
17832
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
17834
# check prerequisites-1 success: 1
17835
# check COUNT(*) success: 1
17836
# check MIN/MAX(f_int1) success: 1
17837
# check MIN/MAX(f_int2) success: 1
17838
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17839
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17840
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17841
WHERE f_int1 IN (2,3);
17842
# check prerequisites-3 success: 1
17843
DELETE FROM t1 WHERE f_charbig = 'delete me';
17844
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17845
# check read via f_int1 success: 1
17846
# check read via f_int2 success: 1
17848
# check multiple-1 success: 1
17849
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17851
# check multiple-2 success: 1
17852
INSERT INTO t1 SELECT * FROM t0_template
17853
WHERE MOD(f_int1,3) = 0;
17855
# check multiple-3 success: 1
17856
UPDATE t1 SET f_int1 = f_int1 + @max_row
17857
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17858
AND @max_row_div2 + @max_row_div4;
17860
# check multiple-4 success: 1
17862
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17863
AND @max_row_div2 + @max_row_div4 + @max_row;
17865
# check multiple-5 success: 1
17866
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17868
SET f_int1 = @cur_value , f_int2 = @cur_value,
17869
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17870
f_charbig = '#SINGLE#';
17872
# check single-1 success: 1
17873
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17875
SET f_int1 = @cur_value , f_int2 = @cur_value,
17876
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17877
f_charbig = '#SINGLE#';
17879
# check single-2 success: 1
17880
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17881
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17882
UPDATE t1 SET f_int1 = @cur_value2
17883
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17885
# check single-3 success: 1
17886
SET @cur_value1= -1;
17887
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17888
UPDATE t1 SET f_int1 = @cur_value1
17889
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17891
# check single-4 success: 1
17892
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17893
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17895
# check single-5 success: 1
17896
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17898
# check single-6 success: 1
17899
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17901
# check single-7 success: 1
17902
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17903
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17904
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17905
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17906
f_charbig = '#NULL#';
17908
SET f_int1 = NULL , f_int2 = -@max_row,
17909
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17910
f_charbig = '#NULL#';
17911
# check null success: 1
17913
# check null-1 success: 1
17914
UPDATE t1 SET f_int1 = -@max_row
17915
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17916
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17918
# check null-2 success: 1
17919
UPDATE t1 SET f_int1 = NULL
17920
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17921
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17923
# check null-3 success: 1
17925
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17926
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17928
# check null-4 success: 1
17930
WHERE f_int1 = 0 AND f_int2 = 0
17931
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17932
AND f_charbig = '#NULL#';
17934
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17935
SELECT f_int1, f_int1, '', '', 'was inserted'
17936
FROM t0_template source_tab
17937
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17939
# check transactions-1 success: 1
17942
# check transactions-2 success: 1
17945
# check transactions-3 success: 1
17946
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17950
# check transactions-4 success: 1
17951
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17952
SELECT f_int1, f_int1, '', '', 'was inserted'
17953
FROM t0_template source_tab
17954
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17956
# check transactions-5 success: 1
17959
# check transactions-6 success: 1
17960
# INFO: Storage engine used for t1 seems to be transactional.
17963
# check transactions-7 success: 1
17964
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17966
SET @@session.sql_mode = 'traditional';
17967
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17968
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17969
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17970
'', '', 'was inserted' FROM t0_template
17971
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17972
ERROR 22012: Division by 0
17975
# check transactions-8 success: 1
17976
# INFO: Storage engine used for t1 seems to be able to revert
17977
# changes made by the failing statement.
17978
SET @@session.sql_mode = '';
17980
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17982
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17984
# check special-1 success: 1
17985
UPDATE t1 SET f_charbig = '';
17987
# check special-2 success: 1
17988
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17989
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17990
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17991
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17992
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17993
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17994
'just inserted' FROM t0_template
17995
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17996
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17998
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17999
f_charbig = 'updated by trigger'
18000
WHERE f_int1 = new.f_int1;
18002
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18003
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18004
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18006
# check trigger-1 success: 1
18007
DROP TRIGGER trg_1;
18008
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18009
f_int2 = CAST(f_char1 AS SIGNED INT),
18010
f_charbig = 'just inserted'
18011
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18013
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18014
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18015
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18016
'just inserted' FROM t0_template
18017
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18018
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18020
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18021
f_charbig = 'updated by trigger'
18022
WHERE f_int1 = new.f_int1;
18024
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18025
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18026
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18028
# check trigger-2 success: 1
18029
DROP TRIGGER trg_1;
18030
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18031
f_int2 = CAST(f_char1 AS SIGNED INT),
18032
f_charbig = 'just inserted'
18033
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18035
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18036
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18037
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18038
'just inserted' FROM t0_template
18039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18040
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18042
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18043
f_charbig = 'updated by trigger'
18044
WHERE f_int1 = new.f_int1;
18046
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18047
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18049
# check trigger-3 success: 1
18050
DROP TRIGGER trg_1;
18051
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18052
f_int2 = CAST(f_char1 AS SIGNED INT),
18053
f_charbig = 'just inserted'
18054
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18056
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18057
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18058
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18059
'just inserted' FROM t0_template
18060
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18061
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18063
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18064
f_charbig = 'updated by trigger'
18065
WHERE f_int1 = - old.f_int1;
18067
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18068
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18070
# check trigger-4 success: 1
18071
DROP TRIGGER trg_1;
18072
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18073
f_int2 = CAST(f_char1 AS SIGNED INT),
18074
f_charbig = 'just inserted'
18075
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18077
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18078
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18079
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18080
'just inserted' FROM t0_template
18081
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18082
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18084
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18085
f_charbig = 'updated by trigger'
18086
WHERE f_int1 = new.f_int1;
18088
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18089
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18091
# check trigger-5 success: 1
18092
DROP TRIGGER trg_1;
18093
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18094
f_int2 = CAST(f_char1 AS SIGNED INT),
18095
f_charbig = 'just inserted'
18096
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18098
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18099
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18100
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18101
'just inserted' FROM t0_template
18102
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18103
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18105
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18106
f_charbig = 'updated by trigger'
18107
WHERE f_int1 = - old.f_int1;
18109
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18110
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18112
# check trigger-6 success: 1
18113
DROP TRIGGER trg_1;
18114
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18115
f_int2 = CAST(f_char1 AS SIGNED INT),
18116
f_charbig = 'just inserted'
18117
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18119
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18120
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18121
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18122
'just inserted' FROM t0_template
18123
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18124
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18126
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18127
f_charbig = 'updated by trigger'
18128
WHERE f_int1 = - old.f_int1;
18131
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18133
# check trigger-7 success: 1
18134
DROP TRIGGER trg_1;
18135
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18136
f_int2 = CAST(f_char1 AS SIGNED INT),
18137
f_charbig = 'just inserted'
18138
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18140
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18141
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18142
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18143
'just inserted' FROM t0_template
18144
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18145
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18147
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18148
f_charbig = 'updated by trigger'
18149
WHERE f_int1 = - old.f_int1;
18152
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18154
# check trigger-8 success: 1
18155
DROP TRIGGER trg_1;
18156
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18157
f_int2 = CAST(f_char1 AS SIGNED INT),
18158
f_charbig = 'just inserted'
18159
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18161
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18163
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18164
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18166
SET new.f_int1 = old.f_int1 + @max_row,
18167
new.f_int2 = old.f_int2 - @max_row,
18168
new.f_charbig = '####updated per update trigger####';
18171
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18172
f_charbig = '####updated per update statement itself####';
18174
# check trigger-9 success: 1
18175
DROP TRIGGER trg_2;
18176
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18177
f_int2 = CAST(f_char1 AS SIGNED INT),
18178
f_charbig = CONCAT('===',f_char1,'===');
18179
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18181
SET new.f_int1 = new.f_int1 + @max_row,
18182
new.f_int2 = new.f_int2 - @max_row,
18183
new.f_charbig = '####updated per update trigger####';
18186
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18187
f_charbig = '####updated per update statement itself####';
18189
# check trigger-10 success: 1
18190
DROP TRIGGER trg_2;
18191
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18192
f_int2 = CAST(f_char1 AS SIGNED INT),
18193
f_charbig = CONCAT('===',f_char1,'===');
18194
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18196
SET new.f_int1 = @my_max1 + @counter,
18197
new.f_int2 = @my_min2 - @counter,
18198
new.f_charbig = '####updated per insert trigger####';
18199
SET @counter = @counter + 1;
18202
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18203
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18204
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18205
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18206
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18208
DROP TRIGGER trg_3;
18210
# check trigger-11 success: 1
18212
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18213
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18214
AND f_charbig = '####updated per insert trigger####';
18215
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18217
SET new.f_int1 = @my_max1 + @counter,
18218
new.f_int2 = @my_min2 - @counter,
18219
new.f_charbig = '####updated per insert trigger####';
18220
SET @counter = @counter + 1;
18223
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18224
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18225
SELECT CAST(f_int1 AS CHAR),
18226
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18227
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18229
DROP TRIGGER trg_3;
18231
# check trigger-12 success: 1
18233
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18234
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18235
AND f_charbig = '####updated per insert trigger####';
18237
Table Op Msg_type Msg_text
18238
test.t1 analyze status OK
18239
CHECK TABLE t1 EXTENDED;
18240
Table Op Msg_type Msg_text
18241
test.t1 check status OK
18242
CHECKSUM TABLE t1 EXTENDED;
18244
test.t1 <some_value>
18246
Table Op Msg_type Msg_text
18247
test.t1 optimize status OK
18248
# check layout success: 1
18249
REPAIR TABLE t1 EXTENDED;
18250
Table Op Msg_type Msg_text
18251
test.t1 repair note The storage engine for the table doesn't support repair
18252
# check layout success: 1
18255
# check TRUNCATE success: 1
18256
# check layout success: 1
18257
# End usability test (inc/partition_check.inc)
18264
f_charbig VARCHAR(1000)
18267
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
18268
(PARTITION part_1 VALUES LESS THAN (0)
18269
(SUBPARTITION subpart11, SUBPARTITION subpart12),
18270
PARTITION part_2 VALUES LESS THAN (5)
18271
(SUBPARTITION subpart21, SUBPARTITION subpart22),
18272
PARTITION part_3 VALUES LESS THAN (10)
18273
(SUBPARTITION subpart31, SUBPARTITION subpart32),
18274
PARTITION part_4 VALUES LESS THAN (2147483646)
18275
(SUBPARTITION subpart41, SUBPARTITION subpart42));
18276
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18277
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18278
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18279
ALTER TABLE t1 REBUILD PARTITION part_1;
18280
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18281
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18282
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18283
# Start usability test (inc/partition_check.inc)
18285
SHOW CREATE TABLE t1;
18287
t1 CREATE TABLE `t1` (
18288
`f_int1` int(11) DEFAULT NULL,
18289
`f_int2` int(11) DEFAULT NULL,
18290
`f_char1` char(20) DEFAULT NULL,
18291
`f_char2` char(20) DEFAULT NULL,
18292
`f_charbig` varchar(1000) DEFAULT NULL
18293
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
18295
# check prerequisites-1 success: 1
18296
# check COUNT(*) success: 1
18297
# check MIN/MAX(f_int1) success: 1
18298
# check MIN/MAX(f_int2) success: 1
18299
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18300
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18301
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18302
WHERE f_int1 IN (2,3);
18303
# check prerequisites-3 success: 1
18304
DELETE FROM t1 WHERE f_charbig = 'delete me';
18305
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
18306
# check read via f_int1 success: 1
18307
# check read via f_int2 success: 1
18309
# check multiple-1 success: 1
18310
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18312
# check multiple-2 success: 1
18313
INSERT INTO t1 SELECT * FROM t0_template
18314
WHERE MOD(f_int1,3) = 0;
18316
# check multiple-3 success: 1
18317
UPDATE t1 SET f_int1 = f_int1 + @max_row
18318
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18319
AND @max_row_div2 + @max_row_div4;
18321
# check multiple-4 success: 1
18323
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18324
AND @max_row_div2 + @max_row_div4 + @max_row;
18326
# check multiple-5 success: 1
18327
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18329
SET f_int1 = @cur_value , f_int2 = @cur_value,
18330
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18331
f_charbig = '#SINGLE#';
18333
# check single-1 success: 1
18334
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18336
SET f_int1 = @cur_value , f_int2 = @cur_value,
18337
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18338
f_charbig = '#SINGLE#';
18340
# check single-2 success: 1
18341
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18342
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18343
UPDATE t1 SET f_int1 = @cur_value2
18344
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18346
# check single-3 success: 1
18347
SET @cur_value1= -1;
18348
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18349
UPDATE t1 SET f_int1 = @cur_value1
18350
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18352
# check single-4 success: 1
18353
SELECT MAX(f_int1) INTO @cur_value FROM t1;
18354
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18356
# check single-5 success: 1
18357
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18359
# check single-6 success: 1
18360
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18361
ERROR HY000: Table has no partition for value 2147483647
18362
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18363
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18364
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18365
f_charbig = '#NULL#';
18367
SET f_int1 = NULL , f_int2 = -@max_row,
18368
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18369
f_charbig = '#NULL#';
18370
# check null success: 1
18372
# check null-1 success: 1
18373
UPDATE t1 SET f_int1 = -@max_row
18374
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18375
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18377
# check null-2 success: 1
18378
UPDATE t1 SET f_int1 = NULL
18379
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18380
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18382
# check null-3 success: 1
18384
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18385
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18387
# check null-4 success: 1
18389
WHERE f_int1 = 0 AND f_int2 = 0
18390
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18391
AND f_charbig = '#NULL#';
18393
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18394
SELECT f_int1, f_int1, '', '', 'was inserted'
18395
FROM t0_template source_tab
18396
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18398
# check transactions-1 success: 1
18401
# check transactions-2 success: 1
18404
# check transactions-3 success: 1
18405
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18409
# check transactions-4 success: 1
18410
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18411
SELECT f_int1, f_int1, '', '', 'was inserted'
18412
FROM t0_template source_tab
18413
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18415
# check transactions-5 success: 1
18418
# check transactions-6 success: 1
18419
# INFO: Storage engine used for t1 seems to be transactional.
18422
# check transactions-7 success: 1
18423
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18425
SET @@session.sql_mode = 'traditional';
18426
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18427
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18428
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18429
'', '', 'was inserted' FROM t0_template
18430
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18431
ERROR 22012: Division by 0
18434
# check transactions-8 success: 1
18435
# INFO: Storage engine used for t1 seems to be able to revert
18436
# changes made by the failing statement.
18437
SET @@session.sql_mode = '';
18439
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18441
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18443
# check special-1 success: 1
18444
UPDATE t1 SET f_charbig = '';
18446
# check special-2 success: 1
18447
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18448
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18449
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18450
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18451
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18452
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18453
'just inserted' FROM t0_template
18454
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18455
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18457
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18458
f_charbig = 'updated by trigger'
18459
WHERE f_int1 = new.f_int1;
18461
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18462
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18463
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18465
# check trigger-1 success: 1
18466
DROP TRIGGER trg_1;
18467
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18468
f_int2 = CAST(f_char1 AS SIGNED INT),
18469
f_charbig = 'just inserted'
18470
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18472
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18473
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18474
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18475
'just inserted' FROM t0_template
18476
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18477
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18479
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18480
f_charbig = 'updated by trigger'
18481
WHERE f_int1 = new.f_int1;
18483
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18484
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18485
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18487
# check trigger-2 success: 1
18488
DROP TRIGGER trg_1;
18489
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18490
f_int2 = CAST(f_char1 AS SIGNED INT),
18491
f_charbig = 'just inserted'
18492
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18494
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18495
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18496
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18497
'just inserted' FROM t0_template
18498
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18499
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18501
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18502
f_charbig = 'updated by trigger'
18503
WHERE f_int1 = new.f_int1;
18505
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18506
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18508
# check trigger-3 success: 1
18509
DROP TRIGGER trg_1;
18510
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18511
f_int2 = CAST(f_char1 AS SIGNED INT),
18512
f_charbig = 'just inserted'
18513
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18515
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18516
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18517
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18518
'just inserted' FROM t0_template
18519
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18520
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18522
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18523
f_charbig = 'updated by trigger'
18524
WHERE f_int1 = - old.f_int1;
18526
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18527
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18529
# check trigger-4 success: 1
18530
DROP TRIGGER trg_1;
18531
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18532
f_int2 = CAST(f_char1 AS SIGNED INT),
18533
f_charbig = 'just inserted'
18534
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18536
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18537
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18538
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18539
'just inserted' FROM t0_template
18540
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18541
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18543
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18544
f_charbig = 'updated by trigger'
18545
WHERE f_int1 = new.f_int1;
18547
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18548
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18550
# check trigger-5 success: 1
18551
DROP TRIGGER trg_1;
18552
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18553
f_int2 = CAST(f_char1 AS SIGNED INT),
18554
f_charbig = 'just inserted'
18555
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18557
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18558
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18559
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18560
'just inserted' FROM t0_template
18561
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18562
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18564
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18565
f_charbig = 'updated by trigger'
18566
WHERE f_int1 = - old.f_int1;
18568
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18569
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18571
# check trigger-6 success: 1
18572
DROP TRIGGER trg_1;
18573
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18574
f_int2 = CAST(f_char1 AS SIGNED INT),
18575
f_charbig = 'just inserted'
18576
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18578
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18579
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18580
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18581
'just inserted' FROM t0_template
18582
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18583
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18585
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18586
f_charbig = 'updated by trigger'
18587
WHERE f_int1 = - old.f_int1;
18590
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18592
# check trigger-7 success: 1
18593
DROP TRIGGER trg_1;
18594
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18595
f_int2 = CAST(f_char1 AS SIGNED INT),
18596
f_charbig = 'just inserted'
18597
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18599
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18600
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18601
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18602
'just inserted' FROM t0_template
18603
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18604
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18606
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18607
f_charbig = 'updated by trigger'
18608
WHERE f_int1 = - old.f_int1;
18611
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18613
# check trigger-8 success: 1
18614
DROP TRIGGER trg_1;
18615
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18616
f_int2 = CAST(f_char1 AS SIGNED INT),
18617
f_charbig = 'just inserted'
18618
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18620
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18622
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18623
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18625
SET new.f_int1 = old.f_int1 + @max_row,
18626
new.f_int2 = old.f_int2 - @max_row,
18627
new.f_charbig = '####updated per update trigger####';
18630
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18631
f_charbig = '####updated per update statement itself####';
18633
# check trigger-9 success: 1
18634
DROP TRIGGER trg_2;
18635
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18636
f_int2 = CAST(f_char1 AS SIGNED INT),
18637
f_charbig = CONCAT('===',f_char1,'===');
18638
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18640
SET new.f_int1 = new.f_int1 + @max_row,
18641
new.f_int2 = new.f_int2 - @max_row,
18642
new.f_charbig = '####updated per update trigger####';
18645
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18646
f_charbig = '####updated per update statement itself####';
18648
# check trigger-10 success: 1
18649
DROP TRIGGER trg_2;
18650
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18651
f_int2 = CAST(f_char1 AS SIGNED INT),
18652
f_charbig = CONCAT('===',f_char1,'===');
18653
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18655
SET new.f_int1 = @my_max1 + @counter,
18656
new.f_int2 = @my_min2 - @counter,
18657
new.f_charbig = '####updated per insert trigger####';
18658
SET @counter = @counter + 1;
18661
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18662
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18663
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18664
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18665
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18667
DROP TRIGGER trg_3;
18669
# check trigger-11 success: 1
18671
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18672
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18673
AND f_charbig = '####updated per insert trigger####';
18674
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18676
SET new.f_int1 = @my_max1 + @counter,
18677
new.f_int2 = @my_min2 - @counter,
18678
new.f_charbig = '####updated per insert trigger####';
18679
SET @counter = @counter + 1;
18682
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18683
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18684
SELECT CAST(f_int1 AS CHAR),
18685
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18686
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18688
DROP TRIGGER trg_3;
18690
# check trigger-12 success: 1
18692
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18693
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18694
AND f_charbig = '####updated per insert trigger####';
18696
Table Op Msg_type Msg_text
18697
test.t1 analyze status OK
18698
CHECK TABLE t1 EXTENDED;
18699
Table Op Msg_type Msg_text
18700
test.t1 check status OK
18701
CHECKSUM TABLE t1 EXTENDED;
18703
test.t1 <some_value>
18705
Table Op Msg_type Msg_text
18706
test.t1 optimize status OK
18707
# check layout success: 1
18708
REPAIR TABLE t1 EXTENDED;
18709
Table Op Msg_type Msg_text
18710
test.t1 repair note The storage engine for the table doesn't support repair
18711
# check layout success: 1
18714
# check TRUNCATE success: 1
18715
# check layout success: 1
18716
# End usability test (inc/partition_check.inc)
18723
f_charbig VARCHAR(1000)
18726
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
18727
(PARTITION part_1 VALUES IN (0)
18728
(SUBPARTITION sp11, SUBPARTITION sp12),
18729
PARTITION part_2 VALUES IN (1)
18730
(SUBPARTITION sp21, SUBPARTITION sp22),
18731
PARTITION part_3 VALUES IN (2)
18732
(SUBPARTITION sp31, SUBPARTITION sp32),
18733
PARTITION part_4 VALUES IN (NULL)
18734
(SUBPARTITION sp41, SUBPARTITION sp42));
18735
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18736
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18737
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18738
ALTER TABLE t1 REBUILD PARTITION part_1;
18739
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18740
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18741
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18742
# Start usability test (inc/partition_check.inc)
18744
SHOW CREATE TABLE t1;
18746
t1 CREATE TABLE `t1` (
18747
`f_int1` int(11) DEFAULT NULL,
18748
`f_int2` int(11) DEFAULT NULL,
18749
`f_char1` char(20) DEFAULT NULL,
18750
`f_char2` char(20) DEFAULT NULL,
18751
`f_charbig` varchar(1000) DEFAULT NULL
18752
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
18754
# check prerequisites-1 success: 1
18755
# check COUNT(*) success: 1
18756
# check MIN/MAX(f_int1) success: 1
18757
# check MIN/MAX(f_int2) success: 1
18758
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18759
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18760
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18761
WHERE f_int1 IN (2,3);
18762
# check prerequisites-3 success: 1
18763
DELETE FROM t1 WHERE f_charbig = 'delete me';
18764
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
18765
# check read via f_int1 success: 1
18766
# check read via f_int2 success: 1
18768
# check multiple-1 success: 1
18769
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18771
# check multiple-2 success: 1
18772
INSERT INTO t1 SELECT * FROM t0_template
18773
WHERE MOD(f_int1,3) = 0;
18775
# check multiple-3 success: 1
18776
UPDATE t1 SET f_int1 = f_int1 + @max_row
18777
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18778
AND @max_row_div2 + @max_row_div4;
18780
# check multiple-4 success: 1
18782
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18783
AND @max_row_div2 + @max_row_div4 + @max_row;
18785
# check multiple-5 success: 1
18786
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18788
SET f_int1 = @cur_value , f_int2 = @cur_value,
18789
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18790
f_charbig = '#SINGLE#';
18792
# check single-1 success: 1
18793
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18795
SET f_int1 = @cur_value , f_int2 = @cur_value,
18796
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18797
f_charbig = '#SINGLE#';
18799
# check single-2 success: 1
18800
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18801
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18802
UPDATE t1 SET f_int1 = @cur_value2
18803
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18805
# check single-3 success: 1
18806
SET @cur_value1= -1;
18807
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18808
UPDATE t1 SET f_int1 = @cur_value1
18809
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18811
# check single-4 success: 1
18812
SELECT MAX(f_int1) INTO @cur_value FROM t1;
18813
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18815
# check single-5 success: 1
18816
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18818
# check single-6 success: 1
18819
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18821
# check single-7 success: 1
18822
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18823
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18824
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18825
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18826
f_charbig = '#NULL#';
18828
SET f_int1 = NULL , f_int2 = -@max_row,
18829
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18830
f_charbig = '#NULL#';
18831
# check null success: 1
18833
# check null-1 success: 1
18834
UPDATE t1 SET f_int1 = -@max_row
18835
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18836
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18838
# check null-2 success: 1
18839
UPDATE t1 SET f_int1 = NULL
18840
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18841
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18843
# check null-3 success: 1
18845
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18846
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18848
# check null-4 success: 1
18850
WHERE f_int1 = 0 AND f_int2 = 0
18851
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18852
AND f_charbig = '#NULL#';
18854
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18855
SELECT f_int1, f_int1, '', '', 'was inserted'
18856
FROM t0_template source_tab
18857
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18859
# check transactions-1 success: 1
18862
# check transactions-2 success: 1
18865
# check transactions-3 success: 1
18866
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18870
# check transactions-4 success: 1
18871
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18872
SELECT f_int1, f_int1, '', '', 'was inserted'
18873
FROM t0_template source_tab
18874
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18876
# check transactions-5 success: 1
18879
# check transactions-6 success: 1
18880
# INFO: Storage engine used for t1 seems to be transactional.
18883
# check transactions-7 success: 1
18884
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18886
SET @@session.sql_mode = 'traditional';
18887
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18888
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18889
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18890
'', '', 'was inserted' FROM t0_template
18891
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18892
ERROR 22012: Division by 0
18895
# check transactions-8 success: 1
18896
# INFO: Storage engine used for t1 seems to be able to revert
18897
# changes made by the failing statement.
18898
SET @@session.sql_mode = '';
18900
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18902
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18904
# check special-1 success: 1
18905
UPDATE t1 SET f_charbig = '';
18907
# check special-2 success: 1
18908
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18909
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18910
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18911
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18912
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18913
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18914
'just inserted' FROM t0_template
18915
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18916
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18918
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18919
f_charbig = 'updated by trigger'
18920
WHERE f_int1 = new.f_int1;
18922
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18923
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18924
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18926
# check trigger-1 success: 1
18927
DROP TRIGGER trg_1;
18928
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18929
f_int2 = CAST(f_char1 AS SIGNED INT),
18930
f_charbig = 'just inserted'
18931
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18933
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18934
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18935
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18936
'just inserted' FROM t0_template
18937
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18938
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18940
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18941
f_charbig = 'updated by trigger'
18942
WHERE f_int1 = new.f_int1;
18944
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18945
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18946
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18948
# check trigger-2 success: 1
18949
DROP TRIGGER trg_1;
18950
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18951
f_int2 = CAST(f_char1 AS SIGNED INT),
18952
f_charbig = 'just inserted'
18953
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18955
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18956
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18957
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18958
'just inserted' FROM t0_template
18959
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18960
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18962
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18963
f_charbig = 'updated by trigger'
18964
WHERE f_int1 = new.f_int1;
18966
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18967
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18969
# check trigger-3 success: 1
18970
DROP TRIGGER trg_1;
18971
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18972
f_int2 = CAST(f_char1 AS SIGNED INT),
18973
f_charbig = 'just inserted'
18974
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18976
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18977
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18978
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18979
'just inserted' FROM t0_template
18980
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18981
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18983
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18984
f_charbig = 'updated by trigger'
18985
WHERE f_int1 = - old.f_int1;
18987
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18988
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18990
# check trigger-4 success: 1
18991
DROP TRIGGER trg_1;
18992
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18993
f_int2 = CAST(f_char1 AS SIGNED INT),
18994
f_charbig = 'just inserted'
18995
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18997
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18998
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18999
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19000
'just inserted' FROM t0_template
19001
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19002
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19004
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19005
f_charbig = 'updated by trigger'
19006
WHERE f_int1 = new.f_int1;
19008
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19009
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19011
# check trigger-5 success: 1
19012
DROP TRIGGER trg_1;
19013
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19014
f_int2 = CAST(f_char1 AS SIGNED INT),
19015
f_charbig = 'just inserted'
19016
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19018
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19019
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19020
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19021
'just inserted' FROM t0_template
19022
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19023
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19025
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19026
f_charbig = 'updated by trigger'
19027
WHERE f_int1 = - old.f_int1;
19029
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19030
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19032
# check trigger-6 success: 1
19033
DROP TRIGGER trg_1;
19034
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19035
f_int2 = CAST(f_char1 AS SIGNED INT),
19036
f_charbig = 'just inserted'
19037
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19039
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19040
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19041
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19042
'just inserted' FROM t0_template
19043
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19044
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19046
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19047
f_charbig = 'updated by trigger'
19048
WHERE f_int1 = - old.f_int1;
19051
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19053
# check trigger-7 success: 1
19054
DROP TRIGGER trg_1;
19055
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19056
f_int2 = CAST(f_char1 AS SIGNED INT),
19057
f_charbig = 'just inserted'
19058
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19060
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19061
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19062
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19063
'just inserted' FROM t0_template
19064
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19065
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19067
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19068
f_charbig = 'updated by trigger'
19069
WHERE f_int1 = - old.f_int1;
19072
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19074
# check trigger-8 success: 1
19075
DROP TRIGGER trg_1;
19076
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19077
f_int2 = CAST(f_char1 AS SIGNED INT),
19078
f_charbig = 'just inserted'
19079
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19081
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19083
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19084
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19086
SET new.f_int1 = old.f_int1 + @max_row,
19087
new.f_int2 = old.f_int2 - @max_row,
19088
new.f_charbig = '####updated per update trigger####';
19091
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19092
f_charbig = '####updated per update statement itself####';
19094
# check trigger-9 success: 1
19095
DROP TRIGGER trg_2;
19096
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19097
f_int2 = CAST(f_char1 AS SIGNED INT),
19098
f_charbig = CONCAT('===',f_char1,'===');
19099
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19101
SET new.f_int1 = new.f_int1 + @max_row,
19102
new.f_int2 = new.f_int2 - @max_row,
19103
new.f_charbig = '####updated per update trigger####';
19106
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19107
f_charbig = '####updated per update statement itself####';
19109
# check trigger-10 success: 1
19110
DROP TRIGGER trg_2;
19111
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19112
f_int2 = CAST(f_char1 AS SIGNED INT),
19113
f_charbig = CONCAT('===',f_char1,'===');
19114
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19116
SET new.f_int1 = @my_max1 + @counter,
19117
new.f_int2 = @my_min2 - @counter,
19118
new.f_charbig = '####updated per insert trigger####';
19119
SET @counter = @counter + 1;
19122
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19123
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19124
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19125
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19126
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19128
DROP TRIGGER trg_3;
19130
# check trigger-11 success: 1
19132
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19133
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19134
AND f_charbig = '####updated per insert trigger####';
19135
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19137
SET new.f_int1 = @my_max1 + @counter,
19138
new.f_int2 = @my_min2 - @counter,
19139
new.f_charbig = '####updated per insert trigger####';
19140
SET @counter = @counter + 1;
19143
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19144
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19145
SELECT CAST(f_int1 AS CHAR),
19146
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19147
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19149
DROP TRIGGER trg_3;
19151
# check trigger-12 success: 1
19153
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19154
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19155
AND f_charbig = '####updated per insert trigger####';
19157
Table Op Msg_type Msg_text
19158
test.t1 analyze status OK
19159
CHECK TABLE t1 EXTENDED;
19160
Table Op Msg_type Msg_text
19161
test.t1 check status OK
19162
CHECKSUM TABLE t1 EXTENDED;
19164
test.t1 <some_value>
19166
Table Op Msg_type Msg_text
19167
test.t1 optimize status OK
19168
# check layout success: 1
19169
REPAIR TABLE t1 EXTENDED;
19170
Table Op Msg_type Msg_text
19171
test.t1 repair note The storage engine for the table doesn't support repair
19172
# check layout success: 1
19175
# check TRUNCATE success: 1
19176
# check layout success: 1
19177
# End usability test (inc/partition_check.inc)
19184
f_charbig VARCHAR(1000)
19187
PARTITION BY LIST(ABS(MOD(f_int1,2)))
19188
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
19189
(PARTITION part_1 VALUES IN (0),
19190
PARTITION part_2 VALUES IN (1),
19191
PARTITION part_3 VALUES IN (NULL));
19192
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19193
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19194
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19195
ALTER TABLE t1 REBUILD PARTITION part_1;
19196
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19197
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19198
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19199
# Start usability test (inc/partition_check.inc)
19201
SHOW CREATE TABLE t1;
19203
t1 CREATE TABLE `t1` (
19204
`f_int1` int(11) DEFAULT NULL,
19205
`f_int2` int(11) DEFAULT NULL,
19206
`f_char1` char(20) DEFAULT NULL,
19207
`f_char2` char(20) DEFAULT NULL,
19208
`f_charbig` varchar(1000) DEFAULT NULL
19209
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */
19211
# check prerequisites-1 success: 1
19212
# check COUNT(*) success: 1
19213
# check MIN/MAX(f_int1) success: 1
19214
# check MIN/MAX(f_int2) success: 1
19215
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19216
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19217
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19218
WHERE f_int1 IN (2,3);
19219
# check prerequisites-3 success: 1
19220
DELETE FROM t1 WHERE f_charbig = 'delete me';
19221
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
19222
# check read via f_int1 success: 1
19223
# check read via f_int2 success: 1
19225
# check multiple-1 success: 1
19226
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19228
# check multiple-2 success: 1
19229
INSERT INTO t1 SELECT * FROM t0_template
19230
WHERE MOD(f_int1,3) = 0;
19232
# check multiple-3 success: 1
19233
UPDATE t1 SET f_int1 = f_int1 + @max_row
19234
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19235
AND @max_row_div2 + @max_row_div4;
19237
# check multiple-4 success: 1
19239
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19240
AND @max_row_div2 + @max_row_div4 + @max_row;
19242
# check multiple-5 success: 1
19243
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19245
SET f_int1 = @cur_value , f_int2 = @cur_value,
19246
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19247
f_charbig = '#SINGLE#';
19249
# check single-1 success: 1
19250
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19252
SET f_int1 = @cur_value , f_int2 = @cur_value,
19253
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19254
f_charbig = '#SINGLE#';
19256
# check single-2 success: 1
19257
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19258
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19259
UPDATE t1 SET f_int1 = @cur_value2
19260
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19262
# check single-3 success: 1
19263
SET @cur_value1= -1;
19264
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19265
UPDATE t1 SET f_int1 = @cur_value1
19266
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19268
# check single-4 success: 1
19269
SELECT MAX(f_int1) INTO @cur_value FROM t1;
19270
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19272
# check single-5 success: 1
19273
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19275
# check single-6 success: 1
19276
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19278
# check single-7 success: 1
19279
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19280
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19281
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19282
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19283
f_charbig = '#NULL#';
19285
SET f_int1 = NULL , f_int2 = -@max_row,
19286
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19287
f_charbig = '#NULL#';
19288
# check null success: 1
19290
# check null-1 success: 1
19291
UPDATE t1 SET f_int1 = -@max_row
19292
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19293
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19295
# check null-2 success: 1
19296
UPDATE t1 SET f_int1 = NULL
19297
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19298
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19300
# check null-3 success: 1
19302
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19303
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19305
# check null-4 success: 1
19307
WHERE f_int1 = 0 AND f_int2 = 0
19308
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19309
AND f_charbig = '#NULL#';
19311
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19312
SELECT f_int1, f_int1, '', '', 'was inserted'
19313
FROM t0_template source_tab
19314
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19316
# check transactions-1 success: 1
19319
# check transactions-2 success: 1
19322
# check transactions-3 success: 1
19323
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19327
# check transactions-4 success: 1
19328
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19329
SELECT f_int1, f_int1, '', '', 'was inserted'
19330
FROM t0_template source_tab
19331
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19333
# check transactions-5 success: 1
19336
# check transactions-6 success: 1
19337
# INFO: Storage engine used for t1 seems to be transactional.
19340
# check transactions-7 success: 1
19341
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19343
SET @@session.sql_mode = 'traditional';
19344
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19345
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19346
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19347
'', '', 'was inserted' FROM t0_template
19348
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19349
ERROR 22012: Division by 0
19352
# check transactions-8 success: 1
19353
# INFO: Storage engine used for t1 seems to be able to revert
19354
# changes made by the failing statement.
19355
SET @@session.sql_mode = '';
19357
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19359
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19361
# check special-1 success: 1
19362
UPDATE t1 SET f_charbig = '';
19364
# check special-2 success: 1
19365
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19366
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19367
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19368
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19369
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19370
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19371
'just inserted' FROM t0_template
19372
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19373
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19375
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19376
f_charbig = 'updated by trigger'
19377
WHERE f_int1 = new.f_int1;
19379
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19380
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19381
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19383
# check trigger-1 success: 1
19384
DROP TRIGGER trg_1;
19385
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19386
f_int2 = CAST(f_char1 AS SIGNED INT),
19387
f_charbig = 'just inserted'
19388
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19390
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19391
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19392
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19393
'just inserted' FROM t0_template
19394
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19395
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19397
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19398
f_charbig = 'updated by trigger'
19399
WHERE f_int1 = new.f_int1;
19401
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19402
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19403
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19405
# check trigger-2 success: 1
19406
DROP TRIGGER trg_1;
19407
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19408
f_int2 = CAST(f_char1 AS SIGNED INT),
19409
f_charbig = 'just inserted'
19410
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19412
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19413
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19414
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19415
'just inserted' FROM t0_template
19416
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19417
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19419
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19420
f_charbig = 'updated by trigger'
19421
WHERE f_int1 = new.f_int1;
19423
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19424
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19426
# check trigger-3 success: 1
19427
DROP TRIGGER trg_1;
19428
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19429
f_int2 = CAST(f_char1 AS SIGNED INT),
19430
f_charbig = 'just inserted'
19431
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19433
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19434
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19435
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19436
'just inserted' FROM t0_template
19437
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19438
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19440
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19441
f_charbig = 'updated by trigger'
19442
WHERE f_int1 = - old.f_int1;
19444
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19445
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19447
# check trigger-4 success: 1
19448
DROP TRIGGER trg_1;
19449
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19450
f_int2 = CAST(f_char1 AS SIGNED INT),
19451
f_charbig = 'just inserted'
19452
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19454
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19455
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19456
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19457
'just inserted' FROM t0_template
19458
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19459
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19461
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19462
f_charbig = 'updated by trigger'
19463
WHERE f_int1 = new.f_int1;
19465
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19466
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19468
# check trigger-5 success: 1
19469
DROP TRIGGER trg_1;
19470
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19471
f_int2 = CAST(f_char1 AS SIGNED INT),
19472
f_charbig = 'just inserted'
19473
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19475
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19476
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19477
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19478
'just inserted' FROM t0_template
19479
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19480
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19482
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19483
f_charbig = 'updated by trigger'
19484
WHERE f_int1 = - old.f_int1;
19486
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19487
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19489
# check trigger-6 success: 1
19490
DROP TRIGGER trg_1;
19491
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19492
f_int2 = CAST(f_char1 AS SIGNED INT),
19493
f_charbig = 'just inserted'
19494
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19496
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19497
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19498
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19499
'just inserted' FROM t0_template
19500
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19501
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19503
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19504
f_charbig = 'updated by trigger'
19505
WHERE f_int1 = - old.f_int1;
19508
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19510
# check trigger-7 success: 1
19511
DROP TRIGGER trg_1;
19512
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19513
f_int2 = CAST(f_char1 AS SIGNED INT),
19514
f_charbig = 'just inserted'
19515
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19517
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19518
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19519
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19520
'just inserted' FROM t0_template
19521
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19522
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19524
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19525
f_charbig = 'updated by trigger'
19526
WHERE f_int1 = - old.f_int1;
19529
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19531
# check trigger-8 success: 1
19532
DROP TRIGGER trg_1;
19533
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19534
f_int2 = CAST(f_char1 AS SIGNED INT),
19535
f_charbig = 'just inserted'
19536
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19538
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19540
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19541
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19543
SET new.f_int1 = old.f_int1 + @max_row,
19544
new.f_int2 = old.f_int2 - @max_row,
19545
new.f_charbig = '####updated per update trigger####';
19548
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19549
f_charbig = '####updated per update statement itself####';
19551
# check trigger-9 success: 1
19552
DROP TRIGGER trg_2;
19553
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19554
f_int2 = CAST(f_char1 AS SIGNED INT),
19555
f_charbig = CONCAT('===',f_char1,'===');
19556
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19558
SET new.f_int1 = new.f_int1 + @max_row,
19559
new.f_int2 = new.f_int2 - @max_row,
19560
new.f_charbig = '####updated per update trigger####';
19563
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19564
f_charbig = '####updated per update statement itself####';
19566
# check trigger-10 success: 1
19567
DROP TRIGGER trg_2;
19568
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19569
f_int2 = CAST(f_char1 AS SIGNED INT),
19570
f_charbig = CONCAT('===',f_char1,'===');
19571
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19573
SET new.f_int1 = @my_max1 + @counter,
19574
new.f_int2 = @my_min2 - @counter,
19575
new.f_charbig = '####updated per insert trigger####';
19576
SET @counter = @counter + 1;
19579
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19580
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19581
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19582
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19585
DROP TRIGGER trg_3;
19587
# check trigger-11 success: 1
19589
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19590
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19591
AND f_charbig = '####updated per insert trigger####';
19592
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19594
SET new.f_int1 = @my_max1 + @counter,
19595
new.f_int2 = @my_min2 - @counter,
19596
new.f_charbig = '####updated per insert trigger####';
19597
SET @counter = @counter + 1;
19600
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19601
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19602
SELECT CAST(f_int1 AS CHAR),
19603
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19604
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19606
DROP TRIGGER trg_3;
19608
# check trigger-12 success: 1
19610
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19611
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19612
AND f_charbig = '####updated per insert trigger####';
19614
Table Op Msg_type Msg_text
19615
test.t1 analyze status OK
19616
CHECK TABLE t1 EXTENDED;
19617
Table Op Msg_type Msg_text
19618
test.t1 check status OK
19619
CHECKSUM TABLE t1 EXTENDED;
19621
test.t1 <some_value>
19623
Table Op Msg_type Msg_text
19624
test.t1 optimize status OK
19625
# check layout success: 1
19626
REPAIR TABLE t1 EXTENDED;
19627
Table Op Msg_type Msg_text
19628
test.t1 repair note The storage engine for the table doesn't support repair
19629
# check layout success: 1
19632
# check TRUNCATE success: 1
19633
# check layout success: 1
19634
# End usability test (inc/partition_check.inc)
19636
# 4.2 ALTER ... REBUILD PARTITION part_1,part_2;
19637
DROP TABLE IF EXISTS t1;
19643
f_charbig VARCHAR(1000)
19646
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
19647
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19648
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19649
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19650
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
19651
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19652
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19653
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19654
# Start usability test (inc/partition_check.inc)
19656
SHOW CREATE TABLE t1;
19658
t1 CREATE TABLE `t1` (
19659
`f_int1` int(11) DEFAULT NULL,
19660
`f_int2` int(11) DEFAULT NULL,
19661
`f_char1` char(20) DEFAULT NULL,
19662
`f_char2` char(20) DEFAULT NULL,
19663
`f_charbig` varchar(1000) DEFAULT NULL
19664
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */
19666
# check prerequisites-1 success: 1
19667
# check COUNT(*) success: 1
19668
# check MIN/MAX(f_int1) success: 1
19669
# check MIN/MAX(f_int2) success: 1
19670
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19671
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19672
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19673
WHERE f_int1 IN (2,3);
19674
# check prerequisites-3 success: 1
19675
DELETE FROM t1 WHERE f_charbig = 'delete me';
19676
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
19677
# check read via f_int1 success: 1
19678
# check read via f_int2 success: 1
19680
# check multiple-1 success: 1
19681
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19683
# check multiple-2 success: 1
19684
INSERT INTO t1 SELECT * FROM t0_template
19685
WHERE MOD(f_int1,3) = 0;
19687
# check multiple-3 success: 1
19688
UPDATE t1 SET f_int1 = f_int1 + @max_row
19689
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19690
AND @max_row_div2 + @max_row_div4;
19692
# check multiple-4 success: 1
19694
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19695
AND @max_row_div2 + @max_row_div4 + @max_row;
19697
# check multiple-5 success: 1
19698
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19700
SET f_int1 = @cur_value , f_int2 = @cur_value,
19701
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19702
f_charbig = '#SINGLE#';
19704
# check single-1 success: 1
19705
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19707
SET f_int1 = @cur_value , f_int2 = @cur_value,
19708
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19709
f_charbig = '#SINGLE#';
19711
# check single-2 success: 1
19712
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19713
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19714
UPDATE t1 SET f_int1 = @cur_value2
19715
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19717
# check single-3 success: 1
19718
SET @cur_value1= -1;
19719
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19720
UPDATE t1 SET f_int1 = @cur_value1
19721
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19723
# check single-4 success: 1
19724
SELECT MAX(f_int1) INTO @cur_value FROM t1;
19725
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19727
# check single-5 success: 1
19728
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19730
# check single-6 success: 1
19731
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19733
# check single-7 success: 1
19734
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19735
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19736
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19737
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19738
f_charbig = '#NULL#';
19740
SET f_int1 = NULL , f_int2 = -@max_row,
19741
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19742
f_charbig = '#NULL#';
19743
# check null success: 1
19745
# check null-1 success: 1
19746
UPDATE t1 SET f_int1 = -@max_row
19747
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19748
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19750
# check null-2 success: 1
19751
UPDATE t1 SET f_int1 = NULL
19752
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19753
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19755
# check null-3 success: 1
19757
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19758
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19760
# check null-4 success: 1
19762
WHERE f_int1 = 0 AND f_int2 = 0
19763
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19764
AND f_charbig = '#NULL#';
19766
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19767
SELECT f_int1, f_int1, '', '', 'was inserted'
19768
FROM t0_template source_tab
19769
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19771
# check transactions-1 success: 1
19774
# check transactions-2 success: 1
19777
# check transactions-3 success: 1
19778
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19782
# check transactions-4 success: 1
19783
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19784
SELECT f_int1, f_int1, '', '', 'was inserted'
19785
FROM t0_template source_tab
19786
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19788
# check transactions-5 success: 1
19791
# check transactions-6 success: 1
19792
# INFO: Storage engine used for t1 seems to be transactional.
19795
# check transactions-7 success: 1
19796
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19798
SET @@session.sql_mode = 'traditional';
19799
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19800
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19801
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19802
'', '', 'was inserted' FROM t0_template
19803
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19804
ERROR 22012: Division by 0
19807
# check transactions-8 success: 1
19808
# INFO: Storage engine used for t1 seems to be able to revert
19809
# changes made by the failing statement.
19810
SET @@session.sql_mode = '';
19812
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19814
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19816
# check special-1 success: 1
19817
UPDATE t1 SET f_charbig = '';
19819
# check special-2 success: 1
19820
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19821
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19822
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19823
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19824
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19825
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19826
'just inserted' FROM t0_template
19827
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19828
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19830
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19831
f_charbig = 'updated by trigger'
19832
WHERE f_int1 = new.f_int1;
19834
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19835
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19836
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19838
# check trigger-1 success: 1
19839
DROP TRIGGER trg_1;
19840
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19841
f_int2 = CAST(f_char1 AS SIGNED INT),
19842
f_charbig = 'just inserted'
19843
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19845
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19846
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19847
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19848
'just inserted' FROM t0_template
19849
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19850
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19852
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19853
f_charbig = 'updated by trigger'
19854
WHERE f_int1 = new.f_int1;
19856
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19857
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19858
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19860
# check trigger-2 success: 1
19861
DROP TRIGGER trg_1;
19862
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19863
f_int2 = CAST(f_char1 AS SIGNED INT),
19864
f_charbig = 'just inserted'
19865
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19867
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19868
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19869
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19870
'just inserted' FROM t0_template
19871
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19872
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19874
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19875
f_charbig = 'updated by trigger'
19876
WHERE f_int1 = new.f_int1;
19878
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19879
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19881
# check trigger-3 success: 1
19882
DROP TRIGGER trg_1;
19883
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19884
f_int2 = CAST(f_char1 AS SIGNED INT),
19885
f_charbig = 'just inserted'
19886
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19888
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19889
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19890
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19891
'just inserted' FROM t0_template
19892
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19893
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19895
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19896
f_charbig = 'updated by trigger'
19897
WHERE f_int1 = - old.f_int1;
19899
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19900
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19902
# check trigger-4 success: 1
19903
DROP TRIGGER trg_1;
19904
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19905
f_int2 = CAST(f_char1 AS SIGNED INT),
19906
f_charbig = 'just inserted'
19907
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19909
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19910
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19911
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19912
'just inserted' FROM t0_template
19913
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19914
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19916
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19917
f_charbig = 'updated by trigger'
19918
WHERE f_int1 = new.f_int1;
19920
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19921
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19923
# check trigger-5 success: 1
19924
DROP TRIGGER trg_1;
19925
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19926
f_int2 = CAST(f_char1 AS SIGNED INT),
19927
f_charbig = 'just inserted'
19928
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19930
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19931
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19932
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19933
'just inserted' FROM t0_template
19934
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19935
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19937
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19938
f_charbig = 'updated by trigger'
19939
WHERE f_int1 = - old.f_int1;
19941
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19942
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19944
# check trigger-6 success: 1
19945
DROP TRIGGER trg_1;
19946
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19947
f_int2 = CAST(f_char1 AS SIGNED INT),
19948
f_charbig = 'just inserted'
19949
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19951
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19952
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19953
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19954
'just inserted' FROM t0_template
19955
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19956
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19958
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19959
f_charbig = 'updated by trigger'
19960
WHERE f_int1 = - old.f_int1;
19963
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19965
# check trigger-7 success: 1
19966
DROP TRIGGER trg_1;
19967
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19968
f_int2 = CAST(f_char1 AS SIGNED INT),
19969
f_charbig = 'just inserted'
19970
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19972
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19973
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19974
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19975
'just inserted' FROM t0_template
19976
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19977
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19979
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19980
f_charbig = 'updated by trigger'
19981
WHERE f_int1 = - old.f_int1;
19984
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19986
# check trigger-8 success: 1
19987
DROP TRIGGER trg_1;
19988
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19989
f_int2 = CAST(f_char1 AS SIGNED INT),
19990
f_charbig = 'just inserted'
19991
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19993
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19995
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19996
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19998
SET new.f_int1 = old.f_int1 + @max_row,
19999
new.f_int2 = old.f_int2 - @max_row,
20000
new.f_charbig = '####updated per update trigger####';
20003
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20004
f_charbig = '####updated per update statement itself####';
20006
# check trigger-9 success: 1
20007
DROP TRIGGER trg_2;
20008
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20009
f_int2 = CAST(f_char1 AS SIGNED INT),
20010
f_charbig = CONCAT('===',f_char1,'===');
20011
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20013
SET new.f_int1 = new.f_int1 + @max_row,
20014
new.f_int2 = new.f_int2 - @max_row,
20015
new.f_charbig = '####updated per update trigger####';
20018
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20019
f_charbig = '####updated per update statement itself####';
20021
# check trigger-10 success: 1
20022
DROP TRIGGER trg_2;
20023
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20024
f_int2 = CAST(f_char1 AS SIGNED INT),
20025
f_charbig = CONCAT('===',f_char1,'===');
20026
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20028
SET new.f_int1 = @my_max1 + @counter,
20029
new.f_int2 = @my_min2 - @counter,
20030
new.f_charbig = '####updated per insert trigger####';
20031
SET @counter = @counter + 1;
20034
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20035
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20036
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20037
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20038
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20040
DROP TRIGGER trg_3;
20042
# check trigger-11 success: 1
20044
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20045
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20046
AND f_charbig = '####updated per insert trigger####';
20047
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20049
SET new.f_int1 = @my_max1 + @counter,
20050
new.f_int2 = @my_min2 - @counter,
20051
new.f_charbig = '####updated per insert trigger####';
20052
SET @counter = @counter + 1;
20055
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20056
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20057
SELECT CAST(f_int1 AS CHAR),
20058
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20059
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20061
DROP TRIGGER trg_3;
20063
# check trigger-12 success: 1
20065
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20066
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20067
AND f_charbig = '####updated per insert trigger####';
20069
Table Op Msg_type Msg_text
20070
test.t1 analyze status OK
20071
CHECK TABLE t1 EXTENDED;
20072
Table Op Msg_type Msg_text
20073
test.t1 check status OK
20074
CHECKSUM TABLE t1 EXTENDED;
20076
test.t1 <some_value>
20078
Table Op Msg_type Msg_text
20079
test.t1 optimize status OK
20080
# check layout success: 1
20081
REPAIR TABLE t1 EXTENDED;
20082
Table Op Msg_type Msg_text
20083
test.t1 repair note The storage engine for the table doesn't support repair
20084
# check layout success: 1
20087
# check TRUNCATE success: 1
20088
# check layout success: 1
20089
# End usability test (inc/partition_check.inc)
20096
f_charbig VARCHAR(1000)
20099
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
20100
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20101
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20102
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20103
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
20104
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20105
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20106
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20107
# Start usability test (inc/partition_check.inc)
20109
SHOW CREATE TABLE t1;
20111
t1 CREATE TABLE `t1` (
20112
`f_int1` int(11) DEFAULT NULL,
20113
`f_int2` int(11) DEFAULT NULL,
20114
`f_char1` char(20) DEFAULT NULL,
20115
`f_char2` char(20) DEFAULT NULL,
20116
`f_charbig` varchar(1000) DEFAULT NULL
20117
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */
20119
# check prerequisites-1 success: 1
20120
# check COUNT(*) success: 1
20121
# check MIN/MAX(f_int1) success: 1
20122
# check MIN/MAX(f_int2) success: 1
20123
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20124
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20125
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20126
WHERE f_int1 IN (2,3);
20127
# check prerequisites-3 success: 1
20128
DELETE FROM t1 WHERE f_charbig = 'delete me';
20129
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
20130
# check read via f_int1 success: 1
20131
# check read via f_int2 success: 1
20133
# check multiple-1 success: 1
20134
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20136
# check multiple-2 success: 1
20137
INSERT INTO t1 SELECT * FROM t0_template
20138
WHERE MOD(f_int1,3) = 0;
20140
# check multiple-3 success: 1
20141
UPDATE t1 SET f_int1 = f_int1 + @max_row
20142
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20143
AND @max_row_div2 + @max_row_div4;
20145
# check multiple-4 success: 1
20147
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20148
AND @max_row_div2 + @max_row_div4 + @max_row;
20150
# check multiple-5 success: 1
20151
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20153
SET f_int1 = @cur_value , f_int2 = @cur_value,
20154
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20155
f_charbig = '#SINGLE#';
20157
# check single-1 success: 1
20158
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20160
SET f_int1 = @cur_value , f_int2 = @cur_value,
20161
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20162
f_charbig = '#SINGLE#';
20164
# check single-2 success: 1
20165
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20166
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20167
UPDATE t1 SET f_int1 = @cur_value2
20168
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20170
# check single-3 success: 1
20171
SET @cur_value1= -1;
20172
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20173
UPDATE t1 SET f_int1 = @cur_value1
20174
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20176
# check single-4 success: 1
20177
SELECT MAX(f_int1) INTO @cur_value FROM t1;
20178
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20180
# check single-5 success: 1
20181
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20183
# check single-6 success: 1
20184
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20186
# check single-7 success: 1
20187
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20188
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20189
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20190
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20191
f_charbig = '#NULL#';
20193
SET f_int1 = NULL , f_int2 = -@max_row,
20194
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20195
f_charbig = '#NULL#';
20196
# check null success: 1
20198
# check null-1 success: 1
20199
UPDATE t1 SET f_int1 = -@max_row
20200
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20201
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20203
# check null-2 success: 1
20204
UPDATE t1 SET f_int1 = NULL
20205
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20206
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20208
# check null-3 success: 1
20210
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20211
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20213
# check null-4 success: 1
20215
WHERE f_int1 = 0 AND f_int2 = 0
20216
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20217
AND f_charbig = '#NULL#';
20219
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20220
SELECT f_int1, f_int1, '', '', 'was inserted'
20221
FROM t0_template source_tab
20222
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20224
# check transactions-1 success: 1
20227
# check transactions-2 success: 1
20230
# check transactions-3 success: 1
20231
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20235
# check transactions-4 success: 1
20236
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20237
SELECT f_int1, f_int1, '', '', 'was inserted'
20238
FROM t0_template source_tab
20239
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20241
# check transactions-5 success: 1
20244
# check transactions-6 success: 1
20245
# INFO: Storage engine used for t1 seems to be transactional.
20248
# check transactions-7 success: 1
20249
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20251
SET @@session.sql_mode = 'traditional';
20252
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20253
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20254
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20255
'', '', 'was inserted' FROM t0_template
20256
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20257
ERROR 22012: Division by 0
20260
# check transactions-8 success: 1
20261
# INFO: Storage engine used for t1 seems to be able to revert
20262
# changes made by the failing statement.
20263
SET @@session.sql_mode = '';
20265
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20267
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20269
# check special-1 success: 1
20270
UPDATE t1 SET f_charbig = '';
20272
# check special-2 success: 1
20273
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20274
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20275
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20276
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20277
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20278
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20279
'just inserted' FROM t0_template
20280
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20281
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20283
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20284
f_charbig = 'updated by trigger'
20285
WHERE f_int1 = new.f_int1;
20287
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20288
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20289
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20291
# check trigger-1 success: 1
20292
DROP TRIGGER trg_1;
20293
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20294
f_int2 = CAST(f_char1 AS SIGNED INT),
20295
f_charbig = 'just inserted'
20296
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20298
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20299
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20300
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20301
'just inserted' FROM t0_template
20302
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20303
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20305
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20306
f_charbig = 'updated by trigger'
20307
WHERE f_int1 = new.f_int1;
20309
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20310
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20311
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20313
# check trigger-2 success: 1
20314
DROP TRIGGER trg_1;
20315
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20316
f_int2 = CAST(f_char1 AS SIGNED INT),
20317
f_charbig = 'just inserted'
20318
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20320
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20321
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20322
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20323
'just inserted' FROM t0_template
20324
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20325
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20327
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20328
f_charbig = 'updated by trigger'
20329
WHERE f_int1 = new.f_int1;
20331
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20332
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20334
# check trigger-3 success: 1
20335
DROP TRIGGER trg_1;
20336
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20337
f_int2 = CAST(f_char1 AS SIGNED INT),
20338
f_charbig = 'just inserted'
20339
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20341
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20342
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20343
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20344
'just inserted' FROM t0_template
20345
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20346
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20348
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20349
f_charbig = 'updated by trigger'
20350
WHERE f_int1 = - old.f_int1;
20352
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20353
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20355
# check trigger-4 success: 1
20356
DROP TRIGGER trg_1;
20357
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20358
f_int2 = CAST(f_char1 AS SIGNED INT),
20359
f_charbig = 'just inserted'
20360
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20362
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20363
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20364
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20365
'just inserted' FROM t0_template
20366
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20367
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20369
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20370
f_charbig = 'updated by trigger'
20371
WHERE f_int1 = new.f_int1;
20373
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20374
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20376
# check trigger-5 success: 1
20377
DROP TRIGGER trg_1;
20378
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20379
f_int2 = CAST(f_char1 AS SIGNED INT),
20380
f_charbig = 'just inserted'
20381
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20383
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20384
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20385
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20386
'just inserted' FROM t0_template
20387
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20388
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20390
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20391
f_charbig = 'updated by trigger'
20392
WHERE f_int1 = - old.f_int1;
20394
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20395
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20397
# check trigger-6 success: 1
20398
DROP TRIGGER trg_1;
20399
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20400
f_int2 = CAST(f_char1 AS SIGNED INT),
20401
f_charbig = 'just inserted'
20402
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20404
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20405
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20406
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20407
'just inserted' FROM t0_template
20408
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20409
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20411
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20412
f_charbig = 'updated by trigger'
20413
WHERE f_int1 = - old.f_int1;
20416
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20418
# check trigger-7 success: 1
20419
DROP TRIGGER trg_1;
20420
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20421
f_int2 = CAST(f_char1 AS SIGNED INT),
20422
f_charbig = 'just inserted'
20423
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20425
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20426
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20427
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20428
'just inserted' FROM t0_template
20429
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20430
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20432
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20433
f_charbig = 'updated by trigger'
20434
WHERE f_int1 = - old.f_int1;
20437
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20439
# check trigger-8 success: 1
20440
DROP TRIGGER trg_1;
20441
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20442
f_int2 = CAST(f_char1 AS SIGNED INT),
20443
f_charbig = 'just inserted'
20444
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20446
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20448
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20449
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20451
SET new.f_int1 = old.f_int1 + @max_row,
20452
new.f_int2 = old.f_int2 - @max_row,
20453
new.f_charbig = '####updated per update trigger####';
20456
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20457
f_charbig = '####updated per update statement itself####';
20459
# check trigger-9 success: 1
20460
DROP TRIGGER trg_2;
20461
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20462
f_int2 = CAST(f_char1 AS SIGNED INT),
20463
f_charbig = CONCAT('===',f_char1,'===');
20464
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20466
SET new.f_int1 = new.f_int1 + @max_row,
20467
new.f_int2 = new.f_int2 - @max_row,
20468
new.f_charbig = '####updated per update trigger####';
20471
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20472
f_charbig = '####updated per update statement itself####';
20474
# check trigger-10 success: 1
20475
DROP TRIGGER trg_2;
20476
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20477
f_int2 = CAST(f_char1 AS SIGNED INT),
20478
f_charbig = CONCAT('===',f_char1,'===');
20479
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20481
SET new.f_int1 = @my_max1 + @counter,
20482
new.f_int2 = @my_min2 - @counter,
20483
new.f_charbig = '####updated per insert trigger####';
20484
SET @counter = @counter + 1;
20487
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20488
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20489
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20490
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20491
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20493
DROP TRIGGER trg_3;
20495
# check trigger-11 success: 1
20497
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20498
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20499
AND f_charbig = '####updated per insert trigger####';
20500
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20502
SET new.f_int1 = @my_max1 + @counter,
20503
new.f_int2 = @my_min2 - @counter,
20504
new.f_charbig = '####updated per insert trigger####';
20505
SET @counter = @counter + 1;
20508
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20509
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20510
SELECT CAST(f_int1 AS CHAR),
20511
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20512
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20514
DROP TRIGGER trg_3;
20516
# check trigger-12 success: 1
20518
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20519
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20520
AND f_charbig = '####updated per insert trigger####';
20522
Table Op Msg_type Msg_text
20523
test.t1 analyze status OK
20524
CHECK TABLE t1 EXTENDED;
20525
Table Op Msg_type Msg_text
20526
test.t1 check status OK
20527
CHECKSUM TABLE t1 EXTENDED;
20529
test.t1 <some_value>
20531
Table Op Msg_type Msg_text
20532
test.t1 optimize status OK
20533
# check layout success: 1
20534
REPAIR TABLE t1 EXTENDED;
20535
Table Op Msg_type Msg_text
20536
test.t1 repair note The storage engine for the table doesn't support repair
20537
# check layout success: 1
20540
# check TRUNCATE success: 1
20541
# check layout success: 1
20542
# End usability test (inc/partition_check.inc)
20549
f_charbig VARCHAR(1000)
20552
PARTITION BY LIST(MOD(f_int1,4))
20553
(PARTITION part_3 VALUES IN (-3),
20554
PARTITION part_2 VALUES IN (-2),
20555
PARTITION part_1 VALUES IN (-1),
20556
PARTITION part_N VALUES IN (NULL),
20557
PARTITION part0 VALUES IN (0),
20558
PARTITION part1 VALUES IN (1),
20559
PARTITION part2 VALUES IN (2),
20560
PARTITION part3 VALUES IN (3));
20561
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20562
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20563
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20564
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
20565
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20566
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20567
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20568
# Start usability test (inc/partition_check.inc)
20570
SHOW CREATE TABLE t1;
20572
t1 CREATE TABLE `t1` (
20573
`f_int1` int(11) DEFAULT NULL,
20574
`f_int2` int(11) DEFAULT NULL,
20575
`f_char1` char(20) DEFAULT NULL,
20576
`f_char2` char(20) DEFAULT NULL,
20577
`f_charbig` varchar(1000) DEFAULT NULL
20578
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
20580
# check prerequisites-1 success: 1
20581
# check COUNT(*) success: 1
20582
# check MIN/MAX(f_int1) success: 1
20583
# check MIN/MAX(f_int2) success: 1
20584
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20585
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20586
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20587
WHERE f_int1 IN (2,3);
20588
# check prerequisites-3 success: 1
20589
DELETE FROM t1 WHERE f_charbig = 'delete me';
20590
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
20591
# check read via f_int1 success: 1
20592
# check read via f_int2 success: 1
20594
# check multiple-1 success: 1
20595
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20597
# check multiple-2 success: 1
20598
INSERT INTO t1 SELECT * FROM t0_template
20599
WHERE MOD(f_int1,3) = 0;
20601
# check multiple-3 success: 1
20602
UPDATE t1 SET f_int1 = f_int1 + @max_row
20603
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20604
AND @max_row_div2 + @max_row_div4;
20606
# check multiple-4 success: 1
20608
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20609
AND @max_row_div2 + @max_row_div4 + @max_row;
20611
# check multiple-5 success: 1
20612
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20614
SET f_int1 = @cur_value , f_int2 = @cur_value,
20615
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20616
f_charbig = '#SINGLE#';
20618
# check single-1 success: 1
20619
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20621
SET f_int1 = @cur_value , f_int2 = @cur_value,
20622
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20623
f_charbig = '#SINGLE#';
20625
# check single-2 success: 1
20626
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20627
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20628
UPDATE t1 SET f_int1 = @cur_value2
20629
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20631
# check single-3 success: 1
20632
SET @cur_value1= -1;
20633
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20634
UPDATE t1 SET f_int1 = @cur_value1
20635
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20637
# check single-4 success: 1
20638
SELECT MAX(f_int1) INTO @cur_value FROM t1;
20639
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20641
# check single-5 success: 1
20642
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20644
# check single-6 success: 1
20645
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20647
# check single-7 success: 1
20648
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20649
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20650
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20651
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20652
f_charbig = '#NULL#';
20654
SET f_int1 = NULL , f_int2 = -@max_row,
20655
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20656
f_charbig = '#NULL#';
20657
# check null success: 1
20659
# check null-1 success: 1
20660
UPDATE t1 SET f_int1 = -@max_row
20661
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20662
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20664
# check null-2 success: 1
20665
UPDATE t1 SET f_int1 = NULL
20666
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20667
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20669
# check null-3 success: 1
20671
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20672
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20674
# check null-4 success: 1
20676
WHERE f_int1 = 0 AND f_int2 = 0
20677
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20678
AND f_charbig = '#NULL#';
20680
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20681
SELECT f_int1, f_int1, '', '', 'was inserted'
20682
FROM t0_template source_tab
20683
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20685
# check transactions-1 success: 1
20688
# check transactions-2 success: 1
20691
# check transactions-3 success: 1
20692
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20696
# check transactions-4 success: 1
20697
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20698
SELECT f_int1, f_int1, '', '', 'was inserted'
20699
FROM t0_template source_tab
20700
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20702
# check transactions-5 success: 1
20705
# check transactions-6 success: 1
20706
# INFO: Storage engine used for t1 seems to be transactional.
20709
# check transactions-7 success: 1
20710
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20712
SET @@session.sql_mode = 'traditional';
20713
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20714
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20715
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20716
'', '', 'was inserted' FROM t0_template
20717
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20718
ERROR 22012: Division by 0
20721
# check transactions-8 success: 1
20722
# INFO: Storage engine used for t1 seems to be able to revert
20723
# changes made by the failing statement.
20724
SET @@session.sql_mode = '';
20726
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20728
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20730
# check special-1 success: 1
20731
UPDATE t1 SET f_charbig = '';
20733
# check special-2 success: 1
20734
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20735
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20736
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20737
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20738
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20739
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20740
'just inserted' FROM t0_template
20741
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20742
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20744
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20745
f_charbig = 'updated by trigger'
20746
WHERE f_int1 = new.f_int1;
20748
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20749
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20750
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20752
# check trigger-1 success: 1
20753
DROP TRIGGER trg_1;
20754
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20755
f_int2 = CAST(f_char1 AS SIGNED INT),
20756
f_charbig = 'just inserted'
20757
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20759
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20760
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20761
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20762
'just inserted' FROM t0_template
20763
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20764
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20766
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20767
f_charbig = 'updated by trigger'
20768
WHERE f_int1 = new.f_int1;
20770
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20771
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20772
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20774
# check trigger-2 success: 1
20775
DROP TRIGGER trg_1;
20776
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20777
f_int2 = CAST(f_char1 AS SIGNED INT),
20778
f_charbig = 'just inserted'
20779
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20781
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20782
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20783
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20784
'just inserted' FROM t0_template
20785
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20786
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20788
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20789
f_charbig = 'updated by trigger'
20790
WHERE f_int1 = new.f_int1;
20792
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20793
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20795
# check trigger-3 success: 1
20796
DROP TRIGGER trg_1;
20797
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20798
f_int2 = CAST(f_char1 AS SIGNED INT),
20799
f_charbig = 'just inserted'
20800
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20802
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20803
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20804
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20805
'just inserted' FROM t0_template
20806
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20807
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20809
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20810
f_charbig = 'updated by trigger'
20811
WHERE f_int1 = - old.f_int1;
20813
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20814
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20816
# check trigger-4 success: 1
20817
DROP TRIGGER trg_1;
20818
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20819
f_int2 = CAST(f_char1 AS SIGNED INT),
20820
f_charbig = 'just inserted'
20821
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20823
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20824
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20825
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20826
'just inserted' FROM t0_template
20827
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20828
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20830
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20831
f_charbig = 'updated by trigger'
20832
WHERE f_int1 = new.f_int1;
20834
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20835
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20837
# check trigger-5 success: 1
20838
DROP TRIGGER trg_1;
20839
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20840
f_int2 = CAST(f_char1 AS SIGNED INT),
20841
f_charbig = 'just inserted'
20842
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20844
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20845
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20846
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20847
'just inserted' FROM t0_template
20848
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20849
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20851
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20852
f_charbig = 'updated by trigger'
20853
WHERE f_int1 = - old.f_int1;
20855
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20856
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20858
# check trigger-6 success: 1
20859
DROP TRIGGER trg_1;
20860
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20861
f_int2 = CAST(f_char1 AS SIGNED INT),
20862
f_charbig = 'just inserted'
20863
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20865
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20866
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20867
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20868
'just inserted' FROM t0_template
20869
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20870
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20872
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20873
f_charbig = 'updated by trigger'
20874
WHERE f_int1 = - old.f_int1;
20877
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20879
# check trigger-7 success: 1
20880
DROP TRIGGER trg_1;
20881
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20882
f_int2 = CAST(f_char1 AS SIGNED INT),
20883
f_charbig = 'just inserted'
20884
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20886
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20887
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20888
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20889
'just inserted' FROM t0_template
20890
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20891
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20893
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20894
f_charbig = 'updated by trigger'
20895
WHERE f_int1 = - old.f_int1;
20898
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20900
# check trigger-8 success: 1
20901
DROP TRIGGER trg_1;
20902
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20903
f_int2 = CAST(f_char1 AS SIGNED INT),
20904
f_charbig = 'just inserted'
20905
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20907
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20909
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20910
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20912
SET new.f_int1 = old.f_int1 + @max_row,
20913
new.f_int2 = old.f_int2 - @max_row,
20914
new.f_charbig = '####updated per update trigger####';
20917
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20918
f_charbig = '####updated per update statement itself####';
20920
# check trigger-9 success: 1
20921
DROP TRIGGER trg_2;
20922
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20923
f_int2 = CAST(f_char1 AS SIGNED INT),
20924
f_charbig = CONCAT('===',f_char1,'===');
20925
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20927
SET new.f_int1 = new.f_int1 + @max_row,
20928
new.f_int2 = new.f_int2 - @max_row,
20929
new.f_charbig = '####updated per update trigger####';
20932
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20933
f_charbig = '####updated per update statement itself####';
20935
# check trigger-10 success: 1
20936
DROP TRIGGER trg_2;
20937
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20938
f_int2 = CAST(f_char1 AS SIGNED INT),
20939
f_charbig = CONCAT('===',f_char1,'===');
20940
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20942
SET new.f_int1 = @my_max1 + @counter,
20943
new.f_int2 = @my_min2 - @counter,
20944
new.f_charbig = '####updated per insert trigger####';
20945
SET @counter = @counter + 1;
20948
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20949
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20950
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20951
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20952
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20954
DROP TRIGGER trg_3;
20956
# check trigger-11 success: 1
20958
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20959
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20960
AND f_charbig = '####updated per insert trigger####';
20961
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20963
SET new.f_int1 = @my_max1 + @counter,
20964
new.f_int2 = @my_min2 - @counter,
20965
new.f_charbig = '####updated per insert trigger####';
20966
SET @counter = @counter + 1;
20969
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20970
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20971
SELECT CAST(f_int1 AS CHAR),
20972
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20973
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20975
DROP TRIGGER trg_3;
20977
# check trigger-12 success: 1
20979
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20980
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20981
AND f_charbig = '####updated per insert trigger####';
20983
Table Op Msg_type Msg_text
20984
test.t1 analyze status OK
20985
CHECK TABLE t1 EXTENDED;
20986
Table Op Msg_type Msg_text
20987
test.t1 check status OK
20988
CHECKSUM TABLE t1 EXTENDED;
20990
test.t1 <some_value>
20992
Table Op Msg_type Msg_text
20993
test.t1 optimize status OK
20994
# check layout success: 1
20995
REPAIR TABLE t1 EXTENDED;
20996
Table Op Msg_type Msg_text
20997
test.t1 repair note The storage engine for the table doesn't support repair
20998
# check layout success: 1
21001
# check TRUNCATE success: 1
21002
# check layout success: 1
21003
# End usability test (inc/partition_check.inc)
21010
f_charbig VARCHAR(1000)
21013
PARTITION BY RANGE(f_int1)
21014
(PARTITION parta VALUES LESS THAN (0),
21015
PARTITION part_1 VALUES LESS THAN (5),
21016
PARTITION part_2 VALUES LESS THAN (10),
21017
PARTITION part_3 VALUES LESS THAN (10 + 5),
21018
PARTITION part_4 VALUES LESS THAN (20),
21019
PARTITION part_5 VALUES LESS THAN (2147483646));
21020
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21021
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21022
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21023
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
21024
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21025
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21026
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21027
# Start usability test (inc/partition_check.inc)
21029
SHOW CREATE TABLE t1;
21031
t1 CREATE TABLE `t1` (
21032
`f_int1` int(11) DEFAULT NULL,
21033
`f_int2` int(11) DEFAULT NULL,
21034
`f_char1` char(20) DEFAULT NULL,
21035
`f_char2` char(20) DEFAULT NULL,
21036
`f_charbig` varchar(1000) DEFAULT NULL
21037
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
21039
# check prerequisites-1 success: 1
21040
# check COUNT(*) success: 1
21041
# check MIN/MAX(f_int1) success: 1
21042
# check MIN/MAX(f_int2) success: 1
21043
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21044
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21045
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21046
WHERE f_int1 IN (2,3);
21047
# check prerequisites-3 success: 1
21048
DELETE FROM t1 WHERE f_charbig = 'delete me';
21049
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21050
# check read via f_int1 success: 1
21051
# check read via f_int2 success: 1
21053
# check multiple-1 success: 1
21054
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21056
# check multiple-2 success: 1
21057
INSERT INTO t1 SELECT * FROM t0_template
21058
WHERE MOD(f_int1,3) = 0;
21060
# check multiple-3 success: 1
21061
UPDATE t1 SET f_int1 = f_int1 + @max_row
21062
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21063
AND @max_row_div2 + @max_row_div4;
21065
# check multiple-4 success: 1
21067
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21068
AND @max_row_div2 + @max_row_div4 + @max_row;
21070
# check multiple-5 success: 1
21071
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21073
SET f_int1 = @cur_value , f_int2 = @cur_value,
21074
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21075
f_charbig = '#SINGLE#';
21077
# check single-1 success: 1
21078
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21080
SET f_int1 = @cur_value , f_int2 = @cur_value,
21081
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21082
f_charbig = '#SINGLE#';
21084
# check single-2 success: 1
21085
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21086
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21087
UPDATE t1 SET f_int1 = @cur_value2
21088
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21090
# check single-3 success: 1
21091
SET @cur_value1= -1;
21092
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21093
UPDATE t1 SET f_int1 = @cur_value1
21094
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21096
# check single-4 success: 1
21097
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21098
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21100
# check single-5 success: 1
21101
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21103
# check single-6 success: 1
21104
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21105
ERROR HY000: Table has no partition for value 2147483647
21106
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21107
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21108
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21109
f_charbig = '#NULL#';
21111
SET f_int1 = NULL , f_int2 = -@max_row,
21112
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21113
f_charbig = '#NULL#';
21114
# check null success: 1
21116
# check null-1 success: 1
21117
UPDATE t1 SET f_int1 = -@max_row
21118
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21119
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21121
# check null-2 success: 1
21122
UPDATE t1 SET f_int1 = NULL
21123
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21124
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21126
# check null-3 success: 1
21128
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21129
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21131
# check null-4 success: 1
21133
WHERE f_int1 = 0 AND f_int2 = 0
21134
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21135
AND f_charbig = '#NULL#';
21137
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21138
SELECT f_int1, f_int1, '', '', 'was inserted'
21139
FROM t0_template source_tab
21140
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21142
# check transactions-1 success: 1
21145
# check transactions-2 success: 1
21148
# check transactions-3 success: 1
21149
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21153
# check transactions-4 success: 1
21154
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21155
SELECT f_int1, f_int1, '', '', 'was inserted'
21156
FROM t0_template source_tab
21157
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21159
# check transactions-5 success: 1
21162
# check transactions-6 success: 1
21163
# INFO: Storage engine used for t1 seems to be transactional.
21166
# check transactions-7 success: 1
21167
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21169
SET @@session.sql_mode = 'traditional';
21170
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21171
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21172
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21173
'', '', 'was inserted' FROM t0_template
21174
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21175
ERROR 22012: Division by 0
21178
# check transactions-8 success: 1
21179
# INFO: Storage engine used for t1 seems to be able to revert
21180
# changes made by the failing statement.
21181
SET @@session.sql_mode = '';
21183
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21185
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21187
# check special-1 success: 1
21188
UPDATE t1 SET f_charbig = '';
21190
# check special-2 success: 1
21191
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21192
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21193
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21195
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21196
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21197
'just inserted' FROM t0_template
21198
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21199
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21201
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21202
f_charbig = 'updated by trigger'
21203
WHERE f_int1 = new.f_int1;
21205
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21206
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21207
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21209
# check trigger-1 success: 1
21210
DROP TRIGGER trg_1;
21211
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21212
f_int2 = CAST(f_char1 AS SIGNED INT),
21213
f_charbig = 'just inserted'
21214
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21216
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21217
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21218
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21219
'just inserted' FROM t0_template
21220
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21221
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21223
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21224
f_charbig = 'updated by trigger'
21225
WHERE f_int1 = new.f_int1;
21227
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21228
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21229
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21231
# check trigger-2 success: 1
21232
DROP TRIGGER trg_1;
21233
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21234
f_int2 = CAST(f_char1 AS SIGNED INT),
21235
f_charbig = 'just inserted'
21236
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21238
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21239
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21240
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21241
'just inserted' FROM t0_template
21242
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21243
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21245
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21246
f_charbig = 'updated by trigger'
21247
WHERE f_int1 = new.f_int1;
21249
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21250
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21252
# check trigger-3 success: 1
21253
DROP TRIGGER trg_1;
21254
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21255
f_int2 = CAST(f_char1 AS SIGNED INT),
21256
f_charbig = 'just inserted'
21257
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21259
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21260
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21261
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21262
'just inserted' FROM t0_template
21263
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21264
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21266
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21267
f_charbig = 'updated by trigger'
21268
WHERE f_int1 = - old.f_int1;
21270
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21271
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21273
# check trigger-4 success: 1
21274
DROP TRIGGER trg_1;
21275
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21276
f_int2 = CAST(f_char1 AS SIGNED INT),
21277
f_charbig = 'just inserted'
21278
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21280
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21281
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21282
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21283
'just inserted' FROM t0_template
21284
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21285
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21287
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21288
f_charbig = 'updated by trigger'
21289
WHERE f_int1 = new.f_int1;
21291
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21292
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21294
# check trigger-5 success: 1
21295
DROP TRIGGER trg_1;
21296
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21297
f_int2 = CAST(f_char1 AS SIGNED INT),
21298
f_charbig = 'just inserted'
21299
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21301
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21302
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21303
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21304
'just inserted' FROM t0_template
21305
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21306
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21308
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21309
f_charbig = 'updated by trigger'
21310
WHERE f_int1 = - old.f_int1;
21312
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21313
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21315
# check trigger-6 success: 1
21316
DROP TRIGGER trg_1;
21317
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21318
f_int2 = CAST(f_char1 AS SIGNED INT),
21319
f_charbig = 'just inserted'
21320
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21322
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21323
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21324
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21325
'just inserted' FROM t0_template
21326
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21327
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21329
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21330
f_charbig = 'updated by trigger'
21331
WHERE f_int1 = - old.f_int1;
21334
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21336
# check trigger-7 success: 1
21337
DROP TRIGGER trg_1;
21338
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21339
f_int2 = CAST(f_char1 AS SIGNED INT),
21340
f_charbig = 'just inserted'
21341
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21343
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21344
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21345
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21346
'just inserted' FROM t0_template
21347
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21348
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21350
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21351
f_charbig = 'updated by trigger'
21352
WHERE f_int1 = - old.f_int1;
21355
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21357
# check trigger-8 success: 1
21358
DROP TRIGGER trg_1;
21359
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21360
f_int2 = CAST(f_char1 AS SIGNED INT),
21361
f_charbig = 'just inserted'
21362
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21364
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21366
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21367
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21369
SET new.f_int1 = old.f_int1 + @max_row,
21370
new.f_int2 = old.f_int2 - @max_row,
21371
new.f_charbig = '####updated per update trigger####';
21374
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21375
f_charbig = '####updated per update statement itself####';
21377
# check trigger-9 success: 1
21378
DROP TRIGGER trg_2;
21379
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21380
f_int2 = CAST(f_char1 AS SIGNED INT),
21381
f_charbig = CONCAT('===',f_char1,'===');
21382
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21384
SET new.f_int1 = new.f_int1 + @max_row,
21385
new.f_int2 = new.f_int2 - @max_row,
21386
new.f_charbig = '####updated per update trigger####';
21389
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21390
f_charbig = '####updated per update statement itself####';
21392
# check trigger-10 success: 1
21393
DROP TRIGGER trg_2;
21394
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21395
f_int2 = CAST(f_char1 AS SIGNED INT),
21396
f_charbig = CONCAT('===',f_char1,'===');
21397
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21399
SET new.f_int1 = @my_max1 + @counter,
21400
new.f_int2 = @my_min2 - @counter,
21401
new.f_charbig = '####updated per insert trigger####';
21402
SET @counter = @counter + 1;
21405
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21406
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21407
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21408
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21409
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21411
DROP TRIGGER trg_3;
21413
# check trigger-11 success: 1
21415
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21416
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21417
AND f_charbig = '####updated per insert trigger####';
21418
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21420
SET new.f_int1 = @my_max1 + @counter,
21421
new.f_int2 = @my_min2 - @counter,
21422
new.f_charbig = '####updated per insert trigger####';
21423
SET @counter = @counter + 1;
21426
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21427
INSERT INTO t1 (f_char1, f_char2, f_charbig)
21428
SELECT CAST(f_int1 AS CHAR),
21429
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21430
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21432
DROP TRIGGER trg_3;
21434
# check trigger-12 success: 1
21436
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21437
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21438
AND f_charbig = '####updated per insert trigger####';
21440
Table Op Msg_type Msg_text
21441
test.t1 analyze status OK
21442
CHECK TABLE t1 EXTENDED;
21443
Table Op Msg_type Msg_text
21444
test.t1 check status OK
21445
CHECKSUM TABLE t1 EXTENDED;
21447
test.t1 <some_value>
21449
Table Op Msg_type Msg_text
21450
test.t1 optimize status OK
21451
# check layout success: 1
21452
REPAIR TABLE t1 EXTENDED;
21453
Table Op Msg_type Msg_text
21454
test.t1 repair note The storage engine for the table doesn't support repair
21455
# check layout success: 1
21458
# check TRUNCATE success: 1
21459
# check layout success: 1
21460
# End usability test (inc/partition_check.inc)
21467
f_charbig VARCHAR(1000)
21470
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
21471
(PARTITION part_1 VALUES LESS THAN (0),
21472
PARTITION part_2 VALUES LESS THAN (5),
21473
PARTITION part_3 VALUES LESS THAN (10),
21474
PARTITION part_4 VALUES LESS THAN (2147483646));
21475
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21476
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21477
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21478
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
21479
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21480
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21481
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21482
# Start usability test (inc/partition_check.inc)
21484
SHOW CREATE TABLE t1;
21486
t1 CREATE TABLE `t1` (
21487
`f_int1` int(11) DEFAULT NULL,
21488
`f_int2` int(11) DEFAULT NULL,
21489
`f_char1` char(20) DEFAULT NULL,
21490
`f_char2` char(20) DEFAULT NULL,
21491
`f_charbig` varchar(1000) DEFAULT NULL
21492
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
21494
# check prerequisites-1 success: 1
21495
# check COUNT(*) success: 1
21496
# check MIN/MAX(f_int1) success: 1
21497
# check MIN/MAX(f_int2) success: 1
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), 'delete me' FROM t0_template
21501
WHERE f_int1 IN (2,3);
21502
# check prerequisites-3 success: 1
21503
DELETE FROM t1 WHERE f_charbig = 'delete me';
21504
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21505
# check read via f_int1 success: 1
21506
# check read via f_int2 success: 1
21508
# check multiple-1 success: 1
21509
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21511
# check multiple-2 success: 1
21512
INSERT INTO t1 SELECT * FROM t0_template
21513
WHERE MOD(f_int1,3) = 0;
21515
# check multiple-3 success: 1
21516
UPDATE t1 SET f_int1 = f_int1 + @max_row
21517
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21518
AND @max_row_div2 + @max_row_div4;
21520
# check multiple-4 success: 1
21522
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21523
AND @max_row_div2 + @max_row_div4 + @max_row;
21525
# check multiple-5 success: 1
21526
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21528
SET f_int1 = @cur_value , f_int2 = @cur_value,
21529
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21530
f_charbig = '#SINGLE#';
21532
# check single-1 success: 1
21533
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21535
SET f_int1 = @cur_value , f_int2 = @cur_value,
21536
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21537
f_charbig = '#SINGLE#';
21539
# check single-2 success: 1
21540
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21541
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21542
UPDATE t1 SET f_int1 = @cur_value2
21543
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21545
# check single-3 success: 1
21546
SET @cur_value1= -1;
21547
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21548
UPDATE t1 SET f_int1 = @cur_value1
21549
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21551
# check single-4 success: 1
21552
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21553
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21555
# check single-5 success: 1
21556
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21558
# check single-6 success: 1
21559
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21561
# check single-7 success: 1
21562
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21563
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21564
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21565
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21566
f_charbig = '#NULL#';
21568
SET f_int1 = NULL , f_int2 = -@max_row,
21569
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21570
f_charbig = '#NULL#';
21571
# check null success: 1
21573
# check null-1 success: 1
21574
UPDATE t1 SET f_int1 = -@max_row
21575
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21576
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21578
# check null-2 success: 1
21579
UPDATE t1 SET f_int1 = NULL
21580
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21581
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21583
# check null-3 success: 1
21585
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21586
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21588
# check null-4 success: 1
21590
WHERE f_int1 = 0 AND f_int2 = 0
21591
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21592
AND f_charbig = '#NULL#';
21594
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21595
SELECT f_int1, f_int1, '', '', 'was inserted'
21596
FROM t0_template source_tab
21597
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21599
# check transactions-1 success: 1
21602
# check transactions-2 success: 1
21605
# check transactions-3 success: 1
21606
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21610
# check transactions-4 success: 1
21611
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21612
SELECT f_int1, f_int1, '', '', 'was inserted'
21613
FROM t0_template source_tab
21614
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21616
# check transactions-5 success: 1
21619
# check transactions-6 success: 1
21620
# INFO: Storage engine used for t1 seems to be transactional.
21623
# check transactions-7 success: 1
21624
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21626
SET @@session.sql_mode = 'traditional';
21627
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21628
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21629
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21630
'', '', 'was inserted' FROM t0_template
21631
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21632
ERROR 22012: Division by 0
21635
# check transactions-8 success: 1
21636
# INFO: Storage engine used for t1 seems to be able to revert
21637
# changes made by the failing statement.
21638
SET @@session.sql_mode = '';
21640
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21642
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21644
# check special-1 success: 1
21645
UPDATE t1 SET f_charbig = '';
21647
# check special-2 success: 1
21648
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21649
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21650
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21651
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21652
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21653
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21654
'just inserted' FROM t0_template
21655
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21656
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21658
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21659
f_charbig = 'updated by trigger'
21660
WHERE f_int1 = new.f_int1;
21662
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21663
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21664
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21666
# check trigger-1 success: 1
21667
DROP TRIGGER trg_1;
21668
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21669
f_int2 = CAST(f_char1 AS SIGNED INT),
21670
f_charbig = 'just inserted'
21671
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21673
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21674
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21675
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21676
'just inserted' FROM t0_template
21677
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21678
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21680
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21681
f_charbig = 'updated by trigger'
21682
WHERE f_int1 = new.f_int1;
21684
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21685
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21686
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21688
# check trigger-2 success: 1
21689
DROP TRIGGER trg_1;
21690
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21691
f_int2 = CAST(f_char1 AS SIGNED INT),
21692
f_charbig = 'just inserted'
21693
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21695
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21696
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21697
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21698
'just inserted' FROM t0_template
21699
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21700
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21702
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21703
f_charbig = 'updated by trigger'
21704
WHERE f_int1 = new.f_int1;
21706
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21707
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21709
# check trigger-3 success: 1
21710
DROP TRIGGER trg_1;
21711
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21712
f_int2 = CAST(f_char1 AS SIGNED INT),
21713
f_charbig = 'just inserted'
21714
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21716
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21717
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21718
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21719
'just inserted' FROM t0_template
21720
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21721
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21723
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21724
f_charbig = 'updated by trigger'
21725
WHERE f_int1 = - old.f_int1;
21727
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21728
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21730
# check trigger-4 success: 1
21731
DROP TRIGGER trg_1;
21732
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21733
f_int2 = CAST(f_char1 AS SIGNED INT),
21734
f_charbig = 'just inserted'
21735
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21737
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21738
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21739
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21740
'just inserted' FROM t0_template
21741
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21742
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21744
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21745
f_charbig = 'updated by trigger'
21746
WHERE f_int1 = new.f_int1;
21748
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21749
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21751
# check trigger-5 success: 1
21752
DROP TRIGGER trg_1;
21753
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21754
f_int2 = CAST(f_char1 AS SIGNED INT),
21755
f_charbig = 'just inserted'
21756
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21758
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21759
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21760
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21761
'just inserted' FROM t0_template
21762
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21763
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21765
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21766
f_charbig = 'updated by trigger'
21767
WHERE f_int1 = - old.f_int1;
21769
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21770
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21772
# check trigger-6 success: 1
21773
DROP TRIGGER trg_1;
21774
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21775
f_int2 = CAST(f_char1 AS SIGNED INT),
21776
f_charbig = 'just inserted'
21777
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21779
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21780
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21781
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21782
'just inserted' FROM t0_template
21783
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21784
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21786
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21787
f_charbig = 'updated by trigger'
21788
WHERE f_int1 = - old.f_int1;
21791
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21793
# check trigger-7 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 AFTER DELETE 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 = - old.f_int1;
21812
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21814
# check trigger-8 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;
21823
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21824
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21826
SET new.f_int1 = old.f_int1 + @max_row,
21827
new.f_int2 = old.f_int2 - @max_row,
21828
new.f_charbig = '####updated per update trigger####';
21831
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21832
f_charbig = '####updated per update statement itself####';
21834
# check trigger-9 success: 1
21835
DROP TRIGGER trg_2;
21836
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21837
f_int2 = CAST(f_char1 AS SIGNED INT),
21838
f_charbig = CONCAT('===',f_char1,'===');
21839
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21841
SET new.f_int1 = new.f_int1 + @max_row,
21842
new.f_int2 = new.f_int2 - @max_row,
21843
new.f_charbig = '####updated per update trigger####';
21846
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21847
f_charbig = '####updated per update statement itself####';
21849
# check trigger-10 success: 1
21850
DROP TRIGGER trg_2;
21851
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21852
f_int2 = CAST(f_char1 AS SIGNED INT),
21853
f_charbig = CONCAT('===',f_char1,'===');
21854
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21856
SET new.f_int1 = @my_max1 + @counter,
21857
new.f_int2 = @my_min2 - @counter,
21858
new.f_charbig = '####updated per insert trigger####';
21859
SET @counter = @counter + 1;
21862
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21863
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21864
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21865
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21866
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21868
DROP TRIGGER trg_3;
21870
# check trigger-11 success: 1
21872
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21873
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21874
AND f_charbig = '####updated per insert trigger####';
21875
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21877
SET new.f_int1 = @my_max1 + @counter,
21878
new.f_int2 = @my_min2 - @counter,
21879
new.f_charbig = '####updated per insert trigger####';
21880
SET @counter = @counter + 1;
21883
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21884
INSERT INTO t1 (f_char1, f_char2, f_charbig)
21885
SELECT CAST(f_int1 AS CHAR),
21886
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21887
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21889
DROP TRIGGER trg_3;
21891
# check trigger-12 success: 1
21893
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21894
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21895
AND f_charbig = '####updated per insert trigger####';
21897
Table Op Msg_type Msg_text
21898
test.t1 analyze status OK
21899
CHECK TABLE t1 EXTENDED;
21900
Table Op Msg_type Msg_text
21901
test.t1 check status OK
21902
CHECKSUM TABLE t1 EXTENDED;
21904
test.t1 <some_value>
21906
Table Op Msg_type Msg_text
21907
test.t1 optimize status OK
21908
# check layout success: 1
21909
REPAIR TABLE t1 EXTENDED;
21910
Table Op Msg_type Msg_text
21911
test.t1 repair note The storage engine for the table doesn't support repair
21912
# check layout success: 1
21915
# check TRUNCATE success: 1
21916
# check layout success: 1
21917
# End usability test (inc/partition_check.inc)
21924
f_charbig VARCHAR(1000)
21927
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
21928
(PARTITION part_1 VALUES LESS THAN (0)
21929
(SUBPARTITION subpart11, SUBPARTITION subpart12),
21930
PARTITION part_2 VALUES LESS THAN (5)
21931
(SUBPARTITION subpart21, SUBPARTITION subpart22),
21932
PARTITION part_3 VALUES LESS THAN (10)
21933
(SUBPARTITION subpart31, SUBPARTITION subpart32),
21934
PARTITION part_4 VALUES LESS THAN (2147483646)
21935
(SUBPARTITION subpart41, SUBPARTITION subpart42));
21936
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21937
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21938
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21939
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
21940
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21941
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21942
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21943
# Start usability test (inc/partition_check.inc)
21945
SHOW CREATE TABLE t1;
21947
t1 CREATE TABLE `t1` (
21948
`f_int1` int(11) DEFAULT NULL,
21949
`f_int2` int(11) DEFAULT NULL,
21950
`f_char1` char(20) DEFAULT NULL,
21951
`f_char2` char(20) DEFAULT NULL,
21952
`f_charbig` varchar(1000) DEFAULT NULL
21953
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
21955
# check prerequisites-1 success: 1
21956
# check COUNT(*) success: 1
21957
# check MIN/MAX(f_int1) success: 1
21958
# check MIN/MAX(f_int2) success: 1
21959
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21960
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21961
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21962
WHERE f_int1 IN (2,3);
21963
# check prerequisites-3 success: 1
21964
DELETE FROM t1 WHERE f_charbig = 'delete me';
21965
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21966
# check read via f_int1 success: 1
21967
# check read via f_int2 success: 1
21969
# check multiple-1 success: 1
21970
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21972
# check multiple-2 success: 1
21973
INSERT INTO t1 SELECT * FROM t0_template
21974
WHERE MOD(f_int1,3) = 0;
21976
# check multiple-3 success: 1
21977
UPDATE t1 SET f_int1 = f_int1 + @max_row
21978
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21979
AND @max_row_div2 + @max_row_div4;
21981
# check multiple-4 success: 1
21983
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21984
AND @max_row_div2 + @max_row_div4 + @max_row;
21986
# check multiple-5 success: 1
21987
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21989
SET f_int1 = @cur_value , f_int2 = @cur_value,
21990
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21991
f_charbig = '#SINGLE#';
21993
# check single-1 success: 1
21994
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21996
SET f_int1 = @cur_value , f_int2 = @cur_value,
21997
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21998
f_charbig = '#SINGLE#';
22000
# check single-2 success: 1
22001
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22002
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22003
UPDATE t1 SET f_int1 = @cur_value2
22004
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22006
# check single-3 success: 1
22007
SET @cur_value1= -1;
22008
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22009
UPDATE t1 SET f_int1 = @cur_value1
22010
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22012
# check single-4 success: 1
22013
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22014
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22016
# check single-5 success: 1
22017
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22019
# check single-6 success: 1
22020
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22021
ERROR HY000: Table has no partition for value 2147483647
22022
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22023
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22024
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22025
f_charbig = '#NULL#';
22027
SET f_int1 = NULL , f_int2 = -@max_row,
22028
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22029
f_charbig = '#NULL#';
22030
# check null success: 1
22032
# check null-1 success: 1
22033
UPDATE t1 SET f_int1 = -@max_row
22034
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22035
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22037
# check null-2 success: 1
22038
UPDATE t1 SET f_int1 = NULL
22039
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22040
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22042
# check null-3 success: 1
22044
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22045
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22047
# check null-4 success: 1
22049
WHERE f_int1 = 0 AND f_int2 = 0
22050
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22051
AND f_charbig = '#NULL#';
22053
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22054
SELECT f_int1, f_int1, '', '', 'was inserted'
22055
FROM t0_template source_tab
22056
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22058
# check transactions-1 success: 1
22061
# check transactions-2 success: 1
22064
# check transactions-3 success: 1
22065
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22069
# check transactions-4 success: 1
22070
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22071
SELECT f_int1, f_int1, '', '', 'was inserted'
22072
FROM t0_template source_tab
22073
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22075
# check transactions-5 success: 1
22078
# check transactions-6 success: 1
22079
# INFO: Storage engine used for t1 seems to be transactional.
22082
# check transactions-7 success: 1
22083
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22085
SET @@session.sql_mode = 'traditional';
22086
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22087
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22088
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22089
'', '', 'was inserted' FROM t0_template
22090
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22091
ERROR 22012: Division by 0
22094
# check transactions-8 success: 1
22095
# INFO: Storage engine used for t1 seems to be able to revert
22096
# changes made by the failing statement.
22097
SET @@session.sql_mode = '';
22099
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22101
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22103
# check special-1 success: 1
22104
UPDATE t1 SET f_charbig = '';
22106
# check special-2 success: 1
22107
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22108
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22109
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22110
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22111
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22112
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22113
'just inserted' FROM t0_template
22114
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22115
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22117
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22118
f_charbig = 'updated by trigger'
22119
WHERE f_int1 = new.f_int1;
22121
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22122
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22123
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22125
# check trigger-1 success: 1
22126
DROP TRIGGER trg_1;
22127
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22128
f_int2 = CAST(f_char1 AS SIGNED INT),
22129
f_charbig = 'just inserted'
22130
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22132
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22133
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22134
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22135
'just inserted' FROM t0_template
22136
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22137
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22139
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22140
f_charbig = 'updated by trigger'
22141
WHERE f_int1 = new.f_int1;
22143
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22144
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22145
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22147
# check trigger-2 success: 1
22148
DROP TRIGGER trg_1;
22149
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22150
f_int2 = CAST(f_char1 AS SIGNED INT),
22151
f_charbig = 'just inserted'
22152
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22154
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22155
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22156
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22157
'just inserted' FROM t0_template
22158
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22159
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22161
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22162
f_charbig = 'updated by trigger'
22163
WHERE f_int1 = new.f_int1;
22165
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22166
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22168
# check trigger-3 success: 1
22169
DROP TRIGGER trg_1;
22170
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22171
f_int2 = CAST(f_char1 AS SIGNED INT),
22172
f_charbig = 'just inserted'
22173
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22175
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22176
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22177
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22178
'just inserted' FROM t0_template
22179
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22180
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22182
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22183
f_charbig = 'updated by trigger'
22184
WHERE f_int1 = - old.f_int1;
22186
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22187
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22189
# check trigger-4 success: 1
22190
DROP TRIGGER trg_1;
22191
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22192
f_int2 = CAST(f_char1 AS SIGNED INT),
22193
f_charbig = 'just inserted'
22194
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22196
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22197
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22198
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22199
'just inserted' FROM t0_template
22200
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22201
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22203
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22204
f_charbig = 'updated by trigger'
22205
WHERE f_int1 = new.f_int1;
22207
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22208
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22210
# check trigger-5 success: 1
22211
DROP TRIGGER trg_1;
22212
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22213
f_int2 = CAST(f_char1 AS SIGNED INT),
22214
f_charbig = 'just inserted'
22215
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22217
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22218
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22219
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22220
'just inserted' FROM t0_template
22221
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22222
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22224
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22225
f_charbig = 'updated by trigger'
22226
WHERE f_int1 = - old.f_int1;
22228
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22229
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22231
# check trigger-6 success: 1
22232
DROP TRIGGER trg_1;
22233
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22234
f_int2 = CAST(f_char1 AS SIGNED INT),
22235
f_charbig = 'just inserted'
22236
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22238
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22239
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22240
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22241
'just inserted' FROM t0_template
22242
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22243
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22245
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22246
f_charbig = 'updated by trigger'
22247
WHERE f_int1 = - old.f_int1;
22250
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22252
# check trigger-7 success: 1
22253
DROP TRIGGER trg_1;
22254
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22255
f_int2 = CAST(f_char1 AS SIGNED INT),
22256
f_charbig = 'just inserted'
22257
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22259
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22260
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22261
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22262
'just inserted' FROM t0_template
22263
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22264
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22266
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22267
f_charbig = 'updated by trigger'
22268
WHERE f_int1 = - old.f_int1;
22271
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22273
# check trigger-8 success: 1
22274
DROP TRIGGER trg_1;
22275
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22276
f_int2 = CAST(f_char1 AS SIGNED INT),
22277
f_charbig = 'just inserted'
22278
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22280
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22282
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22283
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22285
SET new.f_int1 = old.f_int1 + @max_row,
22286
new.f_int2 = old.f_int2 - @max_row,
22287
new.f_charbig = '####updated per update trigger####';
22290
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22291
f_charbig = '####updated per update statement itself####';
22293
# check trigger-9 success: 1
22294
DROP TRIGGER trg_2;
22295
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22296
f_int2 = CAST(f_char1 AS SIGNED INT),
22297
f_charbig = CONCAT('===',f_char1,'===');
22298
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22300
SET new.f_int1 = new.f_int1 + @max_row,
22301
new.f_int2 = new.f_int2 - @max_row,
22302
new.f_charbig = '####updated per update trigger####';
22305
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22306
f_charbig = '####updated per update statement itself####';
22308
# check trigger-10 success: 1
22309
DROP TRIGGER trg_2;
22310
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22311
f_int2 = CAST(f_char1 AS SIGNED INT),
22312
f_charbig = CONCAT('===',f_char1,'===');
22313
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22315
SET new.f_int1 = @my_max1 + @counter,
22316
new.f_int2 = @my_min2 - @counter,
22317
new.f_charbig = '####updated per insert trigger####';
22318
SET @counter = @counter + 1;
22321
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22322
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22323
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22324
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22325
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22327
DROP TRIGGER trg_3;
22329
# check trigger-11 success: 1
22331
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22332
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22333
AND f_charbig = '####updated per insert trigger####';
22334
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22336
SET new.f_int1 = @my_max1 + @counter,
22337
new.f_int2 = @my_min2 - @counter,
22338
new.f_charbig = '####updated per insert trigger####';
22339
SET @counter = @counter + 1;
22342
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22343
INSERT INTO t1 (f_char1, f_char2, f_charbig)
22344
SELECT CAST(f_int1 AS CHAR),
22345
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22346
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22348
DROP TRIGGER trg_3;
22350
# check trigger-12 success: 1
22352
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22353
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22354
AND f_charbig = '####updated per insert trigger####';
22356
Table Op Msg_type Msg_text
22357
test.t1 analyze status OK
22358
CHECK TABLE t1 EXTENDED;
22359
Table Op Msg_type Msg_text
22360
test.t1 check status OK
22361
CHECKSUM TABLE t1 EXTENDED;
22363
test.t1 <some_value>
22365
Table Op Msg_type Msg_text
22366
test.t1 optimize status OK
22367
# check layout success: 1
22368
REPAIR TABLE t1 EXTENDED;
22369
Table Op Msg_type Msg_text
22370
test.t1 repair note The storage engine for the table doesn't support repair
22371
# check layout success: 1
22374
# check TRUNCATE success: 1
22375
# check layout success: 1
22376
# End usability test (inc/partition_check.inc)
22383
f_charbig VARCHAR(1000)
22386
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
22387
(PARTITION part_1 VALUES IN (0)
22388
(SUBPARTITION sp11, SUBPARTITION sp12),
22389
PARTITION part_2 VALUES IN (1)
22390
(SUBPARTITION sp21, SUBPARTITION sp22),
22391
PARTITION part_3 VALUES IN (2)
22392
(SUBPARTITION sp31, SUBPARTITION sp32),
22393
PARTITION part_4 VALUES IN (NULL)
22394
(SUBPARTITION sp41, SUBPARTITION sp42));
22395
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22396
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22397
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22398
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
22399
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22400
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22401
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22402
# Start usability test (inc/partition_check.inc)
22404
SHOW CREATE TABLE t1;
22406
t1 CREATE TABLE `t1` (
22407
`f_int1` int(11) DEFAULT NULL,
22408
`f_int2` int(11) DEFAULT NULL,
22409
`f_char1` char(20) DEFAULT NULL,
22410
`f_char2` char(20) DEFAULT NULL,
22411
`f_charbig` varchar(1000) DEFAULT NULL
22412
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
22414
# check prerequisites-1 success: 1
22415
# check COUNT(*) success: 1
22416
# check MIN/MAX(f_int1) success: 1
22417
# check MIN/MAX(f_int2) success: 1
22418
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22419
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22420
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22421
WHERE f_int1 IN (2,3);
22422
# check prerequisites-3 success: 1
22423
DELETE FROM t1 WHERE f_charbig = 'delete me';
22424
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
22425
# check read via f_int1 success: 1
22426
# check read via f_int2 success: 1
22428
# check multiple-1 success: 1
22429
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22431
# check multiple-2 success: 1
22432
INSERT INTO t1 SELECT * FROM t0_template
22433
WHERE MOD(f_int1,3) = 0;
22435
# check multiple-3 success: 1
22436
UPDATE t1 SET f_int1 = f_int1 + @max_row
22437
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22438
AND @max_row_div2 + @max_row_div4;
22440
# check multiple-4 success: 1
22442
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22443
AND @max_row_div2 + @max_row_div4 + @max_row;
22445
# check multiple-5 success: 1
22446
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22448
SET f_int1 = @cur_value , f_int2 = @cur_value,
22449
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22450
f_charbig = '#SINGLE#';
22452
# check single-1 success: 1
22453
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22455
SET f_int1 = @cur_value , f_int2 = @cur_value,
22456
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22457
f_charbig = '#SINGLE#';
22459
# check single-2 success: 1
22460
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22461
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22462
UPDATE t1 SET f_int1 = @cur_value2
22463
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22465
# check single-3 success: 1
22466
SET @cur_value1= -1;
22467
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22468
UPDATE t1 SET f_int1 = @cur_value1
22469
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22471
# check single-4 success: 1
22472
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22473
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22475
# check single-5 success: 1
22476
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22478
# check single-6 success: 1
22479
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22481
# check single-7 success: 1
22482
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22483
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22484
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22485
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22486
f_charbig = '#NULL#';
22488
SET f_int1 = NULL , f_int2 = -@max_row,
22489
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22490
f_charbig = '#NULL#';
22491
# check null success: 1
22493
# check null-1 success: 1
22494
UPDATE t1 SET f_int1 = -@max_row
22495
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22496
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22498
# check null-2 success: 1
22499
UPDATE t1 SET f_int1 = NULL
22500
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22501
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22503
# check null-3 success: 1
22505
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22506
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22508
# check null-4 success: 1
22510
WHERE f_int1 = 0 AND f_int2 = 0
22511
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22512
AND f_charbig = '#NULL#';
22514
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22515
SELECT f_int1, f_int1, '', '', 'was inserted'
22516
FROM t0_template source_tab
22517
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22519
# check transactions-1 success: 1
22522
# check transactions-2 success: 1
22525
# check transactions-3 success: 1
22526
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22530
# check transactions-4 success: 1
22531
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22532
SELECT f_int1, f_int1, '', '', 'was inserted'
22533
FROM t0_template source_tab
22534
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22536
# check transactions-5 success: 1
22539
# check transactions-6 success: 1
22540
# INFO: Storage engine used for t1 seems to be transactional.
22543
# check transactions-7 success: 1
22544
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22546
SET @@session.sql_mode = 'traditional';
22547
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22548
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22549
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22550
'', '', 'was inserted' FROM t0_template
22551
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22552
ERROR 22012: Division by 0
22555
# check transactions-8 success: 1
22556
# INFO: Storage engine used for t1 seems to be able to revert
22557
# changes made by the failing statement.
22558
SET @@session.sql_mode = '';
22560
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22562
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22564
# check special-1 success: 1
22565
UPDATE t1 SET f_charbig = '';
22567
# check special-2 success: 1
22568
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22569
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22570
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22571
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22572
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22573
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22574
'just inserted' FROM t0_template
22575
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22576
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22578
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22579
f_charbig = 'updated by trigger'
22580
WHERE f_int1 = new.f_int1;
22582
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22583
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22584
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22586
# check trigger-1 success: 1
22587
DROP TRIGGER trg_1;
22588
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22589
f_int2 = CAST(f_char1 AS SIGNED INT),
22590
f_charbig = 'just inserted'
22591
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22593
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22594
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22595
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22596
'just inserted' FROM t0_template
22597
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22598
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22600
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22601
f_charbig = 'updated by trigger'
22602
WHERE f_int1 = new.f_int1;
22604
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22605
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22606
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22608
# check trigger-2 success: 1
22609
DROP TRIGGER trg_1;
22610
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22611
f_int2 = CAST(f_char1 AS SIGNED INT),
22612
f_charbig = 'just inserted'
22613
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22615
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22616
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22617
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22618
'just inserted' FROM t0_template
22619
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22620
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22622
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22623
f_charbig = 'updated by trigger'
22624
WHERE f_int1 = new.f_int1;
22626
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22627
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22629
# check trigger-3 success: 1
22630
DROP TRIGGER trg_1;
22631
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22632
f_int2 = CAST(f_char1 AS SIGNED INT),
22633
f_charbig = 'just inserted'
22634
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22636
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22637
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22638
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22639
'just inserted' FROM t0_template
22640
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22641
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22643
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22644
f_charbig = 'updated by trigger'
22645
WHERE f_int1 = - old.f_int1;
22647
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22648
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22650
# check trigger-4 success: 1
22651
DROP TRIGGER trg_1;
22652
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22653
f_int2 = CAST(f_char1 AS SIGNED INT),
22654
f_charbig = 'just inserted'
22655
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22657
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22658
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22659
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22660
'just inserted' FROM t0_template
22661
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22662
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22664
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22665
f_charbig = 'updated by trigger'
22666
WHERE f_int1 = new.f_int1;
22668
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22669
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22671
# check trigger-5 success: 1
22672
DROP TRIGGER trg_1;
22673
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22674
f_int2 = CAST(f_char1 AS SIGNED INT),
22675
f_charbig = 'just inserted'
22676
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22678
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22679
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22680
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22681
'just inserted' FROM t0_template
22682
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22683
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22685
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22686
f_charbig = 'updated by trigger'
22687
WHERE f_int1 = - old.f_int1;
22689
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22690
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22692
# check trigger-6 success: 1
22693
DROP TRIGGER trg_1;
22694
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22695
f_int2 = CAST(f_char1 AS SIGNED INT),
22696
f_charbig = 'just inserted'
22697
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22699
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22702
'just inserted' FROM t0_template
22703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22704
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22707
f_charbig = 'updated by trigger'
22708
WHERE f_int1 = - old.f_int1;
22711
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22713
# check trigger-7 success: 1
22714
DROP TRIGGER trg_1;
22715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22716
f_int2 = CAST(f_char1 AS SIGNED INT),
22717
f_charbig = 'just inserted'
22718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22723
'just inserted' FROM t0_template
22724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22725
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22728
f_charbig = 'updated by trigger'
22729
WHERE f_int1 = - old.f_int1;
22732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22734
# check trigger-8 success: 1
22735
DROP TRIGGER trg_1;
22736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22737
f_int2 = CAST(f_char1 AS SIGNED INT),
22738
f_charbig = 'just inserted'
22739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22743
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22744
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22746
SET new.f_int1 = old.f_int1 + @max_row,
22747
new.f_int2 = old.f_int2 - @max_row,
22748
new.f_charbig = '####updated per update trigger####';
22751
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22752
f_charbig = '####updated per update statement itself####';
22754
# check trigger-9 success: 1
22755
DROP TRIGGER trg_2;
22756
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22757
f_int2 = CAST(f_char1 AS SIGNED INT),
22758
f_charbig = CONCAT('===',f_char1,'===');
22759
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22761
SET new.f_int1 = new.f_int1 + @max_row,
22762
new.f_int2 = new.f_int2 - @max_row,
22763
new.f_charbig = '####updated per update trigger####';
22766
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22767
f_charbig = '####updated per update statement itself####';
22769
# check trigger-10 success: 1
22770
DROP TRIGGER trg_2;
22771
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22772
f_int2 = CAST(f_char1 AS SIGNED INT),
22773
f_charbig = CONCAT('===',f_char1,'===');
22774
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22776
SET new.f_int1 = @my_max1 + @counter,
22777
new.f_int2 = @my_min2 - @counter,
22778
new.f_charbig = '####updated per insert trigger####';
22779
SET @counter = @counter + 1;
22782
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22783
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22784
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22785
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22786
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22788
DROP TRIGGER trg_3;
22790
# check trigger-11 success: 1
22792
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22793
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22794
AND f_charbig = '####updated per insert trigger####';
22795
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22797
SET new.f_int1 = @my_max1 + @counter,
22798
new.f_int2 = @my_min2 - @counter,
22799
new.f_charbig = '####updated per insert trigger####';
22800
SET @counter = @counter + 1;
22803
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22804
INSERT INTO t1 (f_char1, f_char2, f_charbig)
22805
SELECT CAST(f_int1 AS CHAR),
22806
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22807
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22809
DROP TRIGGER trg_3;
22811
# check trigger-12 success: 1
22813
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22814
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22815
AND f_charbig = '####updated per insert trigger####';
22817
Table Op Msg_type Msg_text
22818
test.t1 analyze status OK
22819
CHECK TABLE t1 EXTENDED;
22820
Table Op Msg_type Msg_text
22821
test.t1 check status OK
22822
CHECKSUM TABLE t1 EXTENDED;
22824
test.t1 <some_value>
22826
Table Op Msg_type Msg_text
22827
test.t1 optimize status OK
22828
# check layout success: 1
22829
REPAIR TABLE t1 EXTENDED;
22830
Table Op Msg_type Msg_text
22831
test.t1 repair note The storage engine for the table doesn't support repair
22832
# check layout success: 1
22835
# check TRUNCATE success: 1
22836
# check layout success: 1
22837
# End usability test (inc/partition_check.inc)
22844
f_charbig VARCHAR(1000)
22847
PARTITION BY LIST(ABS(MOD(f_int1,2)))
22848
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
22849
(PARTITION part_1 VALUES IN (0),
22850
PARTITION part_2 VALUES IN (1),
22851
PARTITION part_3 VALUES IN (NULL));
22852
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22853
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22854
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22855
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
22856
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22857
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22858
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22859
# Start usability test (inc/partition_check.inc)
22861
SHOW CREATE TABLE t1;
22863
t1 CREATE TABLE `t1` (
22864
`f_int1` int(11) DEFAULT NULL,
22865
`f_int2` int(11) DEFAULT NULL,
22866
`f_char1` char(20) DEFAULT NULL,
22867
`f_char2` char(20) DEFAULT NULL,
22868
`f_charbig` varchar(1000) DEFAULT NULL
22869
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */
22871
# check prerequisites-1 success: 1
22872
# check COUNT(*) success: 1
22873
# check MIN/MAX(f_int1) success: 1
22874
# check MIN/MAX(f_int2) success: 1
22875
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22876
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22877
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22878
WHERE f_int1 IN (2,3);
22879
# check prerequisites-3 success: 1
22880
DELETE FROM t1 WHERE f_charbig = 'delete me';
22881
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
22882
# check read via f_int1 success: 1
22883
# check read via f_int2 success: 1
22885
# check multiple-1 success: 1
22886
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22888
# check multiple-2 success: 1
22889
INSERT INTO t1 SELECT * FROM t0_template
22890
WHERE MOD(f_int1,3) = 0;
22892
# check multiple-3 success: 1
22893
UPDATE t1 SET f_int1 = f_int1 + @max_row
22894
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22895
AND @max_row_div2 + @max_row_div4;
22897
# check multiple-4 success: 1
22899
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22900
AND @max_row_div2 + @max_row_div4 + @max_row;
22902
# check multiple-5 success: 1
22903
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22905
SET f_int1 = @cur_value , f_int2 = @cur_value,
22906
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22907
f_charbig = '#SINGLE#';
22909
# check single-1 success: 1
22910
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22912
SET f_int1 = @cur_value , f_int2 = @cur_value,
22913
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22914
f_charbig = '#SINGLE#';
22916
# check single-2 success: 1
22917
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22918
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22919
UPDATE t1 SET f_int1 = @cur_value2
22920
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22922
# check single-3 success: 1
22923
SET @cur_value1= -1;
22924
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22925
UPDATE t1 SET f_int1 = @cur_value1
22926
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22928
# check single-4 success: 1
22929
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22930
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22932
# check single-5 success: 1
22933
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22935
# check single-6 success: 1
22936
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22938
# check single-7 success: 1
22939
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22940
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22941
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22942
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22943
f_charbig = '#NULL#';
22945
SET f_int1 = NULL , f_int2 = -@max_row,
22946
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22947
f_charbig = '#NULL#';
22948
# check null success: 1
22950
# check null-1 success: 1
22951
UPDATE t1 SET f_int1 = -@max_row
22952
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22953
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22955
# check null-2 success: 1
22956
UPDATE t1 SET f_int1 = NULL
22957
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22958
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22960
# check null-3 success: 1
22962
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22963
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22965
# check null-4 success: 1
22967
WHERE f_int1 = 0 AND f_int2 = 0
22968
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22969
AND f_charbig = '#NULL#';
22971
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22972
SELECT f_int1, f_int1, '', '', 'was inserted'
22973
FROM t0_template source_tab
22974
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22976
# check transactions-1 success: 1
22979
# check transactions-2 success: 1
22982
# check transactions-3 success: 1
22983
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22987
# check transactions-4 success: 1
22988
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22989
SELECT f_int1, f_int1, '', '', 'was inserted'
22990
FROM t0_template source_tab
22991
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22993
# check transactions-5 success: 1
22996
# check transactions-6 success: 1
22997
# INFO: Storage engine used for t1 seems to be transactional.
23000
# check transactions-7 success: 1
23001
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23003
SET @@session.sql_mode = 'traditional';
23004
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23005
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23006
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23007
'', '', 'was inserted' FROM t0_template
23008
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23009
ERROR 22012: Division by 0
23012
# check transactions-8 success: 1
23013
# INFO: Storage engine used for t1 seems to be able to revert
23014
# changes made by the failing statement.
23015
SET @@session.sql_mode = '';
23017
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23019
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23021
# check special-1 success: 1
23022
UPDATE t1 SET f_charbig = '';
23024
# check special-2 success: 1
23025
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23026
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23027
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23028
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23029
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23030
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23031
'just inserted' FROM t0_template
23032
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23033
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23035
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23036
f_charbig = 'updated by trigger'
23037
WHERE f_int1 = new.f_int1;
23039
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23040
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23041
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23043
# check trigger-1 success: 1
23044
DROP TRIGGER trg_1;
23045
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23046
f_int2 = CAST(f_char1 AS SIGNED INT),
23047
f_charbig = 'just inserted'
23048
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23050
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23051
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23052
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23053
'just inserted' FROM t0_template
23054
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23055
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23057
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23058
f_charbig = 'updated by trigger'
23059
WHERE f_int1 = new.f_int1;
23061
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23062
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23063
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23065
# check trigger-2 success: 1
23066
DROP TRIGGER trg_1;
23067
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23068
f_int2 = CAST(f_char1 AS SIGNED INT),
23069
f_charbig = 'just inserted'
23070
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23072
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23073
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23074
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23075
'just inserted' FROM t0_template
23076
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23077
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23079
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23080
f_charbig = 'updated by trigger'
23081
WHERE f_int1 = new.f_int1;
23083
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23084
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23086
# check trigger-3 success: 1
23087
DROP TRIGGER trg_1;
23088
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23089
f_int2 = CAST(f_char1 AS SIGNED INT),
23090
f_charbig = 'just inserted'
23091
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23093
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23094
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23095
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23096
'just inserted' FROM t0_template
23097
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23098
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23100
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23101
f_charbig = 'updated by trigger'
23102
WHERE f_int1 = - old.f_int1;
23104
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23105
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23107
# check trigger-4 success: 1
23108
DROP TRIGGER trg_1;
23109
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23110
f_int2 = CAST(f_char1 AS SIGNED INT),
23111
f_charbig = 'just inserted'
23112
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23114
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23115
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23116
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23117
'just inserted' FROM t0_template
23118
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23119
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23121
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23122
f_charbig = 'updated by trigger'
23123
WHERE f_int1 = new.f_int1;
23125
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23126
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23128
# check trigger-5 success: 1
23129
DROP TRIGGER trg_1;
23130
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23131
f_int2 = CAST(f_char1 AS SIGNED INT),
23132
f_charbig = 'just inserted'
23133
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23135
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23136
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23137
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23138
'just inserted' FROM t0_template
23139
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23140
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23142
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23143
f_charbig = 'updated by trigger'
23144
WHERE f_int1 = - old.f_int1;
23146
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23147
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23149
# check trigger-6 success: 1
23150
DROP TRIGGER trg_1;
23151
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23152
f_int2 = CAST(f_char1 AS SIGNED INT),
23153
f_charbig = 'just inserted'
23154
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23156
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23157
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23158
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23159
'just inserted' FROM t0_template
23160
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23161
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23163
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23164
f_charbig = 'updated by trigger'
23165
WHERE f_int1 = - old.f_int1;
23168
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23170
# check trigger-7 success: 1
23171
DROP TRIGGER trg_1;
23172
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23173
f_int2 = CAST(f_char1 AS SIGNED INT),
23174
f_charbig = 'just inserted'
23175
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23177
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23178
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23179
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23180
'just inserted' FROM t0_template
23181
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23182
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23184
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23185
f_charbig = 'updated by trigger'
23186
WHERE f_int1 = - old.f_int1;
23189
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23191
# check trigger-8 success: 1
23192
DROP TRIGGER trg_1;
23193
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23194
f_int2 = CAST(f_char1 AS SIGNED INT),
23195
f_charbig = 'just inserted'
23196
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23198
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23200
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23201
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23203
SET new.f_int1 = old.f_int1 + @max_row,
23204
new.f_int2 = old.f_int2 - @max_row,
23205
new.f_charbig = '####updated per update trigger####';
23208
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23209
f_charbig = '####updated per update statement itself####';
23211
# check trigger-9 success: 1
23212
DROP TRIGGER trg_2;
23213
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23214
f_int2 = CAST(f_char1 AS SIGNED INT),
23215
f_charbig = CONCAT('===',f_char1,'===');
23216
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23218
SET new.f_int1 = new.f_int1 + @max_row,
23219
new.f_int2 = new.f_int2 - @max_row,
23220
new.f_charbig = '####updated per update trigger####';
23223
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23224
f_charbig = '####updated per update statement itself####';
23226
# check trigger-10 success: 1
23227
DROP TRIGGER trg_2;
23228
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23229
f_int2 = CAST(f_char1 AS SIGNED INT),
23230
f_charbig = CONCAT('===',f_char1,'===');
23231
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23233
SET new.f_int1 = @my_max1 + @counter,
23234
new.f_int2 = @my_min2 - @counter,
23235
new.f_charbig = '####updated per insert trigger####';
23236
SET @counter = @counter + 1;
23239
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23240
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23241
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23242
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23243
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23245
DROP TRIGGER trg_3;
23247
# check trigger-11 success: 1
23249
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23250
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23251
AND f_charbig = '####updated per insert trigger####';
23252
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23254
SET new.f_int1 = @my_max1 + @counter,
23255
new.f_int2 = @my_min2 - @counter,
23256
new.f_charbig = '####updated per insert trigger####';
23257
SET @counter = @counter + 1;
23260
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23261
INSERT INTO t1 (f_char1, f_char2, f_charbig)
23262
SELECT CAST(f_int1 AS CHAR),
23263
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23264
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23266
DROP TRIGGER trg_3;
23268
# check trigger-12 success: 1
23270
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23271
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23272
AND f_charbig = '####updated per insert trigger####';
23274
Table Op Msg_type Msg_text
23275
test.t1 analyze status OK
23276
CHECK TABLE t1 EXTENDED;
23277
Table Op Msg_type Msg_text
23278
test.t1 check status OK
23279
CHECKSUM TABLE t1 EXTENDED;
23281
test.t1 <some_value>
23283
Table Op Msg_type Msg_text
23284
test.t1 optimize status OK
23285
# check layout success: 1
23286
REPAIR TABLE t1 EXTENDED;
23287
Table Op Msg_type Msg_text
23288
test.t1 repair note The storage engine for the table doesn't support repair
23289
# check layout success: 1
23292
# check TRUNCATE success: 1
23293
# check layout success: 1
23294
# End usability test (inc/partition_check.inc)
23296
# 4.3 ALTER ... REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
23297
DROP TABLE IF EXISTS t1;
23303
f_charbig VARCHAR(1000)
23306
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
23307
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23308
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23309
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23310
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
23311
ERROR HY000: Error in list of partitions to REBUILD
23318
f_charbig VARCHAR(1000)
23321
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
23322
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23323
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23324
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23325
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
23326
ERROR HY000: Error in list of partitions to REBUILD
23333
f_charbig VARCHAR(1000)
23336
PARTITION BY LIST(MOD(f_int1,4))
23337
(PARTITION part_3 VALUES IN (-3),
23338
PARTITION part_2 VALUES IN (-2),
23339
PARTITION part_1 VALUES IN (-1),
23340
PARTITION part_N VALUES IN (NULL),
23341
PARTITION part0 VALUES IN (0),
23342
PARTITION part1 VALUES IN (1),
23343
PARTITION part2 VALUES IN (2),
23344
PARTITION part3 VALUES IN (3));
23345
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23346
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23347
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23348
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
23349
ERROR HY000: Error in list of partitions to REBUILD
23356
f_charbig VARCHAR(1000)
23359
PARTITION BY RANGE(f_int1)
23360
(PARTITION parta VALUES LESS THAN (0),
23361
PARTITION part_1 VALUES LESS THAN (5),
23362
PARTITION part_2 VALUES LESS THAN (10),
23363
PARTITION part_3 VALUES LESS THAN (10 + 5),
23364
PARTITION part_4 VALUES LESS THAN (20),
23365
PARTITION part_5 VALUES LESS THAN (2147483646));
23366
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23367
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23368
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23369
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
23370
ERROR HY000: Error in list of partitions to REBUILD
23377
f_charbig VARCHAR(1000)
23380
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
23381
(PARTITION part_1 VALUES LESS THAN (0),
23382
PARTITION part_2 VALUES LESS THAN (5),
23383
PARTITION part_3 VALUES LESS THAN (10),
23384
PARTITION part_4 VALUES LESS THAN (2147483646));
23385
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23386
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23387
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23388
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
23389
ERROR HY000: Error in list of partitions to REBUILD
23396
f_charbig VARCHAR(1000)
23399
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
23400
(PARTITION part_1 VALUES LESS THAN (0)
23401
(SUBPARTITION subpart11, SUBPARTITION subpart12),
23402
PARTITION part_2 VALUES LESS THAN (5)
23403
(SUBPARTITION subpart21, SUBPARTITION subpart22),
23404
PARTITION part_3 VALUES LESS THAN (10)
23405
(SUBPARTITION subpart31, SUBPARTITION subpart32),
23406
PARTITION part_4 VALUES LESS THAN (2147483646)
23407
(SUBPARTITION subpart41, SUBPARTITION subpart42));
23408
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23409
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23410
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23411
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
23412
ERROR HY000: Error in list of partitions to REBUILD
23419
f_charbig VARCHAR(1000)
23422
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
23423
(PARTITION part_1 VALUES IN (0)
23424
(SUBPARTITION sp11, SUBPARTITION sp12),
23425
PARTITION part_2 VALUES IN (1)
23426
(SUBPARTITION sp21, SUBPARTITION sp22),
23427
PARTITION part_3 VALUES IN (2)
23428
(SUBPARTITION sp31, SUBPARTITION sp32),
23429
PARTITION part_4 VALUES IN (NULL)
23430
(SUBPARTITION sp41, SUBPARTITION sp42));
23431
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23432
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23433
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23434
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
23435
ERROR HY000: Error in list of partitions to REBUILD
23442
f_charbig VARCHAR(1000)
23445
PARTITION BY LIST(ABS(MOD(f_int1,2)))
23446
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
23447
(PARTITION part_1 VALUES IN (0),
23448
PARTITION part_2 VALUES IN (1),
23449
PARTITION part_3 VALUES IN (NULL));
23450
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23451
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23452
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23453
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
23454
ERROR HY000: Error in list of partitions to REBUILD
23456
# 4.4 ALTER ... REBUILD PARTITION part_1,part_1,part_1;
23457
DROP TABLE IF EXISTS t1;
23463
f_charbig VARCHAR(1000)
23466
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
23467
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23468
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23469
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23470
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
23471
ERROR HY000: Error in list of partitions to REBUILD
23478
f_charbig VARCHAR(1000)
23481
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
23482
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23483
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23484
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23485
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
23486
ERROR HY000: Error in list of partitions to REBUILD
23493
f_charbig VARCHAR(1000)
23496
PARTITION BY LIST(MOD(f_int1,4))
23497
(PARTITION part_3 VALUES IN (-3),
23498
PARTITION part_2 VALUES IN (-2),
23499
PARTITION part_1 VALUES IN (-1),
23500
PARTITION part_N VALUES IN (NULL),
23501
PARTITION part0 VALUES IN (0),
23502
PARTITION part1 VALUES IN (1),
23503
PARTITION part2 VALUES IN (2),
23504
PARTITION part3 VALUES IN (3));
23505
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23506
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23507
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23508
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
23509
ERROR HY000: Error in list of partitions to REBUILD
23516
f_charbig VARCHAR(1000)
23519
PARTITION BY RANGE(f_int1)
23520
(PARTITION parta VALUES LESS THAN (0),
23521
PARTITION part_1 VALUES LESS THAN (5),
23522
PARTITION part_2 VALUES LESS THAN (10),
23523
PARTITION part_3 VALUES LESS THAN (10 + 5),
23524
PARTITION part_4 VALUES LESS THAN (20),
23525
PARTITION part_5 VALUES LESS THAN (2147483646));
23526
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23527
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23528
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23529
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
23530
ERROR HY000: Error in list of partitions to REBUILD
23537
f_charbig VARCHAR(1000)
23540
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
23541
(PARTITION part_1 VALUES LESS THAN (0),
23542
PARTITION part_2 VALUES LESS THAN (5),
23543
PARTITION part_3 VALUES LESS THAN (10),
23544
PARTITION part_4 VALUES LESS THAN (2147483646));
23545
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23546
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23547
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23548
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
23549
ERROR HY000: Error in list of partitions to REBUILD
23556
f_charbig VARCHAR(1000)
23559
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
23560
(PARTITION part_1 VALUES LESS THAN (0)
23561
(SUBPARTITION subpart11, SUBPARTITION subpart12),
23562
PARTITION part_2 VALUES LESS THAN (5)
23563
(SUBPARTITION subpart21, SUBPARTITION subpart22),
23564
PARTITION part_3 VALUES LESS THAN (10)
23565
(SUBPARTITION subpart31, SUBPARTITION subpart32),
23566
PARTITION part_4 VALUES LESS THAN (2147483646)
23567
(SUBPARTITION subpart41, SUBPARTITION subpart42));
23568
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23569
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23570
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23571
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
23572
ERROR HY000: Error in list of partitions to REBUILD
23579
f_charbig VARCHAR(1000)
23582
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
23583
(PARTITION part_1 VALUES IN (0)
23584
(SUBPARTITION sp11, SUBPARTITION sp12),
23585
PARTITION part_2 VALUES IN (1)
23586
(SUBPARTITION sp21, SUBPARTITION sp22),
23587
PARTITION part_3 VALUES IN (2)
23588
(SUBPARTITION sp31, SUBPARTITION sp32),
23589
PARTITION part_4 VALUES IN (NULL)
23590
(SUBPARTITION sp41, SUBPARTITION sp42));
23591
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23592
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23593
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23594
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
23595
ERROR HY000: Error in list of partitions to REBUILD
23602
f_charbig VARCHAR(1000)
23605
PARTITION BY LIST(ABS(MOD(f_int1,2)))
23606
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
23607
(PARTITION part_1 VALUES IN (0),
23608
PARTITION part_2 VALUES IN (1),
23609
PARTITION part_3 VALUES IN (NULL));
23610
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23611
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23612
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23613
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
23614
ERROR HY000: Error in list of partitions to REBUILD
23616
#------------------------------------------------------------------------
23617
# 5 ALTER ... REPAIR PARTITION
23618
#------------------------------------------------------------------------
23619
# 5.1 ALTER ... REBUILD PARTITION part_1;
23620
DROP TABLE IF EXISTS t1;
23626
f_charbig VARCHAR(1000)
23629
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
23630
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23631
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23632
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23633
ALTER TABLE t1 REBUILD PARTITION part_1;
23634
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23635
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23636
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23637
# Start usability test (inc/partition_check.inc)
23639
SHOW CREATE TABLE t1;
23641
t1 CREATE TABLE `t1` (
23642
`f_int1` int(11) DEFAULT NULL,
23643
`f_int2` int(11) DEFAULT NULL,
23644
`f_char1` char(20) DEFAULT NULL,
23645
`f_char2` char(20) DEFAULT NULL,
23646
`f_charbig` varchar(1000) DEFAULT NULL
23647
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */
23649
# check prerequisites-1 success: 1
23650
# check COUNT(*) success: 1
23651
# check MIN/MAX(f_int1) success: 1
23652
# check MIN/MAX(f_int2) success: 1
23653
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23654
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23655
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23656
WHERE f_int1 IN (2,3);
23657
# check prerequisites-3 success: 1
23658
DELETE FROM t1 WHERE f_charbig = 'delete me';
23659
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23660
# check read via f_int1 success: 1
23661
# check read via f_int2 success: 1
23663
# check multiple-1 success: 1
23664
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23666
# check multiple-2 success: 1
23667
INSERT INTO t1 SELECT * FROM t0_template
23668
WHERE MOD(f_int1,3) = 0;
23670
# check multiple-3 success: 1
23671
UPDATE t1 SET f_int1 = f_int1 + @max_row
23672
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23673
AND @max_row_div2 + @max_row_div4;
23675
# check multiple-4 success: 1
23677
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23678
AND @max_row_div2 + @max_row_div4 + @max_row;
23680
# check multiple-5 success: 1
23681
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23683
SET f_int1 = @cur_value , f_int2 = @cur_value,
23684
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23685
f_charbig = '#SINGLE#';
23687
# check single-1 success: 1
23688
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23690
SET f_int1 = @cur_value , f_int2 = @cur_value,
23691
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23692
f_charbig = '#SINGLE#';
23694
# check single-2 success: 1
23695
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23696
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23697
UPDATE t1 SET f_int1 = @cur_value2
23698
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23700
# check single-3 success: 1
23701
SET @cur_value1= -1;
23702
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23703
UPDATE t1 SET f_int1 = @cur_value1
23704
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23706
# check single-4 success: 1
23707
SELECT MAX(f_int1) INTO @cur_value FROM t1;
23708
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23710
# check single-5 success: 1
23711
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23713
# check single-6 success: 1
23714
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23716
# check single-7 success: 1
23717
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
23718
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23719
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23720
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23721
f_charbig = '#NULL#';
23723
SET f_int1 = NULL , f_int2 = -@max_row,
23724
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23725
f_charbig = '#NULL#';
23726
# check null success: 1
23728
# check null-1 success: 1
23729
UPDATE t1 SET f_int1 = -@max_row
23730
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23731
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23733
# check null-2 success: 1
23734
UPDATE t1 SET f_int1 = NULL
23735
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23736
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23738
# check null-3 success: 1
23740
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23741
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23743
# check null-4 success: 1
23745
WHERE f_int1 = 0 AND f_int2 = 0
23746
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23747
AND f_charbig = '#NULL#';
23749
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23750
SELECT f_int1, f_int1, '', '', 'was inserted'
23751
FROM t0_template source_tab
23752
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23754
# check transactions-1 success: 1
23757
# check transactions-2 success: 1
23760
# check transactions-3 success: 1
23761
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23765
# check transactions-4 success: 1
23766
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23767
SELECT f_int1, f_int1, '', '', 'was inserted'
23768
FROM t0_template source_tab
23769
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23771
# check transactions-5 success: 1
23774
# check transactions-6 success: 1
23775
# INFO: Storage engine used for t1 seems to be transactional.
23778
# check transactions-7 success: 1
23779
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23781
SET @@session.sql_mode = 'traditional';
23782
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23783
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23784
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23785
'', '', 'was inserted' FROM t0_template
23786
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23787
ERROR 22012: Division by 0
23790
# check transactions-8 success: 1
23791
# INFO: Storage engine used for t1 seems to be able to revert
23792
# changes made by the failing statement.
23793
SET @@session.sql_mode = '';
23795
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23797
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23799
# check special-1 success: 1
23800
UPDATE t1 SET f_charbig = '';
23802
# check special-2 success: 1
23803
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23804
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23805
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23806
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23807
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23808
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23809
'just inserted' FROM t0_template
23810
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23811
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23813
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23814
f_charbig = 'updated by trigger'
23815
WHERE f_int1 = new.f_int1;
23817
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23818
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23819
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23821
# check trigger-1 success: 1
23822
DROP TRIGGER trg_1;
23823
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23824
f_int2 = CAST(f_char1 AS SIGNED INT),
23825
f_charbig = 'just inserted'
23826
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23828
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23829
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23830
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23831
'just inserted' FROM t0_template
23832
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23833
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23835
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23836
f_charbig = 'updated by trigger'
23837
WHERE f_int1 = new.f_int1;
23839
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23840
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23841
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23843
# check trigger-2 success: 1
23844
DROP TRIGGER trg_1;
23845
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23846
f_int2 = CAST(f_char1 AS SIGNED INT),
23847
f_charbig = 'just inserted'
23848
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23850
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23851
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23852
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23853
'just inserted' FROM t0_template
23854
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23855
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23857
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23858
f_charbig = 'updated by trigger'
23859
WHERE f_int1 = new.f_int1;
23861
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23862
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23864
# check trigger-3 success: 1
23865
DROP TRIGGER trg_1;
23866
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23867
f_int2 = CAST(f_char1 AS SIGNED INT),
23868
f_charbig = 'just inserted'
23869
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23871
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23872
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23873
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23874
'just inserted' FROM t0_template
23875
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23876
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23878
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23879
f_charbig = 'updated by trigger'
23880
WHERE f_int1 = - old.f_int1;
23882
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23883
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23885
# check trigger-4 success: 1
23886
DROP TRIGGER trg_1;
23887
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23888
f_int2 = CAST(f_char1 AS SIGNED INT),
23889
f_charbig = 'just inserted'
23890
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23892
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23893
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23894
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23895
'just inserted' FROM t0_template
23896
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23897
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23899
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23900
f_charbig = 'updated by trigger'
23901
WHERE f_int1 = new.f_int1;
23903
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23904
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23906
# check trigger-5 success: 1
23907
DROP TRIGGER trg_1;
23908
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23909
f_int2 = CAST(f_char1 AS SIGNED INT),
23910
f_charbig = 'just inserted'
23911
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23913
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23914
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23915
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23916
'just inserted' FROM t0_template
23917
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23918
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23920
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23921
f_charbig = 'updated by trigger'
23922
WHERE f_int1 = - old.f_int1;
23924
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23925
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23927
# check trigger-6 success: 1
23928
DROP TRIGGER trg_1;
23929
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23930
f_int2 = CAST(f_char1 AS SIGNED INT),
23931
f_charbig = 'just inserted'
23932
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23934
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23935
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23936
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23937
'just inserted' FROM t0_template
23938
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23939
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23941
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23942
f_charbig = 'updated by trigger'
23943
WHERE f_int1 = - old.f_int1;
23946
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23948
# check trigger-7 success: 1
23949
DROP TRIGGER trg_1;
23950
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23951
f_int2 = CAST(f_char1 AS SIGNED INT),
23952
f_charbig = 'just inserted'
23953
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23955
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23956
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23957
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23958
'just inserted' FROM t0_template
23959
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23960
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23962
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23963
f_charbig = 'updated by trigger'
23964
WHERE f_int1 = - old.f_int1;
23967
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23969
# check trigger-8 success: 1
23970
DROP TRIGGER trg_1;
23971
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23972
f_int2 = CAST(f_char1 AS SIGNED INT),
23973
f_charbig = 'just inserted'
23974
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23976
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23978
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23979
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23981
SET new.f_int1 = old.f_int1 + @max_row,
23982
new.f_int2 = old.f_int2 - @max_row,
23983
new.f_charbig = '####updated per update trigger####';
23986
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23987
f_charbig = '####updated per update statement itself####';
23989
# check trigger-9 success: 1
23990
DROP TRIGGER trg_2;
23991
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23992
f_int2 = CAST(f_char1 AS SIGNED INT),
23993
f_charbig = CONCAT('===',f_char1,'===');
23994
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23996
SET new.f_int1 = new.f_int1 + @max_row,
23997
new.f_int2 = new.f_int2 - @max_row,
23998
new.f_charbig = '####updated per update trigger####';
24001
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24002
f_charbig = '####updated per update statement itself####';
24004
# check trigger-10 success: 1
24005
DROP TRIGGER trg_2;
24006
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24007
f_int2 = CAST(f_char1 AS SIGNED INT),
24008
f_charbig = CONCAT('===',f_char1,'===');
24009
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24011
SET new.f_int1 = @my_max1 + @counter,
24012
new.f_int2 = @my_min2 - @counter,
24013
new.f_charbig = '####updated per insert trigger####';
24014
SET @counter = @counter + 1;
24017
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24018
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24019
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24020
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24021
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24023
DROP TRIGGER trg_3;
24025
# check trigger-11 success: 1
24027
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24028
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24029
AND f_charbig = '####updated per insert trigger####';
24030
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24032
SET new.f_int1 = @my_max1 + @counter,
24033
new.f_int2 = @my_min2 - @counter,
24034
new.f_charbig = '####updated per insert trigger####';
24035
SET @counter = @counter + 1;
24038
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24039
INSERT INTO t1 (f_char1, f_char2, f_charbig)
24040
SELECT CAST(f_int1 AS CHAR),
24041
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24042
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24044
DROP TRIGGER trg_3;
24046
# check trigger-12 success: 1
24048
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24049
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24050
AND f_charbig = '####updated per insert trigger####';
24052
Table Op Msg_type Msg_text
24053
test.t1 analyze status OK
24054
CHECK TABLE t1 EXTENDED;
24055
Table Op Msg_type Msg_text
24056
test.t1 check status OK
24057
CHECKSUM TABLE t1 EXTENDED;
24059
test.t1 <some_value>
24061
Table Op Msg_type Msg_text
24062
test.t1 optimize status OK
24063
# check layout success: 1
24064
REPAIR TABLE t1 EXTENDED;
24065
Table Op Msg_type Msg_text
24066
test.t1 repair note The storage engine for the table doesn't support repair
24067
# check layout success: 1
24070
# check TRUNCATE success: 1
24071
# check layout success: 1
24072
# End usability test (inc/partition_check.inc)
24079
f_charbig VARCHAR(1000)
24082
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
24083
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24084
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24085
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24086
ALTER TABLE t1 REBUILD PARTITION part_1;
24087
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24088
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24089
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24090
# Start usability test (inc/partition_check.inc)
24092
SHOW CREATE TABLE t1;
24094
t1 CREATE TABLE `t1` (
24095
`f_int1` int(11) DEFAULT NULL,
24096
`f_int2` int(11) DEFAULT NULL,
24097
`f_char1` char(20) DEFAULT NULL,
24098
`f_char2` char(20) DEFAULT NULL,
24099
`f_charbig` varchar(1000) DEFAULT NULL
24100
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */
24102
# check prerequisites-1 success: 1
24103
# check COUNT(*) success: 1
24104
# check MIN/MAX(f_int1) success: 1
24105
# check MIN/MAX(f_int2) success: 1
24106
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24107
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24108
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24109
WHERE f_int1 IN (2,3);
24110
# check prerequisites-3 success: 1
24111
DELETE FROM t1 WHERE f_charbig = 'delete me';
24112
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
24113
# check read via f_int1 success: 1
24114
# check read via f_int2 success: 1
24116
# check multiple-1 success: 1
24117
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24119
# check multiple-2 success: 1
24120
INSERT INTO t1 SELECT * FROM t0_template
24121
WHERE MOD(f_int1,3) = 0;
24123
# check multiple-3 success: 1
24124
UPDATE t1 SET f_int1 = f_int1 + @max_row
24125
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24126
AND @max_row_div2 + @max_row_div4;
24128
# check multiple-4 success: 1
24130
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24131
AND @max_row_div2 + @max_row_div4 + @max_row;
24133
# check multiple-5 success: 1
24134
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24136
SET f_int1 = @cur_value , f_int2 = @cur_value,
24137
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24138
f_charbig = '#SINGLE#';
24140
# check single-1 success: 1
24141
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24143
SET f_int1 = @cur_value , f_int2 = @cur_value,
24144
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24145
f_charbig = '#SINGLE#';
24147
# check single-2 success: 1
24148
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24149
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24150
UPDATE t1 SET f_int1 = @cur_value2
24151
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24153
# check single-3 success: 1
24154
SET @cur_value1= -1;
24155
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24156
UPDATE t1 SET f_int1 = @cur_value1
24157
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24159
# check single-4 success: 1
24160
SELECT MAX(f_int1) INTO @cur_value FROM t1;
24161
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24163
# check single-5 success: 1
24164
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24166
# check single-6 success: 1
24167
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24169
# check single-7 success: 1
24170
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24171
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24172
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24173
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24174
f_charbig = '#NULL#';
24176
SET f_int1 = NULL , f_int2 = -@max_row,
24177
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24178
f_charbig = '#NULL#';
24179
# check null success: 1
24181
# check null-1 success: 1
24182
UPDATE t1 SET f_int1 = -@max_row
24183
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24184
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24186
# check null-2 success: 1
24187
UPDATE t1 SET f_int1 = NULL
24188
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24189
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24191
# check null-3 success: 1
24193
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24194
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24196
# check null-4 success: 1
24198
WHERE f_int1 = 0 AND f_int2 = 0
24199
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24200
AND f_charbig = '#NULL#';
24202
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24203
SELECT f_int1, f_int1, '', '', 'was inserted'
24204
FROM t0_template source_tab
24205
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24207
# check transactions-1 success: 1
24210
# check transactions-2 success: 1
24213
# check transactions-3 success: 1
24214
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24218
# check transactions-4 success: 1
24219
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24220
SELECT f_int1, f_int1, '', '', 'was inserted'
24221
FROM t0_template source_tab
24222
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24224
# check transactions-5 success: 1
24227
# check transactions-6 success: 1
24228
# INFO: Storage engine used for t1 seems to be transactional.
24231
# check transactions-7 success: 1
24232
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24234
SET @@session.sql_mode = 'traditional';
24235
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24236
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24237
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24238
'', '', 'was inserted' FROM t0_template
24239
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24240
ERROR 22012: Division by 0
24243
# check transactions-8 success: 1
24244
# INFO: Storage engine used for t1 seems to be able to revert
24245
# changes made by the failing statement.
24246
SET @@session.sql_mode = '';
24248
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24250
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24252
# check special-1 success: 1
24253
UPDATE t1 SET f_charbig = '';
24255
# check special-2 success: 1
24256
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24257
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24258
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24259
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24260
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24261
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24262
'just inserted' FROM t0_template
24263
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24264
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24266
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24267
f_charbig = 'updated by trigger'
24268
WHERE f_int1 = new.f_int1;
24270
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24271
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24272
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24274
# check trigger-1 success: 1
24275
DROP TRIGGER trg_1;
24276
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24277
f_int2 = CAST(f_char1 AS SIGNED INT),
24278
f_charbig = 'just inserted'
24279
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24281
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24282
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24283
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24284
'just inserted' FROM t0_template
24285
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24286
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24288
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24289
f_charbig = 'updated by trigger'
24290
WHERE f_int1 = new.f_int1;
24292
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24293
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24294
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24296
# check trigger-2 success: 1
24297
DROP TRIGGER trg_1;
24298
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24299
f_int2 = CAST(f_char1 AS SIGNED INT),
24300
f_charbig = 'just inserted'
24301
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24303
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24304
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24305
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24306
'just inserted' FROM t0_template
24307
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24308
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24310
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24311
f_charbig = 'updated by trigger'
24312
WHERE f_int1 = new.f_int1;
24314
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24315
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24317
# check trigger-3 success: 1
24318
DROP TRIGGER trg_1;
24319
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24320
f_int2 = CAST(f_char1 AS SIGNED INT),
24321
f_charbig = 'just inserted'
24322
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24324
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24325
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24326
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24327
'just inserted' FROM t0_template
24328
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24329
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24331
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24332
f_charbig = 'updated by trigger'
24333
WHERE f_int1 = - old.f_int1;
24335
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24336
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24338
# check trigger-4 success: 1
24339
DROP TRIGGER trg_1;
24340
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24341
f_int2 = CAST(f_char1 AS SIGNED INT),
24342
f_charbig = 'just inserted'
24343
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24345
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24346
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24347
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24348
'just inserted' FROM t0_template
24349
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24350
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24352
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24353
f_charbig = 'updated by trigger'
24354
WHERE f_int1 = new.f_int1;
24356
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24357
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24359
# check trigger-5 success: 1
24360
DROP TRIGGER trg_1;
24361
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24362
f_int2 = CAST(f_char1 AS SIGNED INT),
24363
f_charbig = 'just inserted'
24364
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24366
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24367
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24368
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24369
'just inserted' FROM t0_template
24370
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24371
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24373
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24374
f_charbig = 'updated by trigger'
24375
WHERE f_int1 = - old.f_int1;
24377
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24378
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24380
# check trigger-6 success: 1
24381
DROP TRIGGER trg_1;
24382
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24383
f_int2 = CAST(f_char1 AS SIGNED INT),
24384
f_charbig = 'just inserted'
24385
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24387
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24388
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24389
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24390
'just inserted' FROM t0_template
24391
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24392
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24394
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24395
f_charbig = 'updated by trigger'
24396
WHERE f_int1 = - old.f_int1;
24399
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24401
# check trigger-7 success: 1
24402
DROP TRIGGER trg_1;
24403
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24404
f_int2 = CAST(f_char1 AS SIGNED INT),
24405
f_charbig = 'just inserted'
24406
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24408
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24409
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24410
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24411
'just inserted' FROM t0_template
24412
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24413
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24415
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24416
f_charbig = 'updated by trigger'
24417
WHERE f_int1 = - old.f_int1;
24420
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24422
# check trigger-8 success: 1
24423
DROP TRIGGER trg_1;
24424
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24425
f_int2 = CAST(f_char1 AS SIGNED INT),
24426
f_charbig = 'just inserted'
24427
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24429
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24431
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24432
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24434
SET new.f_int1 = old.f_int1 + @max_row,
24435
new.f_int2 = old.f_int2 - @max_row,
24436
new.f_charbig = '####updated per update trigger####';
24439
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24440
f_charbig = '####updated per update statement itself####';
24442
# check trigger-9 success: 1
24443
DROP TRIGGER trg_2;
24444
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24445
f_int2 = CAST(f_char1 AS SIGNED INT),
24446
f_charbig = CONCAT('===',f_char1,'===');
24447
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24449
SET new.f_int1 = new.f_int1 + @max_row,
24450
new.f_int2 = new.f_int2 - @max_row,
24451
new.f_charbig = '####updated per update trigger####';
24454
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24455
f_charbig = '####updated per update statement itself####';
24457
# check trigger-10 success: 1
24458
DROP TRIGGER trg_2;
24459
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24460
f_int2 = CAST(f_char1 AS SIGNED INT),
24461
f_charbig = CONCAT('===',f_char1,'===');
24462
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24464
SET new.f_int1 = @my_max1 + @counter,
24465
new.f_int2 = @my_min2 - @counter,
24466
new.f_charbig = '####updated per insert trigger####';
24467
SET @counter = @counter + 1;
24470
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24471
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24472
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24473
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24474
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24476
DROP TRIGGER trg_3;
24478
# check trigger-11 success: 1
24480
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24481
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24482
AND f_charbig = '####updated per insert trigger####';
24483
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24485
SET new.f_int1 = @my_max1 + @counter,
24486
new.f_int2 = @my_min2 - @counter,
24487
new.f_charbig = '####updated per insert trigger####';
24488
SET @counter = @counter + 1;
24491
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24492
INSERT INTO t1 (f_char1, f_char2, f_charbig)
24493
SELECT CAST(f_int1 AS CHAR),
24494
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24495
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24497
DROP TRIGGER trg_3;
24499
# check trigger-12 success: 1
24501
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24502
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24503
AND f_charbig = '####updated per insert trigger####';
24505
Table Op Msg_type Msg_text
24506
test.t1 analyze status OK
24507
CHECK TABLE t1 EXTENDED;
24508
Table Op Msg_type Msg_text
24509
test.t1 check status OK
24510
CHECKSUM TABLE t1 EXTENDED;
24512
test.t1 <some_value>
24514
Table Op Msg_type Msg_text
24515
test.t1 optimize status OK
24516
# check layout success: 1
24517
REPAIR TABLE t1 EXTENDED;
24518
Table Op Msg_type Msg_text
24519
test.t1 repair note The storage engine for the table doesn't support repair
24520
# check layout success: 1
24523
# check TRUNCATE success: 1
24524
# check layout success: 1
24525
# End usability test (inc/partition_check.inc)
24532
f_charbig VARCHAR(1000)
24535
PARTITION BY LIST(MOD(f_int1,4))
24536
(PARTITION part_3 VALUES IN (-3),
24537
PARTITION part_2 VALUES IN (-2),
24538
PARTITION part_1 VALUES IN (-1),
24539
PARTITION part_N VALUES IN (NULL),
24540
PARTITION part0 VALUES IN (0),
24541
PARTITION part1 VALUES IN (1),
24542
PARTITION part2 VALUES IN (2),
24543
PARTITION part3 VALUES IN (3));
24544
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24545
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24546
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24547
ALTER TABLE t1 REBUILD PARTITION part_1;
24548
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24549
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24550
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24551
# Start usability test (inc/partition_check.inc)
24553
SHOW CREATE TABLE t1;
24555
t1 CREATE TABLE `t1` (
24556
`f_int1` int(11) DEFAULT NULL,
24557
`f_int2` int(11) DEFAULT NULL,
24558
`f_char1` char(20) DEFAULT NULL,
24559
`f_char2` char(20) DEFAULT NULL,
24560
`f_charbig` varchar(1000) DEFAULT NULL
24561
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
24563
# check prerequisites-1 success: 1
24564
# check COUNT(*) success: 1
24565
# check MIN/MAX(f_int1) success: 1
24566
# check MIN/MAX(f_int2) success: 1
24567
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24568
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24569
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24570
WHERE f_int1 IN (2,3);
24571
# check prerequisites-3 success: 1
24572
DELETE FROM t1 WHERE f_charbig = 'delete me';
24573
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
24574
# check read via f_int1 success: 1
24575
# check read via f_int2 success: 1
24577
# check multiple-1 success: 1
24578
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24580
# check multiple-2 success: 1
24581
INSERT INTO t1 SELECT * FROM t0_template
24582
WHERE MOD(f_int1,3) = 0;
24584
# check multiple-3 success: 1
24585
UPDATE t1 SET f_int1 = f_int1 + @max_row
24586
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24587
AND @max_row_div2 + @max_row_div4;
24589
# check multiple-4 success: 1
24591
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24592
AND @max_row_div2 + @max_row_div4 + @max_row;
24594
# check multiple-5 success: 1
24595
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24597
SET f_int1 = @cur_value , f_int2 = @cur_value,
24598
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24599
f_charbig = '#SINGLE#';
24601
# check single-1 success: 1
24602
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24604
SET f_int1 = @cur_value , f_int2 = @cur_value,
24605
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24606
f_charbig = '#SINGLE#';
24608
# check single-2 success: 1
24609
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24610
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24611
UPDATE t1 SET f_int1 = @cur_value2
24612
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24614
# check single-3 success: 1
24615
SET @cur_value1= -1;
24616
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24617
UPDATE t1 SET f_int1 = @cur_value1
24618
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24620
# check single-4 success: 1
24621
SELECT MAX(f_int1) INTO @cur_value FROM t1;
24622
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24624
# check single-5 success: 1
24625
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24627
# check single-6 success: 1
24628
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24630
# check single-7 success: 1
24631
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24632
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24633
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24634
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24635
f_charbig = '#NULL#';
24637
SET f_int1 = NULL , f_int2 = -@max_row,
24638
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24639
f_charbig = '#NULL#';
24640
# check null success: 1
24642
# check null-1 success: 1
24643
UPDATE t1 SET f_int1 = -@max_row
24644
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24645
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24647
# check null-2 success: 1
24648
UPDATE t1 SET f_int1 = NULL
24649
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24650
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24652
# check null-3 success: 1
24654
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24655
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24657
# check null-4 success: 1
24659
WHERE f_int1 = 0 AND f_int2 = 0
24660
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24661
AND f_charbig = '#NULL#';
24663
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24664
SELECT f_int1, f_int1, '', '', 'was inserted'
24665
FROM t0_template source_tab
24666
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24668
# check transactions-1 success: 1
24671
# check transactions-2 success: 1
24674
# check transactions-3 success: 1
24675
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24679
# check transactions-4 success: 1
24680
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24681
SELECT f_int1, f_int1, '', '', 'was inserted'
24682
FROM t0_template source_tab
24683
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24685
# check transactions-5 success: 1
24688
# check transactions-6 success: 1
24689
# INFO: Storage engine used for t1 seems to be transactional.
24692
# check transactions-7 success: 1
24693
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24695
SET @@session.sql_mode = 'traditional';
24696
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24697
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24698
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24699
'', '', 'was inserted' FROM t0_template
24700
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24701
ERROR 22012: Division by 0
24704
# check transactions-8 success: 1
24705
# INFO: Storage engine used for t1 seems to be able to revert
24706
# changes made by the failing statement.
24707
SET @@session.sql_mode = '';
24709
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24711
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24713
# check special-1 success: 1
24714
UPDATE t1 SET f_charbig = '';
24716
# check special-2 success: 1
24717
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24718
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24719
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24720
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24723
'just inserted' FROM t0_template
24724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24725
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24728
f_charbig = 'updated by trigger'
24729
WHERE f_int1 = new.f_int1;
24731
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24732
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24733
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24735
# check trigger-1 success: 1
24736
DROP TRIGGER trg_1;
24737
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24738
f_int2 = CAST(f_char1 AS SIGNED INT),
24739
f_charbig = 'just inserted'
24740
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24742
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24743
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24744
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24745
'just inserted' FROM t0_template
24746
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24747
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24749
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24750
f_charbig = 'updated by trigger'
24751
WHERE f_int1 = new.f_int1;
24753
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24754
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24755
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24757
# check trigger-2 success: 1
24758
DROP TRIGGER trg_1;
24759
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24760
f_int2 = CAST(f_char1 AS SIGNED INT),
24761
f_charbig = 'just inserted'
24762
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24764
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24765
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24766
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24767
'just inserted' FROM t0_template
24768
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24769
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24771
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24772
f_charbig = 'updated by trigger'
24773
WHERE f_int1 = new.f_int1;
24775
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24776
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24778
# check trigger-3 success: 1
24779
DROP TRIGGER trg_1;
24780
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24781
f_int2 = CAST(f_char1 AS SIGNED INT),
24782
f_charbig = 'just inserted'
24783
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24785
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24786
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24787
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24788
'just inserted' FROM t0_template
24789
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24790
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24792
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24793
f_charbig = 'updated by trigger'
24794
WHERE f_int1 = - old.f_int1;
24796
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24797
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24799
# check trigger-4 success: 1
24800
DROP TRIGGER trg_1;
24801
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24802
f_int2 = CAST(f_char1 AS SIGNED INT),
24803
f_charbig = 'just inserted'
24804
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24806
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24807
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24808
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24809
'just inserted' FROM t0_template
24810
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24811
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24813
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24814
f_charbig = 'updated by trigger'
24815
WHERE f_int1 = new.f_int1;
24817
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24818
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24820
# check trigger-5 success: 1
24821
DROP TRIGGER trg_1;
24822
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24823
f_int2 = CAST(f_char1 AS SIGNED INT),
24824
f_charbig = 'just inserted'
24825
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24827
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24828
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24829
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24830
'just inserted' FROM t0_template
24831
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24832
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24834
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24835
f_charbig = 'updated by trigger'
24836
WHERE f_int1 = - old.f_int1;
24838
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24839
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24841
# check trigger-6 success: 1
24842
DROP TRIGGER trg_1;
24843
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24844
f_int2 = CAST(f_char1 AS SIGNED INT),
24845
f_charbig = 'just inserted'
24846
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24848
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24849
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24850
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24851
'just inserted' FROM t0_template
24852
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24853
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24855
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24856
f_charbig = 'updated by trigger'
24857
WHERE f_int1 = - old.f_int1;
24860
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24862
# check trigger-7 success: 1
24863
DROP TRIGGER trg_1;
24864
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24865
f_int2 = CAST(f_char1 AS SIGNED INT),
24866
f_charbig = 'just inserted'
24867
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24869
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24870
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24871
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24872
'just inserted' FROM t0_template
24873
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24874
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24876
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24877
f_charbig = 'updated by trigger'
24878
WHERE f_int1 = - old.f_int1;
24881
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24883
# check trigger-8 success: 1
24884
DROP TRIGGER trg_1;
24885
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24886
f_int2 = CAST(f_char1 AS SIGNED INT),
24887
f_charbig = 'just inserted'
24888
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24890
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24892
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24893
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24895
SET new.f_int1 = old.f_int1 + @max_row,
24896
new.f_int2 = old.f_int2 - @max_row,
24897
new.f_charbig = '####updated per update trigger####';
24900
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24901
f_charbig = '####updated per update statement itself####';
24903
# check trigger-9 success: 1
24904
DROP TRIGGER trg_2;
24905
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24906
f_int2 = CAST(f_char1 AS SIGNED INT),
24907
f_charbig = CONCAT('===',f_char1,'===');
24908
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24910
SET new.f_int1 = new.f_int1 + @max_row,
24911
new.f_int2 = new.f_int2 - @max_row,
24912
new.f_charbig = '####updated per update trigger####';
24915
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24916
f_charbig = '####updated per update statement itself####';
24918
# check trigger-10 success: 1
24919
DROP TRIGGER trg_2;
24920
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24921
f_int2 = CAST(f_char1 AS SIGNED INT),
24922
f_charbig = CONCAT('===',f_char1,'===');
24923
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24925
SET new.f_int1 = @my_max1 + @counter,
24926
new.f_int2 = @my_min2 - @counter,
24927
new.f_charbig = '####updated per insert trigger####';
24928
SET @counter = @counter + 1;
24931
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24932
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24933
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24934
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24935
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24937
DROP TRIGGER trg_3;
24939
# check trigger-11 success: 1
24941
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24942
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24943
AND f_charbig = '####updated per insert trigger####';
24944
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24946
SET new.f_int1 = @my_max1 + @counter,
24947
new.f_int2 = @my_min2 - @counter,
24948
new.f_charbig = '####updated per insert trigger####';
24949
SET @counter = @counter + 1;
24952
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24953
INSERT INTO t1 (f_char1, f_char2, f_charbig)
24954
SELECT CAST(f_int1 AS CHAR),
24955
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24956
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24958
DROP TRIGGER trg_3;
24960
# check trigger-12 success: 1
24962
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24963
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24964
AND f_charbig = '####updated per insert trigger####';
24966
Table Op Msg_type Msg_text
24967
test.t1 analyze status OK
24968
CHECK TABLE t1 EXTENDED;
24969
Table Op Msg_type Msg_text
24970
test.t1 check status OK
24971
CHECKSUM TABLE t1 EXTENDED;
24973
test.t1 <some_value>
24975
Table Op Msg_type Msg_text
24976
test.t1 optimize status OK
24977
# check layout success: 1
24978
REPAIR TABLE t1 EXTENDED;
24979
Table Op Msg_type Msg_text
24980
test.t1 repair note The storage engine for the table doesn't support repair
24981
# check layout success: 1
24984
# check TRUNCATE success: 1
24985
# check layout success: 1
24986
# End usability test (inc/partition_check.inc)
24993
f_charbig VARCHAR(1000)
24996
PARTITION BY RANGE(f_int1)
24997
(PARTITION parta VALUES LESS THAN (0),
24998
PARTITION part_1 VALUES LESS THAN (5),
24999
PARTITION part_2 VALUES LESS THAN (10),
25000
PARTITION part_3 VALUES LESS THAN (10 + 5),
25001
PARTITION part_4 VALUES LESS THAN (20),
25002
PARTITION part_5 VALUES LESS THAN (2147483646));
25003
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25004
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25005
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25006
ALTER TABLE t1 REBUILD PARTITION part_1;
25007
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25008
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25009
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25010
# Start usability test (inc/partition_check.inc)
25012
SHOW CREATE TABLE t1;
25014
t1 CREATE TABLE `t1` (
25015
`f_int1` int(11) DEFAULT NULL,
25016
`f_int2` int(11) DEFAULT NULL,
25017
`f_char1` char(20) DEFAULT NULL,
25018
`f_char2` char(20) DEFAULT NULL,
25019
`f_charbig` varchar(1000) DEFAULT NULL
25020
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
25022
# check prerequisites-1 success: 1
25023
# check COUNT(*) success: 1
25024
# check MIN/MAX(f_int1) success: 1
25025
# check MIN/MAX(f_int2) success: 1
25026
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25027
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25028
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25029
WHERE f_int1 IN (2,3);
25030
# check prerequisites-3 success: 1
25031
DELETE FROM t1 WHERE f_charbig = 'delete me';
25032
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25033
# check read via f_int1 success: 1
25034
# check read via f_int2 success: 1
25036
# check multiple-1 success: 1
25037
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25039
# check multiple-2 success: 1
25040
INSERT INTO t1 SELECT * FROM t0_template
25041
WHERE MOD(f_int1,3) = 0;
25043
# check multiple-3 success: 1
25044
UPDATE t1 SET f_int1 = f_int1 + @max_row
25045
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25046
AND @max_row_div2 + @max_row_div4;
25048
# check multiple-4 success: 1
25050
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25051
AND @max_row_div2 + @max_row_div4 + @max_row;
25053
# check multiple-5 success: 1
25054
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25056
SET f_int1 = @cur_value , f_int2 = @cur_value,
25057
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25058
f_charbig = '#SINGLE#';
25060
# check single-1 success: 1
25061
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25063
SET f_int1 = @cur_value , f_int2 = @cur_value,
25064
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25065
f_charbig = '#SINGLE#';
25067
# check single-2 success: 1
25068
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25069
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25070
UPDATE t1 SET f_int1 = @cur_value2
25071
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25073
# check single-3 success: 1
25074
SET @cur_value1= -1;
25075
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25076
UPDATE t1 SET f_int1 = @cur_value1
25077
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25079
# check single-4 success: 1
25080
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25081
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25083
# check single-5 success: 1
25084
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25086
# check single-6 success: 1
25087
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25088
ERROR HY000: Table has no partition for value 2147483647
25089
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25090
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25091
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25092
f_charbig = '#NULL#';
25094
SET f_int1 = NULL , f_int2 = -@max_row,
25095
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25096
f_charbig = '#NULL#';
25097
# check null success: 1
25099
# check null-1 success: 1
25100
UPDATE t1 SET f_int1 = -@max_row
25101
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25102
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25104
# check null-2 success: 1
25105
UPDATE t1 SET f_int1 = NULL
25106
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25107
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25109
# check null-3 success: 1
25111
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25112
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25114
# check null-4 success: 1
25116
WHERE f_int1 = 0 AND f_int2 = 0
25117
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25118
AND f_charbig = '#NULL#';
25120
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25121
SELECT f_int1, f_int1, '', '', 'was inserted'
25122
FROM t0_template source_tab
25123
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25125
# check transactions-1 success: 1
25128
# check transactions-2 success: 1
25131
# check transactions-3 success: 1
25132
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25136
# check transactions-4 success: 1
25137
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25138
SELECT f_int1, f_int1, '', '', 'was inserted'
25139
FROM t0_template source_tab
25140
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25142
# check transactions-5 success: 1
25145
# check transactions-6 success: 1
25146
# INFO: Storage engine used for t1 seems to be transactional.
25149
# check transactions-7 success: 1
25150
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25152
SET @@session.sql_mode = 'traditional';
25153
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25154
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25155
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25156
'', '', 'was inserted' FROM t0_template
25157
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25158
ERROR 22012: Division by 0
25161
# check transactions-8 success: 1
25162
# INFO: Storage engine used for t1 seems to be able to revert
25163
# changes made by the failing statement.
25164
SET @@session.sql_mode = '';
25166
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25168
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25170
# check special-1 success: 1
25171
UPDATE t1 SET f_charbig = '';
25173
# check special-2 success: 1
25174
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25175
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25176
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25177
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25178
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25179
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25180
'just inserted' FROM t0_template
25181
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25182
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25184
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25185
f_charbig = 'updated by trigger'
25186
WHERE f_int1 = new.f_int1;
25188
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25189
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25190
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25192
# check trigger-1 success: 1
25193
DROP TRIGGER trg_1;
25194
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25195
f_int2 = CAST(f_char1 AS SIGNED INT),
25196
f_charbig = 'just inserted'
25197
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25199
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25200
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25201
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25202
'just inserted' FROM t0_template
25203
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25204
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25206
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25207
f_charbig = 'updated by trigger'
25208
WHERE f_int1 = new.f_int1;
25210
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25211
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25214
# check trigger-2 success: 1
25215
DROP TRIGGER trg_1;
25216
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25217
f_int2 = CAST(f_char1 AS SIGNED INT),
25218
f_charbig = 'just inserted'
25219
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25221
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25222
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25223
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25224
'just inserted' FROM t0_template
25225
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25226
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25228
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25229
f_charbig = 'updated by trigger'
25230
WHERE f_int1 = new.f_int1;
25232
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25233
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25235
# check trigger-3 success: 1
25236
DROP TRIGGER trg_1;
25237
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25238
f_int2 = CAST(f_char1 AS SIGNED INT),
25239
f_charbig = 'just inserted'
25240
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25242
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25243
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25244
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25245
'just inserted' FROM t0_template
25246
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25247
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25249
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25250
f_charbig = 'updated by trigger'
25251
WHERE f_int1 = - old.f_int1;
25253
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25254
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25256
# check trigger-4 success: 1
25257
DROP TRIGGER trg_1;
25258
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25259
f_int2 = CAST(f_char1 AS SIGNED INT),
25260
f_charbig = 'just inserted'
25261
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25263
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25264
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25265
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25266
'just inserted' FROM t0_template
25267
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25268
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25270
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25271
f_charbig = 'updated by trigger'
25272
WHERE f_int1 = new.f_int1;
25274
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25275
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25277
# check trigger-5 success: 1
25278
DROP TRIGGER trg_1;
25279
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25280
f_int2 = CAST(f_char1 AS SIGNED INT),
25281
f_charbig = 'just inserted'
25282
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25284
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25285
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25286
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25287
'just inserted' FROM t0_template
25288
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25289
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25291
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25292
f_charbig = 'updated by trigger'
25293
WHERE f_int1 = - old.f_int1;
25295
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25296
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25298
# check trigger-6 success: 1
25299
DROP TRIGGER trg_1;
25300
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25301
f_int2 = CAST(f_char1 AS SIGNED INT),
25302
f_charbig = 'just inserted'
25303
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25305
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25306
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25307
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25308
'just inserted' FROM t0_template
25309
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25310
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25312
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25313
f_charbig = 'updated by trigger'
25314
WHERE f_int1 = - old.f_int1;
25317
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25319
# check trigger-7 success: 1
25320
DROP TRIGGER trg_1;
25321
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25322
f_int2 = CAST(f_char1 AS SIGNED INT),
25323
f_charbig = 'just inserted'
25324
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25326
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25327
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25328
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25329
'just inserted' FROM t0_template
25330
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25331
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25333
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25334
f_charbig = 'updated by trigger'
25335
WHERE f_int1 = - old.f_int1;
25338
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25340
# check trigger-8 success: 1
25341
DROP TRIGGER trg_1;
25342
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25343
f_int2 = CAST(f_char1 AS SIGNED INT),
25344
f_charbig = 'just inserted'
25345
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25347
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25349
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25350
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25352
SET new.f_int1 = old.f_int1 + @max_row,
25353
new.f_int2 = old.f_int2 - @max_row,
25354
new.f_charbig = '####updated per update trigger####';
25357
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25358
f_charbig = '####updated per update statement itself####';
25360
# check trigger-9 success: 1
25361
DROP TRIGGER trg_2;
25362
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25363
f_int2 = CAST(f_char1 AS SIGNED INT),
25364
f_charbig = CONCAT('===',f_char1,'===');
25365
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25367
SET new.f_int1 = new.f_int1 + @max_row,
25368
new.f_int2 = new.f_int2 - @max_row,
25369
new.f_charbig = '####updated per update trigger####';
25372
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25373
f_charbig = '####updated per update statement itself####';
25375
# check trigger-10 success: 1
25376
DROP TRIGGER trg_2;
25377
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25378
f_int2 = CAST(f_char1 AS SIGNED INT),
25379
f_charbig = CONCAT('===',f_char1,'===');
25380
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25382
SET new.f_int1 = @my_max1 + @counter,
25383
new.f_int2 = @my_min2 - @counter,
25384
new.f_charbig = '####updated per insert trigger####';
25385
SET @counter = @counter + 1;
25388
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25389
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25390
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25391
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25392
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25394
DROP TRIGGER trg_3;
25396
# check trigger-11 success: 1
25398
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25399
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25400
AND f_charbig = '####updated per insert trigger####';
25401
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25403
SET new.f_int1 = @my_max1 + @counter,
25404
new.f_int2 = @my_min2 - @counter,
25405
new.f_charbig = '####updated per insert trigger####';
25406
SET @counter = @counter + 1;
25409
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25410
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25411
SELECT CAST(f_int1 AS CHAR),
25412
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25413
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25415
DROP TRIGGER trg_3;
25417
# check trigger-12 success: 1
25419
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25420
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25421
AND f_charbig = '####updated per insert trigger####';
25423
Table Op Msg_type Msg_text
25424
test.t1 analyze status OK
25425
CHECK TABLE t1 EXTENDED;
25426
Table Op Msg_type Msg_text
25427
test.t1 check status OK
25428
CHECKSUM TABLE t1 EXTENDED;
25430
test.t1 <some_value>
25432
Table Op Msg_type Msg_text
25433
test.t1 optimize status OK
25434
# check layout success: 1
25435
REPAIR TABLE t1 EXTENDED;
25436
Table Op Msg_type Msg_text
25437
test.t1 repair note The storage engine for the table doesn't support repair
25438
# check layout success: 1
25441
# check TRUNCATE success: 1
25442
# check layout success: 1
25443
# End usability test (inc/partition_check.inc)
25450
f_charbig VARCHAR(1000)
25453
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
25454
(PARTITION part_1 VALUES LESS THAN (0),
25455
PARTITION part_2 VALUES LESS THAN (5),
25456
PARTITION part_3 VALUES LESS THAN (10),
25457
PARTITION part_4 VALUES LESS THAN (2147483646));
25458
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25459
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25460
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25461
ALTER TABLE t1 REBUILD PARTITION part_1;
25462
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25463
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25464
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25465
# Start usability test (inc/partition_check.inc)
25467
SHOW CREATE TABLE t1;
25469
t1 CREATE TABLE `t1` (
25470
`f_int1` int(11) DEFAULT NULL,
25471
`f_int2` int(11) DEFAULT NULL,
25472
`f_char1` char(20) DEFAULT NULL,
25473
`f_char2` char(20) DEFAULT NULL,
25474
`f_charbig` varchar(1000) DEFAULT NULL
25475
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
25477
# check prerequisites-1 success: 1
25478
# check COUNT(*) success: 1
25479
# check MIN/MAX(f_int1) success: 1
25480
# check MIN/MAX(f_int2) success: 1
25481
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25482
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25483
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25484
WHERE f_int1 IN (2,3);
25485
# check prerequisites-3 success: 1
25486
DELETE FROM t1 WHERE f_charbig = 'delete me';
25487
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25488
# check read via f_int1 success: 1
25489
# check read via f_int2 success: 1
25491
# check multiple-1 success: 1
25492
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25494
# check multiple-2 success: 1
25495
INSERT INTO t1 SELECT * FROM t0_template
25496
WHERE MOD(f_int1,3) = 0;
25498
# check multiple-3 success: 1
25499
UPDATE t1 SET f_int1 = f_int1 + @max_row
25500
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25501
AND @max_row_div2 + @max_row_div4;
25503
# check multiple-4 success: 1
25505
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25506
AND @max_row_div2 + @max_row_div4 + @max_row;
25508
# check multiple-5 success: 1
25509
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25511
SET f_int1 = @cur_value , f_int2 = @cur_value,
25512
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25513
f_charbig = '#SINGLE#';
25515
# check single-1 success: 1
25516
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25518
SET f_int1 = @cur_value , f_int2 = @cur_value,
25519
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25520
f_charbig = '#SINGLE#';
25522
# check single-2 success: 1
25523
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25524
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25525
UPDATE t1 SET f_int1 = @cur_value2
25526
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25528
# check single-3 success: 1
25529
SET @cur_value1= -1;
25530
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25531
UPDATE t1 SET f_int1 = @cur_value1
25532
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25534
# check single-4 success: 1
25535
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25536
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25538
# check single-5 success: 1
25539
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25541
# check single-6 success: 1
25542
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25544
# check single-7 success: 1
25545
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25546
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25547
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25548
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25549
f_charbig = '#NULL#';
25551
SET f_int1 = NULL , f_int2 = -@max_row,
25552
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25553
f_charbig = '#NULL#';
25554
# check null success: 1
25556
# check null-1 success: 1
25557
UPDATE t1 SET f_int1 = -@max_row
25558
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25559
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25561
# check null-2 success: 1
25562
UPDATE t1 SET f_int1 = NULL
25563
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25564
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25566
# check null-3 success: 1
25568
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25569
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25571
# check null-4 success: 1
25573
WHERE f_int1 = 0 AND f_int2 = 0
25574
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25575
AND f_charbig = '#NULL#';
25577
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25578
SELECT f_int1, f_int1, '', '', 'was inserted'
25579
FROM t0_template source_tab
25580
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25582
# check transactions-1 success: 1
25585
# check transactions-2 success: 1
25588
# check transactions-3 success: 1
25589
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25593
# check transactions-4 success: 1
25594
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25595
SELECT f_int1, f_int1, '', '', 'was inserted'
25596
FROM t0_template source_tab
25597
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25599
# check transactions-5 success: 1
25602
# check transactions-6 success: 1
25603
# INFO: Storage engine used for t1 seems to be transactional.
25606
# check transactions-7 success: 1
25607
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25609
SET @@session.sql_mode = 'traditional';
25610
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25611
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25612
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25613
'', '', 'was inserted' FROM t0_template
25614
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25615
ERROR 22012: Division by 0
25618
# check transactions-8 success: 1
25619
# INFO: Storage engine used for t1 seems to be able to revert
25620
# changes made by the failing statement.
25621
SET @@session.sql_mode = '';
25623
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25625
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25627
# check special-1 success: 1
25628
UPDATE t1 SET f_charbig = '';
25630
# check special-2 success: 1
25631
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25632
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25633
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25634
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25635
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25636
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25637
'just inserted' FROM t0_template
25638
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25639
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25641
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25642
f_charbig = 'updated by trigger'
25643
WHERE f_int1 = new.f_int1;
25645
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25646
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25647
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25649
# check trigger-1 success: 1
25650
DROP TRIGGER trg_1;
25651
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25652
f_int2 = CAST(f_char1 AS SIGNED INT),
25653
f_charbig = 'just inserted'
25654
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25656
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25657
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25658
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25659
'just inserted' FROM t0_template
25660
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25661
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25663
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25664
f_charbig = 'updated by trigger'
25665
WHERE f_int1 = new.f_int1;
25667
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25668
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25669
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25671
# check trigger-2 success: 1
25672
DROP TRIGGER trg_1;
25673
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25674
f_int2 = CAST(f_char1 AS SIGNED INT),
25675
f_charbig = 'just inserted'
25676
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25678
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25679
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25680
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25681
'just inserted' FROM t0_template
25682
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25683
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25685
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25686
f_charbig = 'updated by trigger'
25687
WHERE f_int1 = new.f_int1;
25689
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25690
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25692
# check trigger-3 success: 1
25693
DROP TRIGGER trg_1;
25694
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25695
f_int2 = CAST(f_char1 AS SIGNED INT),
25696
f_charbig = 'just inserted'
25697
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25699
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25702
'just inserted' FROM t0_template
25703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25704
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25707
f_charbig = 'updated by trigger'
25708
WHERE f_int1 = - old.f_int1;
25710
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25711
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25713
# check trigger-4 success: 1
25714
DROP TRIGGER trg_1;
25715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25716
f_int2 = CAST(f_char1 AS SIGNED INT),
25717
f_charbig = 'just inserted'
25718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25723
'just inserted' FROM t0_template
25724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25725
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25728
f_charbig = 'updated by trigger'
25729
WHERE f_int1 = new.f_int1;
25731
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25734
# check trigger-5 success: 1
25735
DROP TRIGGER trg_1;
25736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25737
f_int2 = CAST(f_char1 AS SIGNED INT),
25738
f_charbig = 'just inserted'
25739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25742
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25743
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25744
'just inserted' FROM t0_template
25745
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25746
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25748
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25749
f_charbig = 'updated by trigger'
25750
WHERE f_int1 = - old.f_int1;
25752
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25753
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25755
# check trigger-6 success: 1
25756
DROP TRIGGER trg_1;
25757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25758
f_int2 = CAST(f_char1 AS SIGNED INT),
25759
f_charbig = 'just inserted'
25760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25765
'just inserted' FROM t0_template
25766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25767
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25770
f_charbig = 'updated by trigger'
25771
WHERE f_int1 = - old.f_int1;
25774
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25776
# check trigger-7 success: 1
25777
DROP TRIGGER trg_1;
25778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25779
f_int2 = CAST(f_char1 AS SIGNED INT),
25780
f_charbig = 'just inserted'
25781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25783
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25785
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25786
'just inserted' FROM t0_template
25787
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25788
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25790
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25791
f_charbig = 'updated by trigger'
25792
WHERE f_int1 = - old.f_int1;
25795
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25797
# check trigger-8 success: 1
25798
DROP TRIGGER trg_1;
25799
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25800
f_int2 = CAST(f_char1 AS SIGNED INT),
25801
f_charbig = 'just inserted'
25802
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25804
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25806
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25807
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25809
SET new.f_int1 = old.f_int1 + @max_row,
25810
new.f_int2 = old.f_int2 - @max_row,
25811
new.f_charbig = '####updated per update trigger####';
25814
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25815
f_charbig = '####updated per update statement itself####';
25817
# check trigger-9 success: 1
25818
DROP TRIGGER trg_2;
25819
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25820
f_int2 = CAST(f_char1 AS SIGNED INT),
25821
f_charbig = CONCAT('===',f_char1,'===');
25822
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25824
SET new.f_int1 = new.f_int1 + @max_row,
25825
new.f_int2 = new.f_int2 - @max_row,
25826
new.f_charbig = '####updated per update trigger####';
25829
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25830
f_charbig = '####updated per update statement itself####';
25832
# check trigger-10 success: 1
25833
DROP TRIGGER trg_2;
25834
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25835
f_int2 = CAST(f_char1 AS SIGNED INT),
25836
f_charbig = CONCAT('===',f_char1,'===');
25837
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25839
SET new.f_int1 = @my_max1 + @counter,
25840
new.f_int2 = @my_min2 - @counter,
25841
new.f_charbig = '####updated per insert trigger####';
25842
SET @counter = @counter + 1;
25845
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25846
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25847
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25848
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25849
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25851
DROP TRIGGER trg_3;
25853
# check trigger-11 success: 1
25855
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25856
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25857
AND f_charbig = '####updated per insert trigger####';
25858
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25860
SET new.f_int1 = @my_max1 + @counter,
25861
new.f_int2 = @my_min2 - @counter,
25862
new.f_charbig = '####updated per insert trigger####';
25863
SET @counter = @counter + 1;
25866
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25867
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25868
SELECT CAST(f_int1 AS CHAR),
25869
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25870
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25872
DROP TRIGGER trg_3;
25874
# check trigger-12 success: 1
25876
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25877
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25878
AND f_charbig = '####updated per insert trigger####';
25880
Table Op Msg_type Msg_text
25881
test.t1 analyze status OK
25882
CHECK TABLE t1 EXTENDED;
25883
Table Op Msg_type Msg_text
25884
test.t1 check status OK
25885
CHECKSUM TABLE t1 EXTENDED;
25887
test.t1 <some_value>
25889
Table Op Msg_type Msg_text
25890
test.t1 optimize status OK
25891
# check layout success: 1
25892
REPAIR TABLE t1 EXTENDED;
25893
Table Op Msg_type Msg_text
25894
test.t1 repair note The storage engine for the table doesn't support repair
25895
# check layout success: 1
25898
# check TRUNCATE success: 1
25899
# check layout success: 1
25900
# End usability test (inc/partition_check.inc)
25907
f_charbig VARCHAR(1000)
25910
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
25911
(PARTITION part_1 VALUES LESS THAN (0)
25912
(SUBPARTITION subpart11, SUBPARTITION subpart12),
25913
PARTITION part_2 VALUES LESS THAN (5)
25914
(SUBPARTITION subpart21, SUBPARTITION subpart22),
25915
PARTITION part_3 VALUES LESS THAN (10)
25916
(SUBPARTITION subpart31, SUBPARTITION subpart32),
25917
PARTITION part_4 VALUES LESS THAN (2147483646)
25918
(SUBPARTITION subpart41, SUBPARTITION subpart42));
25919
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25920
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25921
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25922
ALTER TABLE t1 REBUILD PARTITION part_1;
25923
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25924
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25925
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25926
# Start usability test (inc/partition_check.inc)
25928
SHOW CREATE TABLE t1;
25930
t1 CREATE TABLE `t1` (
25931
`f_int1` int(11) DEFAULT NULL,
25932
`f_int2` int(11) DEFAULT NULL,
25933
`f_char1` char(20) DEFAULT NULL,
25934
`f_char2` char(20) DEFAULT NULL,
25935
`f_charbig` varchar(1000) DEFAULT NULL
25936
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
25938
# check prerequisites-1 success: 1
25939
# check COUNT(*) success: 1
25940
# check MIN/MAX(f_int1) success: 1
25941
# check MIN/MAX(f_int2) success: 1
25942
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25943
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25944
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25945
WHERE f_int1 IN (2,3);
25946
# check prerequisites-3 success: 1
25947
DELETE FROM t1 WHERE f_charbig = 'delete me';
25948
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25949
# check read via f_int1 success: 1
25950
# check read via f_int2 success: 1
25952
# check multiple-1 success: 1
25953
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25955
# check multiple-2 success: 1
25956
INSERT INTO t1 SELECT * FROM t0_template
25957
WHERE MOD(f_int1,3) = 0;
25959
# check multiple-3 success: 1
25960
UPDATE t1 SET f_int1 = f_int1 + @max_row
25961
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25962
AND @max_row_div2 + @max_row_div4;
25964
# check multiple-4 success: 1
25966
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25967
AND @max_row_div2 + @max_row_div4 + @max_row;
25969
# check multiple-5 success: 1
25970
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25972
SET f_int1 = @cur_value , f_int2 = @cur_value,
25973
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25974
f_charbig = '#SINGLE#';
25976
# check single-1 success: 1
25977
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25979
SET f_int1 = @cur_value , f_int2 = @cur_value,
25980
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25981
f_charbig = '#SINGLE#';
25983
# check single-2 success: 1
25984
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25985
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25986
UPDATE t1 SET f_int1 = @cur_value2
25987
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25989
# check single-3 success: 1
25990
SET @cur_value1= -1;
25991
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25992
UPDATE t1 SET f_int1 = @cur_value1
25993
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25995
# check single-4 success: 1
25996
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25997
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25999
# check single-5 success: 1
26000
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26002
# check single-6 success: 1
26003
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26004
ERROR HY000: Table has no partition for value 2147483647
26005
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26006
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26007
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26008
f_charbig = '#NULL#';
26010
SET f_int1 = NULL , f_int2 = -@max_row,
26011
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26012
f_charbig = '#NULL#';
26013
# check null success: 1
26015
# check null-1 success: 1
26016
UPDATE t1 SET f_int1 = -@max_row
26017
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26018
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26020
# check null-2 success: 1
26021
UPDATE t1 SET f_int1 = NULL
26022
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26023
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26025
# check null-3 success: 1
26027
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26028
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26030
# check null-4 success: 1
26032
WHERE f_int1 = 0 AND f_int2 = 0
26033
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26034
AND f_charbig = '#NULL#';
26036
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26037
SELECT f_int1, f_int1, '', '', 'was inserted'
26038
FROM t0_template source_tab
26039
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26041
# check transactions-1 success: 1
26044
# check transactions-2 success: 1
26047
# check transactions-3 success: 1
26048
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26052
# check transactions-4 success: 1
26053
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26054
SELECT f_int1, f_int1, '', '', 'was inserted'
26055
FROM t0_template source_tab
26056
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26058
# check transactions-5 success: 1
26061
# check transactions-6 success: 1
26062
# INFO: Storage engine used for t1 seems to be transactional.
26065
# check transactions-7 success: 1
26066
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26068
SET @@session.sql_mode = 'traditional';
26069
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26070
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26071
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26072
'', '', 'was inserted' FROM t0_template
26073
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26074
ERROR 22012: Division by 0
26077
# check transactions-8 success: 1
26078
# INFO: Storage engine used for t1 seems to be able to revert
26079
# changes made by the failing statement.
26080
SET @@session.sql_mode = '';
26082
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26084
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26086
# check special-1 success: 1
26087
UPDATE t1 SET f_charbig = '';
26089
# check special-2 success: 1
26090
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26091
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26092
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26093
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26094
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26095
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26096
'just inserted' FROM t0_template
26097
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26098
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26100
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26101
f_charbig = 'updated by trigger'
26102
WHERE f_int1 = new.f_int1;
26104
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26105
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26106
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26108
# check trigger-1 success: 1
26109
DROP TRIGGER trg_1;
26110
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26111
f_int2 = CAST(f_char1 AS SIGNED INT),
26112
f_charbig = 'just inserted'
26113
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26115
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26116
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26117
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26118
'just inserted' FROM t0_template
26119
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26120
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26122
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26123
f_charbig = 'updated by trigger'
26124
WHERE f_int1 = new.f_int1;
26126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26127
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26128
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26130
# check trigger-2 success: 1
26131
DROP TRIGGER trg_1;
26132
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26133
f_int2 = CAST(f_char1 AS SIGNED INT),
26134
f_charbig = 'just inserted'
26135
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26137
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26138
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26139
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26140
'just inserted' FROM t0_template
26141
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26142
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26144
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26145
f_charbig = 'updated by trigger'
26146
WHERE f_int1 = new.f_int1;
26148
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26149
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26151
# check trigger-3 success: 1
26152
DROP TRIGGER trg_1;
26153
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26154
f_int2 = CAST(f_char1 AS SIGNED INT),
26155
f_charbig = 'just inserted'
26156
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26158
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26159
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26160
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26161
'just inserted' FROM t0_template
26162
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26163
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26165
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26166
f_charbig = 'updated by trigger'
26167
WHERE f_int1 = - old.f_int1;
26169
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26170
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26172
# check trigger-4 success: 1
26173
DROP TRIGGER trg_1;
26174
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26175
f_int2 = CAST(f_char1 AS SIGNED INT),
26176
f_charbig = 'just inserted'
26177
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26179
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26180
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26181
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26182
'just inserted' FROM t0_template
26183
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26184
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26186
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26187
f_charbig = 'updated by trigger'
26188
WHERE f_int1 = new.f_int1;
26190
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26191
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26193
# check trigger-5 success: 1
26194
DROP TRIGGER trg_1;
26195
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26196
f_int2 = CAST(f_char1 AS SIGNED INT),
26197
f_charbig = 'just inserted'
26198
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26200
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26201
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26202
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26203
'just inserted' FROM t0_template
26204
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26205
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26207
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26208
f_charbig = 'updated by trigger'
26209
WHERE f_int1 = - old.f_int1;
26211
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26212
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26214
# check trigger-6 success: 1
26215
DROP TRIGGER trg_1;
26216
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26217
f_int2 = CAST(f_char1 AS SIGNED INT),
26218
f_charbig = 'just inserted'
26219
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26221
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26222
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26223
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26224
'just inserted' FROM t0_template
26225
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26226
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26228
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26229
f_charbig = 'updated by trigger'
26230
WHERE f_int1 = - old.f_int1;
26233
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26235
# check trigger-7 success: 1
26236
DROP TRIGGER trg_1;
26237
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26238
f_int2 = CAST(f_char1 AS SIGNED INT),
26239
f_charbig = 'just inserted'
26240
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26242
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26243
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26244
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26245
'just inserted' FROM t0_template
26246
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26247
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26249
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26250
f_charbig = 'updated by trigger'
26251
WHERE f_int1 = - old.f_int1;
26254
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26256
# check trigger-8 success: 1
26257
DROP TRIGGER trg_1;
26258
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26259
f_int2 = CAST(f_char1 AS SIGNED INT),
26260
f_charbig = 'just inserted'
26261
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26263
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26265
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26266
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26268
SET new.f_int1 = old.f_int1 + @max_row,
26269
new.f_int2 = old.f_int2 - @max_row,
26270
new.f_charbig = '####updated per update trigger####';
26273
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26274
f_charbig = '####updated per update statement itself####';
26276
# check trigger-9 success: 1
26277
DROP TRIGGER trg_2;
26278
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26279
f_int2 = CAST(f_char1 AS SIGNED INT),
26280
f_charbig = CONCAT('===',f_char1,'===');
26281
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26283
SET new.f_int1 = new.f_int1 + @max_row,
26284
new.f_int2 = new.f_int2 - @max_row,
26285
new.f_charbig = '####updated per update trigger####';
26288
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26289
f_charbig = '####updated per update statement itself####';
26291
# check trigger-10 success: 1
26292
DROP TRIGGER trg_2;
26293
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26294
f_int2 = CAST(f_char1 AS SIGNED INT),
26295
f_charbig = CONCAT('===',f_char1,'===');
26296
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26298
SET new.f_int1 = @my_max1 + @counter,
26299
new.f_int2 = @my_min2 - @counter,
26300
new.f_charbig = '####updated per insert trigger####';
26301
SET @counter = @counter + 1;
26304
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26305
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26306
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26307
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26308
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26310
DROP TRIGGER trg_3;
26312
# check trigger-11 success: 1
26314
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26315
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26316
AND f_charbig = '####updated per insert trigger####';
26317
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26319
SET new.f_int1 = @my_max1 + @counter,
26320
new.f_int2 = @my_min2 - @counter,
26321
new.f_charbig = '####updated per insert trigger####';
26322
SET @counter = @counter + 1;
26325
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26326
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26327
SELECT CAST(f_int1 AS CHAR),
26328
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26329
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26331
DROP TRIGGER trg_3;
26333
# check trigger-12 success: 1
26335
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26336
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26337
AND f_charbig = '####updated per insert trigger####';
26339
Table Op Msg_type Msg_text
26340
test.t1 analyze status OK
26341
CHECK TABLE t1 EXTENDED;
26342
Table Op Msg_type Msg_text
26343
test.t1 check status OK
26344
CHECKSUM TABLE t1 EXTENDED;
26346
test.t1 <some_value>
26348
Table Op Msg_type Msg_text
26349
test.t1 optimize status OK
26350
# check layout success: 1
26351
REPAIR TABLE t1 EXTENDED;
26352
Table Op Msg_type Msg_text
26353
test.t1 repair note The storage engine for the table doesn't support repair
26354
# check layout success: 1
26357
# check TRUNCATE success: 1
26358
# check layout success: 1
26359
# End usability test (inc/partition_check.inc)
26366
f_charbig VARCHAR(1000)
26369
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
26370
(PARTITION part_1 VALUES IN (0)
26371
(SUBPARTITION sp11, SUBPARTITION sp12),
26372
PARTITION part_2 VALUES IN (1)
26373
(SUBPARTITION sp21, SUBPARTITION sp22),
26374
PARTITION part_3 VALUES IN (2)
26375
(SUBPARTITION sp31, SUBPARTITION sp32),
26376
PARTITION part_4 VALUES IN (NULL)
26377
(SUBPARTITION sp41, SUBPARTITION sp42));
26378
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26379
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26380
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26381
ALTER TABLE t1 REBUILD PARTITION part_1;
26382
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26383
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26384
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26385
# Start usability test (inc/partition_check.inc)
26387
SHOW CREATE TABLE t1;
26389
t1 CREATE TABLE `t1` (
26390
`f_int1` int(11) DEFAULT NULL,
26391
`f_int2` int(11) DEFAULT NULL,
26392
`f_char1` char(20) DEFAULT NULL,
26393
`f_char2` char(20) DEFAULT NULL,
26394
`f_charbig` varchar(1000) DEFAULT NULL
26395
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
26397
# check prerequisites-1 success: 1
26398
# check COUNT(*) success: 1
26399
# check MIN/MAX(f_int1) success: 1
26400
# check MIN/MAX(f_int2) success: 1
26401
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26402
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26403
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26404
WHERE f_int1 IN (2,3);
26405
# check prerequisites-3 success: 1
26406
DELETE FROM t1 WHERE f_charbig = 'delete me';
26407
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26408
# check read via f_int1 success: 1
26409
# check read via f_int2 success: 1
26411
# check multiple-1 success: 1
26412
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26414
# check multiple-2 success: 1
26415
INSERT INTO t1 SELECT * FROM t0_template
26416
WHERE MOD(f_int1,3) = 0;
26418
# check multiple-3 success: 1
26419
UPDATE t1 SET f_int1 = f_int1 + @max_row
26420
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26421
AND @max_row_div2 + @max_row_div4;
26423
# check multiple-4 success: 1
26425
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26426
AND @max_row_div2 + @max_row_div4 + @max_row;
26428
# check multiple-5 success: 1
26429
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26431
SET f_int1 = @cur_value , f_int2 = @cur_value,
26432
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26433
f_charbig = '#SINGLE#';
26435
# check single-1 success: 1
26436
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26438
SET f_int1 = @cur_value , f_int2 = @cur_value,
26439
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26440
f_charbig = '#SINGLE#';
26442
# check single-2 success: 1
26443
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26444
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26445
UPDATE t1 SET f_int1 = @cur_value2
26446
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26448
# check single-3 success: 1
26449
SET @cur_value1= -1;
26450
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26451
UPDATE t1 SET f_int1 = @cur_value1
26452
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26454
# check single-4 success: 1
26455
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26456
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26458
# check single-5 success: 1
26459
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26461
# check single-6 success: 1
26462
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26464
# check single-7 success: 1
26465
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
26466
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26467
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26468
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26469
f_charbig = '#NULL#';
26471
SET f_int1 = NULL , f_int2 = -@max_row,
26472
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26473
f_charbig = '#NULL#';
26474
# check null success: 1
26476
# check null-1 success: 1
26477
UPDATE t1 SET f_int1 = -@max_row
26478
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26479
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26481
# check null-2 success: 1
26482
UPDATE t1 SET f_int1 = NULL
26483
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26484
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26486
# check null-3 success: 1
26488
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26489
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26491
# check null-4 success: 1
26493
WHERE f_int1 = 0 AND f_int2 = 0
26494
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26495
AND f_charbig = '#NULL#';
26497
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26498
SELECT f_int1, f_int1, '', '', 'was inserted'
26499
FROM t0_template source_tab
26500
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26502
# check transactions-1 success: 1
26505
# check transactions-2 success: 1
26508
# check transactions-3 success: 1
26509
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26513
# check transactions-4 success: 1
26514
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26515
SELECT f_int1, f_int1, '', '', 'was inserted'
26516
FROM t0_template source_tab
26517
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26519
# check transactions-5 success: 1
26522
# check transactions-6 success: 1
26523
# INFO: Storage engine used for t1 seems to be transactional.
26526
# check transactions-7 success: 1
26527
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26529
SET @@session.sql_mode = 'traditional';
26530
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26531
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26532
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26533
'', '', 'was inserted' FROM t0_template
26534
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26535
ERROR 22012: Division by 0
26538
# check transactions-8 success: 1
26539
# INFO: Storage engine used for t1 seems to be able to revert
26540
# changes made by the failing statement.
26541
SET @@session.sql_mode = '';
26543
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26545
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26547
# check special-1 success: 1
26548
UPDATE t1 SET f_charbig = '';
26550
# check special-2 success: 1
26551
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26552
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26553
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26554
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26555
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26556
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26557
'just inserted' FROM t0_template
26558
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26559
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26561
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26562
f_charbig = 'updated by trigger'
26563
WHERE f_int1 = new.f_int1;
26565
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26566
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26567
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26569
# check trigger-1 success: 1
26570
DROP TRIGGER trg_1;
26571
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26572
f_int2 = CAST(f_char1 AS SIGNED INT),
26573
f_charbig = 'just inserted'
26574
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26576
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26577
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26578
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26579
'just inserted' FROM t0_template
26580
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26581
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26583
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26584
f_charbig = 'updated by trigger'
26585
WHERE f_int1 = new.f_int1;
26587
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26588
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26591
# check trigger-2 success: 1
26592
DROP TRIGGER trg_1;
26593
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26594
f_int2 = CAST(f_char1 AS SIGNED INT),
26595
f_charbig = 'just inserted'
26596
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26598
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26599
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26600
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26601
'just inserted' FROM t0_template
26602
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26603
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26605
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26606
f_charbig = 'updated by trigger'
26607
WHERE f_int1 = new.f_int1;
26609
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26610
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26612
# check trigger-3 success: 1
26613
DROP TRIGGER trg_1;
26614
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26615
f_int2 = CAST(f_char1 AS SIGNED INT),
26616
f_charbig = 'just inserted'
26617
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26619
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26620
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26621
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26622
'just inserted' FROM t0_template
26623
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26624
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26626
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26627
f_charbig = 'updated by trigger'
26628
WHERE f_int1 = - old.f_int1;
26630
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26631
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26633
# check trigger-4 success: 1
26634
DROP TRIGGER trg_1;
26635
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26636
f_int2 = CAST(f_char1 AS SIGNED INT),
26637
f_charbig = 'just inserted'
26638
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26640
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26641
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26642
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26643
'just inserted' FROM t0_template
26644
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26645
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26647
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26648
f_charbig = 'updated by trigger'
26649
WHERE f_int1 = new.f_int1;
26651
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26652
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26654
# check trigger-5 success: 1
26655
DROP TRIGGER trg_1;
26656
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26657
f_int2 = CAST(f_char1 AS SIGNED INT),
26658
f_charbig = 'just inserted'
26659
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26661
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26662
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26663
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26664
'just inserted' FROM t0_template
26665
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26666
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26668
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26669
f_charbig = 'updated by trigger'
26670
WHERE f_int1 = - old.f_int1;
26672
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26673
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26675
# check trigger-6 success: 1
26676
DROP TRIGGER trg_1;
26677
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26678
f_int2 = CAST(f_char1 AS SIGNED INT),
26679
f_charbig = 'just inserted'
26680
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26682
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26683
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26684
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26685
'just inserted' FROM t0_template
26686
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26687
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26689
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26690
f_charbig = 'updated by trigger'
26691
WHERE f_int1 = - old.f_int1;
26694
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26696
# check trigger-7 success: 1
26697
DROP TRIGGER trg_1;
26698
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26699
f_int2 = CAST(f_char1 AS SIGNED INT),
26700
f_charbig = 'just inserted'
26701
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26703
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26704
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26705
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26706
'just inserted' FROM t0_template
26707
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26708
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26710
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26711
f_charbig = 'updated by trigger'
26712
WHERE f_int1 = - old.f_int1;
26715
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26717
# check trigger-8 success: 1
26718
DROP TRIGGER trg_1;
26719
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26720
f_int2 = CAST(f_char1 AS SIGNED INT),
26721
f_charbig = 'just inserted'
26722
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26724
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26726
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26727
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26729
SET new.f_int1 = old.f_int1 + @max_row,
26730
new.f_int2 = old.f_int2 - @max_row,
26731
new.f_charbig = '####updated per update trigger####';
26734
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26735
f_charbig = '####updated per update statement itself####';
26737
# check trigger-9 success: 1
26738
DROP TRIGGER trg_2;
26739
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26740
f_int2 = CAST(f_char1 AS SIGNED INT),
26741
f_charbig = CONCAT('===',f_char1,'===');
26742
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26744
SET new.f_int1 = new.f_int1 + @max_row,
26745
new.f_int2 = new.f_int2 - @max_row,
26746
new.f_charbig = '####updated per update trigger####';
26749
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26750
f_charbig = '####updated per update statement itself####';
26752
# check trigger-10 success: 1
26753
DROP TRIGGER trg_2;
26754
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26755
f_int2 = CAST(f_char1 AS SIGNED INT),
26756
f_charbig = CONCAT('===',f_char1,'===');
26757
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26759
SET new.f_int1 = @my_max1 + @counter,
26760
new.f_int2 = @my_min2 - @counter,
26761
new.f_charbig = '####updated per insert trigger####';
26762
SET @counter = @counter + 1;
26765
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26766
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26767
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26768
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26769
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26771
DROP TRIGGER trg_3;
26773
# check trigger-11 success: 1
26775
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26776
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26777
AND f_charbig = '####updated per insert trigger####';
26778
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26780
SET new.f_int1 = @my_max1 + @counter,
26781
new.f_int2 = @my_min2 - @counter,
26782
new.f_charbig = '####updated per insert trigger####';
26783
SET @counter = @counter + 1;
26786
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26787
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26788
SELECT CAST(f_int1 AS CHAR),
26789
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26790
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26792
DROP TRIGGER trg_3;
26794
# check trigger-12 success: 1
26796
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26797
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26798
AND f_charbig = '####updated per insert trigger####';
26800
Table Op Msg_type Msg_text
26801
test.t1 analyze status OK
26802
CHECK TABLE t1 EXTENDED;
26803
Table Op Msg_type Msg_text
26804
test.t1 check status OK
26805
CHECKSUM TABLE t1 EXTENDED;
26807
test.t1 <some_value>
26809
Table Op Msg_type Msg_text
26810
test.t1 optimize status OK
26811
# check layout success: 1
26812
REPAIR TABLE t1 EXTENDED;
26813
Table Op Msg_type Msg_text
26814
test.t1 repair note The storage engine for the table doesn't support repair
26815
# check layout success: 1
26818
# check TRUNCATE success: 1
26819
# check layout success: 1
26820
# End usability test (inc/partition_check.inc)
26827
f_charbig VARCHAR(1000)
26830
PARTITION BY LIST(ABS(MOD(f_int1,2)))
26831
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
26832
(PARTITION part_1 VALUES IN (0),
26833
PARTITION part_2 VALUES IN (1),
26834
PARTITION part_3 VALUES IN (NULL));
26835
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26836
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26837
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26838
ALTER TABLE t1 REBUILD PARTITION part_1;
26839
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26840
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26841
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26842
# Start usability test (inc/partition_check.inc)
26844
SHOW CREATE TABLE t1;
26846
t1 CREATE TABLE `t1` (
26847
`f_int1` int(11) DEFAULT NULL,
26848
`f_int2` int(11) DEFAULT NULL,
26849
`f_char1` char(20) DEFAULT NULL,
26850
`f_char2` char(20) DEFAULT NULL,
26851
`f_charbig` varchar(1000) DEFAULT NULL
26852
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */
26854
# check prerequisites-1 success: 1
26855
# check COUNT(*) success: 1
26856
# check MIN/MAX(f_int1) success: 1
26857
# check MIN/MAX(f_int2) success: 1
26858
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26859
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26860
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26861
WHERE f_int1 IN (2,3);
26862
# check prerequisites-3 success: 1
26863
DELETE FROM t1 WHERE f_charbig = 'delete me';
26864
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26865
# check read via f_int1 success: 1
26866
# check read via f_int2 success: 1
26868
# check multiple-1 success: 1
26869
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26871
# check multiple-2 success: 1
26872
INSERT INTO t1 SELECT * FROM t0_template
26873
WHERE MOD(f_int1,3) = 0;
26875
# check multiple-3 success: 1
26876
UPDATE t1 SET f_int1 = f_int1 + @max_row
26877
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26878
AND @max_row_div2 + @max_row_div4;
26880
# check multiple-4 success: 1
26882
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26883
AND @max_row_div2 + @max_row_div4 + @max_row;
26885
# check multiple-5 success: 1
26886
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26888
SET f_int1 = @cur_value , f_int2 = @cur_value,
26889
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26890
f_charbig = '#SINGLE#';
26892
# check single-1 success: 1
26893
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26895
SET f_int1 = @cur_value , f_int2 = @cur_value,
26896
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26897
f_charbig = '#SINGLE#';
26899
# check single-2 success: 1
26900
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26901
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26902
UPDATE t1 SET f_int1 = @cur_value2
26903
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26905
# check single-3 success: 1
26906
SET @cur_value1= -1;
26907
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26908
UPDATE t1 SET f_int1 = @cur_value1
26909
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26911
# check single-4 success: 1
26912
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26913
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26915
# check single-5 success: 1
26916
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26918
# check single-6 success: 1
26919
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26921
# check single-7 success: 1
26922
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
26923
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26924
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26925
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26926
f_charbig = '#NULL#';
26928
SET f_int1 = NULL , f_int2 = -@max_row,
26929
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26930
f_charbig = '#NULL#';
26931
# check null success: 1
26933
# check null-1 success: 1
26934
UPDATE t1 SET f_int1 = -@max_row
26935
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26936
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26938
# check null-2 success: 1
26939
UPDATE t1 SET f_int1 = NULL
26940
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26941
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26943
# check null-3 success: 1
26945
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26946
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26948
# check null-4 success: 1
26950
WHERE f_int1 = 0 AND f_int2 = 0
26951
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26952
AND f_charbig = '#NULL#';
26954
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26955
SELECT f_int1, f_int1, '', '', 'was inserted'
26956
FROM t0_template source_tab
26957
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26959
# check transactions-1 success: 1
26962
# check transactions-2 success: 1
26965
# check transactions-3 success: 1
26966
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26970
# check transactions-4 success: 1
26971
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26972
SELECT f_int1, f_int1, '', '', 'was inserted'
26973
FROM t0_template source_tab
26974
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26976
# check transactions-5 success: 1
26979
# check transactions-6 success: 1
26980
# INFO: Storage engine used for t1 seems to be transactional.
26983
# check transactions-7 success: 1
26984
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26986
SET @@session.sql_mode = 'traditional';
26987
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26988
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26989
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26990
'', '', 'was inserted' FROM t0_template
26991
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26992
ERROR 22012: Division by 0
26995
# check transactions-8 success: 1
26996
# INFO: Storage engine used for t1 seems to be able to revert
26997
# changes made by the failing statement.
26998
SET @@session.sql_mode = '';
27000
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27002
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27004
# check special-1 success: 1
27005
UPDATE t1 SET f_charbig = '';
27007
# check special-2 success: 1
27008
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27009
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27010
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27011
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27012
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27013
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27014
'just inserted' FROM t0_template
27015
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27016
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27018
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27019
f_charbig = 'updated by trigger'
27020
WHERE f_int1 = new.f_int1;
27022
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27023
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27024
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27026
# check trigger-1 success: 1
27027
DROP TRIGGER trg_1;
27028
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27029
f_int2 = CAST(f_char1 AS SIGNED INT),
27030
f_charbig = 'just inserted'
27031
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27033
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27034
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27035
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27036
'just inserted' FROM t0_template
27037
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27038
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27040
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27041
f_charbig = 'updated by trigger'
27042
WHERE f_int1 = new.f_int1;
27044
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27045
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27046
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27048
# check trigger-2 success: 1
27049
DROP TRIGGER trg_1;
27050
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27051
f_int2 = CAST(f_char1 AS SIGNED INT),
27052
f_charbig = 'just inserted'
27053
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27055
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27056
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27057
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27058
'just inserted' FROM t0_template
27059
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27060
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27062
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27063
f_charbig = 'updated by trigger'
27064
WHERE f_int1 = new.f_int1;
27066
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27067
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27069
# check trigger-3 success: 1
27070
DROP TRIGGER trg_1;
27071
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27072
f_int2 = CAST(f_char1 AS SIGNED INT),
27073
f_charbig = 'just inserted'
27074
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27076
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27077
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27078
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27079
'just inserted' FROM t0_template
27080
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27081
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27083
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27084
f_charbig = 'updated by trigger'
27085
WHERE f_int1 = - old.f_int1;
27087
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27088
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27090
# check trigger-4 success: 1
27091
DROP TRIGGER trg_1;
27092
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27093
f_int2 = CAST(f_char1 AS SIGNED INT),
27094
f_charbig = 'just inserted'
27095
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27097
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27098
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27099
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27100
'just inserted' FROM t0_template
27101
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27102
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27104
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27105
f_charbig = 'updated by trigger'
27106
WHERE f_int1 = new.f_int1;
27108
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27109
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27111
# check trigger-5 success: 1
27112
DROP TRIGGER trg_1;
27113
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27114
f_int2 = CAST(f_char1 AS SIGNED INT),
27115
f_charbig = 'just inserted'
27116
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27118
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27119
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27120
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27121
'just inserted' FROM t0_template
27122
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27123
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27125
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27126
f_charbig = 'updated by trigger'
27127
WHERE f_int1 = - old.f_int1;
27129
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27130
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27132
# check trigger-6 success: 1
27133
DROP TRIGGER trg_1;
27134
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27135
f_int2 = CAST(f_char1 AS SIGNED INT),
27136
f_charbig = 'just inserted'
27137
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27139
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27140
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27141
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27142
'just inserted' FROM t0_template
27143
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27144
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27146
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27147
f_charbig = 'updated by trigger'
27148
WHERE f_int1 = - old.f_int1;
27151
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27153
# check trigger-7 success: 1
27154
DROP TRIGGER trg_1;
27155
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27156
f_int2 = CAST(f_char1 AS SIGNED INT),
27157
f_charbig = 'just inserted'
27158
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27160
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27161
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27162
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27163
'just inserted' FROM t0_template
27164
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27165
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27167
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27168
f_charbig = 'updated by trigger'
27169
WHERE f_int1 = - old.f_int1;
27172
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27174
# check trigger-8 success: 1
27175
DROP TRIGGER trg_1;
27176
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27177
f_int2 = CAST(f_char1 AS SIGNED INT),
27178
f_charbig = 'just inserted'
27179
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27181
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27183
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27184
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27186
SET new.f_int1 = old.f_int1 + @max_row,
27187
new.f_int2 = old.f_int2 - @max_row,
27188
new.f_charbig = '####updated per update trigger####';
27191
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27192
f_charbig = '####updated per update statement itself####';
27194
# check trigger-9 success: 1
27195
DROP TRIGGER trg_2;
27196
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27197
f_int2 = CAST(f_char1 AS SIGNED INT),
27198
f_charbig = CONCAT('===',f_char1,'===');
27199
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27201
SET new.f_int1 = new.f_int1 + @max_row,
27202
new.f_int2 = new.f_int2 - @max_row,
27203
new.f_charbig = '####updated per update trigger####';
27206
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27207
f_charbig = '####updated per update statement itself####';
27209
# check trigger-10 success: 1
27210
DROP TRIGGER trg_2;
27211
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27212
f_int2 = CAST(f_char1 AS SIGNED INT),
27213
f_charbig = CONCAT('===',f_char1,'===');
27214
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27216
SET new.f_int1 = @my_max1 + @counter,
27217
new.f_int2 = @my_min2 - @counter,
27218
new.f_charbig = '####updated per insert trigger####';
27219
SET @counter = @counter + 1;
27222
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27223
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27224
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27225
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27226
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27228
DROP TRIGGER trg_3;
27230
# check trigger-11 success: 1
27232
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27233
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27234
AND f_charbig = '####updated per insert trigger####';
27235
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27237
SET new.f_int1 = @my_max1 + @counter,
27238
new.f_int2 = @my_min2 - @counter,
27239
new.f_charbig = '####updated per insert trigger####';
27240
SET @counter = @counter + 1;
27243
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27244
INSERT INTO t1 (f_char1, f_char2, f_charbig)
27245
SELECT CAST(f_int1 AS CHAR),
27246
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27249
DROP TRIGGER trg_3;
27251
# check trigger-12 success: 1
27253
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27254
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27255
AND f_charbig = '####updated per insert trigger####';
27257
Table Op Msg_type Msg_text
27258
test.t1 analyze status OK
27259
CHECK TABLE t1 EXTENDED;
27260
Table Op Msg_type Msg_text
27261
test.t1 check status OK
27262
CHECKSUM TABLE t1 EXTENDED;
27264
test.t1 <some_value>
27266
Table Op Msg_type Msg_text
27267
test.t1 optimize status OK
27268
# check layout success: 1
27269
REPAIR TABLE t1 EXTENDED;
27270
Table Op Msg_type Msg_text
27271
test.t1 repair note The storage engine for the table doesn't support repair
27272
# check layout success: 1
27275
# check TRUNCATE success: 1
27276
# check layout success: 1
27277
# End usability test (inc/partition_check.inc)
27279
# 5.2 ALTER ... REBUILD PARTITION part_1,part_2;
27280
DROP TABLE IF EXISTS t1;
27286
f_charbig VARCHAR(1000)
27289
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
27290
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27291
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27292
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27293
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
27294
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27295
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27296
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27297
# Start usability test (inc/partition_check.inc)
27299
SHOW CREATE TABLE t1;
27301
t1 CREATE TABLE `t1` (
27302
`f_int1` int(11) DEFAULT NULL,
27303
`f_int2` int(11) DEFAULT NULL,
27304
`f_char1` char(20) DEFAULT NULL,
27305
`f_char2` char(20) DEFAULT NULL,
27306
`f_charbig` varchar(1000) DEFAULT NULL
27307
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB) */
27309
# check prerequisites-1 success: 1
27310
# check COUNT(*) success: 1
27311
# check MIN/MAX(f_int1) success: 1
27312
# check MIN/MAX(f_int2) success: 1
27313
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27314
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27315
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27316
WHERE f_int1 IN (2,3);
27317
# check prerequisites-3 success: 1
27318
DELETE FROM t1 WHERE f_charbig = 'delete me';
27319
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
27320
# check read via f_int1 success: 1
27321
# check read via f_int2 success: 1
27323
# check multiple-1 success: 1
27324
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27326
# check multiple-2 success: 1
27327
INSERT INTO t1 SELECT * FROM t0_template
27328
WHERE MOD(f_int1,3) = 0;
27330
# check multiple-3 success: 1
27331
UPDATE t1 SET f_int1 = f_int1 + @max_row
27332
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27333
AND @max_row_div2 + @max_row_div4;
27335
# check multiple-4 success: 1
27337
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27338
AND @max_row_div2 + @max_row_div4 + @max_row;
27340
# check multiple-5 success: 1
27341
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27343
SET f_int1 = @cur_value , f_int2 = @cur_value,
27344
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27345
f_charbig = '#SINGLE#';
27347
# check single-1 success: 1
27348
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27350
SET f_int1 = @cur_value , f_int2 = @cur_value,
27351
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27352
f_charbig = '#SINGLE#';
27354
# check single-2 success: 1
27355
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27356
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27357
UPDATE t1 SET f_int1 = @cur_value2
27358
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27360
# check single-3 success: 1
27361
SET @cur_value1= -1;
27362
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27363
UPDATE t1 SET f_int1 = @cur_value1
27364
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27366
# check single-4 success: 1
27367
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27368
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27370
# check single-5 success: 1
27371
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27373
# check single-6 success: 1
27374
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27376
# check single-7 success: 1
27377
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
27378
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27379
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27380
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27381
f_charbig = '#NULL#';
27383
SET f_int1 = NULL , f_int2 = -@max_row,
27384
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27385
f_charbig = '#NULL#';
27386
# check null success: 1
27388
# check null-1 success: 1
27389
UPDATE t1 SET f_int1 = -@max_row
27390
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27391
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27393
# check null-2 success: 1
27394
UPDATE t1 SET f_int1 = NULL
27395
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27396
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27398
# check null-3 success: 1
27400
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27401
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27403
# check null-4 success: 1
27405
WHERE f_int1 = 0 AND f_int2 = 0
27406
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27407
AND f_charbig = '#NULL#';
27409
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27410
SELECT f_int1, f_int1, '', '', 'was inserted'
27411
FROM t0_template source_tab
27412
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27414
# check transactions-1 success: 1
27417
# check transactions-2 success: 1
27420
# check transactions-3 success: 1
27421
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27425
# check transactions-4 success: 1
27426
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27427
SELECT f_int1, f_int1, '', '', 'was inserted'
27428
FROM t0_template source_tab
27429
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27431
# check transactions-5 success: 1
27434
# check transactions-6 success: 1
27435
# INFO: Storage engine used for t1 seems to be transactional.
27438
# check transactions-7 success: 1
27439
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27441
SET @@session.sql_mode = 'traditional';
27442
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27443
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27444
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27445
'', '', 'was inserted' FROM t0_template
27446
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27447
ERROR 22012: Division by 0
27450
# check transactions-8 success: 1
27451
# INFO: Storage engine used for t1 seems to be able to revert
27452
# changes made by the failing statement.
27453
SET @@session.sql_mode = '';
27455
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27457
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27459
# check special-1 success: 1
27460
UPDATE t1 SET f_charbig = '';
27462
# check special-2 success: 1
27463
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27464
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27465
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27466
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27467
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27468
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27469
'just inserted' FROM t0_template
27470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27471
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27473
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27474
f_charbig = 'updated by trigger'
27475
WHERE f_int1 = new.f_int1;
27477
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27478
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27479
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27481
# check trigger-1 success: 1
27482
DROP TRIGGER trg_1;
27483
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27484
f_int2 = CAST(f_char1 AS SIGNED INT),
27485
f_charbig = 'just inserted'
27486
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27488
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27489
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27490
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27491
'just inserted' FROM t0_template
27492
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27493
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27495
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27496
f_charbig = 'updated by trigger'
27497
WHERE f_int1 = new.f_int1;
27499
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27500
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27501
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27503
# check trigger-2 success: 1
27504
DROP TRIGGER trg_1;
27505
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27506
f_int2 = CAST(f_char1 AS SIGNED INT),
27507
f_charbig = 'just inserted'
27508
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27510
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27511
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27512
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27513
'just inserted' FROM t0_template
27514
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27515
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27517
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27518
f_charbig = 'updated by trigger'
27519
WHERE f_int1 = new.f_int1;
27521
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27522
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27524
# check trigger-3 success: 1
27525
DROP TRIGGER trg_1;
27526
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27527
f_int2 = CAST(f_char1 AS SIGNED INT),
27528
f_charbig = 'just inserted'
27529
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27531
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27532
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27533
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27534
'just inserted' FROM t0_template
27535
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27536
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27538
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27539
f_charbig = 'updated by trigger'
27540
WHERE f_int1 = - old.f_int1;
27542
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27543
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27545
# check trigger-4 success: 1
27546
DROP TRIGGER trg_1;
27547
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27548
f_int2 = CAST(f_char1 AS SIGNED INT),
27549
f_charbig = 'just inserted'
27550
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27552
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27553
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27554
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27555
'just inserted' FROM t0_template
27556
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27557
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27559
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27560
f_charbig = 'updated by trigger'
27561
WHERE f_int1 = new.f_int1;
27563
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27564
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27566
# check trigger-5 success: 1
27567
DROP TRIGGER trg_1;
27568
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27569
f_int2 = CAST(f_char1 AS SIGNED INT),
27570
f_charbig = 'just inserted'
27571
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27573
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27574
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27575
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27576
'just inserted' FROM t0_template
27577
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27578
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27580
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27581
f_charbig = 'updated by trigger'
27582
WHERE f_int1 = - old.f_int1;
27584
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27585
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27587
# check trigger-6 success: 1
27588
DROP TRIGGER trg_1;
27589
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27590
f_int2 = CAST(f_char1 AS SIGNED INT),
27591
f_charbig = 'just inserted'
27592
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27594
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27595
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27596
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27597
'just inserted' FROM t0_template
27598
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27599
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27601
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27602
f_charbig = 'updated by trigger'
27603
WHERE f_int1 = - old.f_int1;
27606
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27608
# check trigger-7 success: 1
27609
DROP TRIGGER trg_1;
27610
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27611
f_int2 = CAST(f_char1 AS SIGNED INT),
27612
f_charbig = 'just inserted'
27613
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27615
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27616
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27617
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27618
'just inserted' FROM t0_template
27619
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27620
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27622
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27623
f_charbig = 'updated by trigger'
27624
WHERE f_int1 = - old.f_int1;
27627
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27629
# check trigger-8 success: 1
27630
DROP TRIGGER trg_1;
27631
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27632
f_int2 = CAST(f_char1 AS SIGNED INT),
27633
f_charbig = 'just inserted'
27634
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27636
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27638
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27639
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27641
SET new.f_int1 = old.f_int1 + @max_row,
27642
new.f_int2 = old.f_int2 - @max_row,
27643
new.f_charbig = '####updated per update trigger####';
27646
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27647
f_charbig = '####updated per update statement itself####';
27649
# check trigger-9 success: 1
27650
DROP TRIGGER trg_2;
27651
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27652
f_int2 = CAST(f_char1 AS SIGNED INT),
27653
f_charbig = CONCAT('===',f_char1,'===');
27654
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27656
SET new.f_int1 = new.f_int1 + @max_row,
27657
new.f_int2 = new.f_int2 - @max_row,
27658
new.f_charbig = '####updated per update trigger####';
27661
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27662
f_charbig = '####updated per update statement itself####';
27664
# check trigger-10 success: 1
27665
DROP TRIGGER trg_2;
27666
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27667
f_int2 = CAST(f_char1 AS SIGNED INT),
27668
f_charbig = CONCAT('===',f_char1,'===');
27669
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27671
SET new.f_int1 = @my_max1 + @counter,
27672
new.f_int2 = @my_min2 - @counter,
27673
new.f_charbig = '####updated per insert trigger####';
27674
SET @counter = @counter + 1;
27677
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27678
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27679
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27680
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27681
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27683
DROP TRIGGER trg_3;
27685
# check trigger-11 success: 1
27687
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27688
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27689
AND f_charbig = '####updated per insert trigger####';
27690
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27692
SET new.f_int1 = @my_max1 + @counter,
27693
new.f_int2 = @my_min2 - @counter,
27694
new.f_charbig = '####updated per insert trigger####';
27695
SET @counter = @counter + 1;
27698
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27699
INSERT INTO t1 (f_char1, f_char2, f_charbig)
27700
SELECT CAST(f_int1 AS CHAR),
27701
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27702
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27704
DROP TRIGGER trg_3;
27706
# check trigger-12 success: 1
27708
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27709
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27710
AND f_charbig = '####updated per insert trigger####';
27712
Table Op Msg_type Msg_text
27713
test.t1 analyze status OK
27714
CHECK TABLE t1 EXTENDED;
27715
Table Op Msg_type Msg_text
27716
test.t1 check status OK
27717
CHECKSUM TABLE t1 EXTENDED;
27719
test.t1 <some_value>
27721
Table Op Msg_type Msg_text
27722
test.t1 optimize status OK
27723
# check layout success: 1
27724
REPAIR TABLE t1 EXTENDED;
27725
Table Op Msg_type Msg_text
27726
test.t1 repair note The storage engine for the table doesn't support repair
27727
# check layout success: 1
27730
# check TRUNCATE success: 1
27731
# check layout success: 1
27732
# End usability test (inc/partition_check.inc)
27739
f_charbig VARCHAR(1000)
27742
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
27743
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27744
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27745
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27746
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
27747
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27748
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27749
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27750
# Start usability test (inc/partition_check.inc)
27752
SHOW CREATE TABLE t1;
27754
t1 CREATE TABLE `t1` (
27755
`f_int1` int(11) DEFAULT NULL,
27756
`f_int2` int(11) DEFAULT NULL,
27757
`f_char1` char(20) DEFAULT NULL,
27758
`f_char2` char(20) DEFAULT NULL,
27759
`f_charbig` varchar(1000) DEFAULT NULL
27760
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) (PARTITION part_1 ENGINE = InnoDB, PARTITION part_2 ENGINE = InnoDB, PARTITION part_3 ENGINE = InnoDB, PARTITION part_4 ENGINE = InnoDB, PARTITION part_5 ENGINE = InnoDB) */
27762
# check prerequisites-1 success: 1
27763
# check COUNT(*) success: 1
27764
# check MIN/MAX(f_int1) success: 1
27765
# check MIN/MAX(f_int2) success: 1
27766
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27767
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27768
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27769
WHERE f_int1 IN (2,3);
27770
# check prerequisites-3 success: 1
27771
DELETE FROM t1 WHERE f_charbig = 'delete me';
27772
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
27773
# check read via f_int1 success: 1
27774
# check read via f_int2 success: 1
27776
# check multiple-1 success: 1
27777
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27779
# check multiple-2 success: 1
27780
INSERT INTO t1 SELECT * FROM t0_template
27781
WHERE MOD(f_int1,3) = 0;
27783
# check multiple-3 success: 1
27784
UPDATE t1 SET f_int1 = f_int1 + @max_row
27785
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27786
AND @max_row_div2 + @max_row_div4;
27788
# check multiple-4 success: 1
27790
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27791
AND @max_row_div2 + @max_row_div4 + @max_row;
27793
# check multiple-5 success: 1
27794
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27796
SET f_int1 = @cur_value , f_int2 = @cur_value,
27797
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27798
f_charbig = '#SINGLE#';
27800
# check single-1 success: 1
27801
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27803
SET f_int1 = @cur_value , f_int2 = @cur_value,
27804
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27805
f_charbig = '#SINGLE#';
27807
# check single-2 success: 1
27808
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27809
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27810
UPDATE t1 SET f_int1 = @cur_value2
27811
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27813
# check single-3 success: 1
27814
SET @cur_value1= -1;
27815
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27816
UPDATE t1 SET f_int1 = @cur_value1
27817
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27819
# check single-4 success: 1
27820
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27821
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27823
# check single-5 success: 1
27824
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27826
# check single-6 success: 1
27827
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27829
# check single-7 success: 1
27830
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
27831
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27832
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27833
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27834
f_charbig = '#NULL#';
27836
SET f_int1 = NULL , f_int2 = -@max_row,
27837
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27838
f_charbig = '#NULL#';
27839
# check null success: 1
27841
# check null-1 success: 1
27842
UPDATE t1 SET f_int1 = -@max_row
27843
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27844
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27846
# check null-2 success: 1
27847
UPDATE t1 SET f_int1 = NULL
27848
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27849
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27851
# check null-3 success: 1
27853
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27854
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27856
# check null-4 success: 1
27858
WHERE f_int1 = 0 AND f_int2 = 0
27859
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27860
AND f_charbig = '#NULL#';
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-1 success: 1
27870
# check transactions-2 success: 1
27873
# check transactions-3 success: 1
27874
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27878
# check transactions-4 success: 1
27879
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27880
SELECT f_int1, f_int1, '', '', 'was inserted'
27881
FROM t0_template source_tab
27882
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27884
# check transactions-5 success: 1
27887
# check transactions-6 success: 1
27888
# INFO: Storage engine used for t1 seems to be transactional.
27891
# check transactions-7 success: 1
27892
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27894
SET @@session.sql_mode = 'traditional';
27895
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27896
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27897
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27898
'', '', 'was inserted' FROM t0_template
27899
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27900
ERROR 22012: Division by 0
27903
# check transactions-8 success: 1
27904
# INFO: Storage engine used for t1 seems to be able to revert
27905
# changes made by the failing statement.
27906
SET @@session.sql_mode = '';
27908
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27910
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27912
# check special-1 success: 1
27913
UPDATE t1 SET f_charbig = '';
27915
# check special-2 success: 1
27916
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27917
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27918
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27919
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27920
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27921
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27922
'just inserted' FROM t0_template
27923
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27924
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27926
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27927
f_charbig = 'updated by trigger'
27928
WHERE f_int1 = new.f_int1;
27930
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27931
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27932
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27934
# check trigger-1 success: 1
27935
DROP TRIGGER trg_1;
27936
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27937
f_int2 = CAST(f_char1 AS SIGNED INT),
27938
f_charbig = 'just inserted'
27939
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27941
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27942
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27943
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27944
'just inserted' FROM t0_template
27945
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27946
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27948
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27949
f_charbig = 'updated by trigger'
27950
WHERE f_int1 = new.f_int1;
27952
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27953
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27954
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27956
# check trigger-2 success: 1
27957
DROP TRIGGER trg_1;
27958
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27959
f_int2 = CAST(f_char1 AS SIGNED INT),
27960
f_charbig = 'just inserted'
27961
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27963
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27964
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27965
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27966
'just inserted' FROM t0_template
27967
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27968
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27970
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27971
f_charbig = 'updated by trigger'
27972
WHERE f_int1 = new.f_int1;
27974
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27975
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27977
# check trigger-3 success: 1
27978
DROP TRIGGER trg_1;
27979
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27980
f_int2 = CAST(f_char1 AS SIGNED INT),
27981
f_charbig = 'just inserted'
27982
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27984
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27985
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27986
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27987
'just inserted' FROM t0_template
27988
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27989
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27991
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27992
f_charbig = 'updated by trigger'
27993
WHERE f_int1 = - old.f_int1;
27995
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27996
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27998
# check trigger-4 success: 1
27999
DROP TRIGGER trg_1;
28000
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28001
f_int2 = CAST(f_char1 AS SIGNED INT),
28002
f_charbig = 'just inserted'
28003
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28005
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28006
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28007
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28008
'just inserted' FROM t0_template
28009
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28010
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28012
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28013
f_charbig = 'updated by trigger'
28014
WHERE f_int1 = new.f_int1;
28016
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28017
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28019
# check trigger-5 success: 1
28020
DROP TRIGGER trg_1;
28021
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28022
f_int2 = CAST(f_char1 AS SIGNED INT),
28023
f_charbig = 'just inserted'
28024
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28026
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28027
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28028
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28029
'just inserted' FROM t0_template
28030
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28031
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28033
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28034
f_charbig = 'updated by trigger'
28035
WHERE f_int1 = - old.f_int1;
28037
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28038
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28040
# check trigger-6 success: 1
28041
DROP TRIGGER trg_1;
28042
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28043
f_int2 = CAST(f_char1 AS SIGNED INT),
28044
f_charbig = 'just inserted'
28045
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28047
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28048
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28049
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28050
'just inserted' FROM t0_template
28051
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28052
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28054
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28055
f_charbig = 'updated by trigger'
28056
WHERE f_int1 = - old.f_int1;
28059
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28061
# check trigger-7 success: 1
28062
DROP TRIGGER trg_1;
28063
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28064
f_int2 = CAST(f_char1 AS SIGNED INT),
28065
f_charbig = 'just inserted'
28066
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28068
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28069
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28070
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28071
'just inserted' FROM t0_template
28072
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28073
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28075
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28076
f_charbig = 'updated by trigger'
28077
WHERE f_int1 = - old.f_int1;
28080
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28082
# check trigger-8 success: 1
28083
DROP TRIGGER trg_1;
28084
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28085
f_int2 = CAST(f_char1 AS SIGNED INT),
28086
f_charbig = 'just inserted'
28087
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28089
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28091
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28092
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28094
SET new.f_int1 = old.f_int1 + @max_row,
28095
new.f_int2 = old.f_int2 - @max_row,
28096
new.f_charbig = '####updated per update trigger####';
28099
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28100
f_charbig = '####updated per update statement itself####';
28102
# check trigger-9 success: 1
28103
DROP TRIGGER trg_2;
28104
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28105
f_int2 = CAST(f_char1 AS SIGNED INT),
28106
f_charbig = CONCAT('===',f_char1,'===');
28107
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28109
SET new.f_int1 = new.f_int1 + @max_row,
28110
new.f_int2 = new.f_int2 - @max_row,
28111
new.f_charbig = '####updated per update trigger####';
28114
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28115
f_charbig = '####updated per update statement itself####';
28117
# check trigger-10 success: 1
28118
DROP TRIGGER trg_2;
28119
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28120
f_int2 = CAST(f_char1 AS SIGNED INT),
28121
f_charbig = CONCAT('===',f_char1,'===');
28122
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28124
SET new.f_int1 = @my_max1 + @counter,
28125
new.f_int2 = @my_min2 - @counter,
28126
new.f_charbig = '####updated per insert trigger####';
28127
SET @counter = @counter + 1;
28130
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28131
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28132
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28133
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28134
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28136
DROP TRIGGER trg_3;
28138
# check trigger-11 success: 1
28140
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28141
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28142
AND f_charbig = '####updated per insert trigger####';
28143
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28145
SET new.f_int1 = @my_max1 + @counter,
28146
new.f_int2 = @my_min2 - @counter,
28147
new.f_charbig = '####updated per insert trigger####';
28148
SET @counter = @counter + 1;
28151
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28152
INSERT INTO t1 (f_char1, f_char2, f_charbig)
28153
SELECT CAST(f_int1 AS CHAR),
28154
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28155
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28157
DROP TRIGGER trg_3;
28159
# check trigger-12 success: 1
28161
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28162
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28163
AND f_charbig = '####updated per insert trigger####';
28165
Table Op Msg_type Msg_text
28166
test.t1 analyze status OK
28167
CHECK TABLE t1 EXTENDED;
28168
Table Op Msg_type Msg_text
28169
test.t1 check status OK
28170
CHECKSUM TABLE t1 EXTENDED;
28172
test.t1 <some_value>
28174
Table Op Msg_type Msg_text
28175
test.t1 optimize status OK
28176
# check layout success: 1
28177
REPAIR TABLE t1 EXTENDED;
28178
Table Op Msg_type Msg_text
28179
test.t1 repair note The storage engine for the table doesn't support repair
28180
# check layout success: 1
28183
# check TRUNCATE success: 1
28184
# check layout success: 1
28185
# End usability test (inc/partition_check.inc)
28192
f_charbig VARCHAR(1000)
28195
PARTITION BY LIST(MOD(f_int1,4))
28196
(PARTITION part_3 VALUES IN (-3),
28197
PARTITION part_2 VALUES IN (-2),
28198
PARTITION part_1 VALUES IN (-1),
28199
PARTITION part_N VALUES IN (NULL),
28200
PARTITION part0 VALUES IN (0),
28201
PARTITION part1 VALUES IN (1),
28202
PARTITION part2 VALUES IN (2),
28203
PARTITION part3 VALUES IN (3));
28204
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28205
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28206
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28207
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
28208
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28209
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28210
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28211
# Start usability test (inc/partition_check.inc)
28213
SHOW CREATE TABLE t1;
28215
t1 CREATE TABLE `t1` (
28216
`f_int1` int(11) DEFAULT NULL,
28217
`f_int2` int(11) DEFAULT NULL,
28218
`f_char1` char(20) DEFAULT NULL,
28219
`f_char2` char(20) DEFAULT NULL,
28220
`f_charbig` varchar(1000) DEFAULT NULL
28221
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
28223
# check prerequisites-1 success: 1
28224
# check COUNT(*) success: 1
28225
# check MIN/MAX(f_int1) success: 1
28226
# check MIN/MAX(f_int2) success: 1
28227
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28228
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28229
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28230
WHERE f_int1 IN (2,3);
28231
# check prerequisites-3 success: 1
28232
DELETE FROM t1 WHERE f_charbig = 'delete me';
28233
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
28234
# check read via f_int1 success: 1
28235
# check read via f_int2 success: 1
28237
# check multiple-1 success: 1
28238
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28240
# check multiple-2 success: 1
28241
INSERT INTO t1 SELECT * FROM t0_template
28242
WHERE MOD(f_int1,3) = 0;
28244
# check multiple-3 success: 1
28245
UPDATE t1 SET f_int1 = f_int1 + @max_row
28246
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28247
AND @max_row_div2 + @max_row_div4;
28249
# check multiple-4 success: 1
28251
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28252
AND @max_row_div2 + @max_row_div4 + @max_row;
28254
# check multiple-5 success: 1
28255
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28257
SET f_int1 = @cur_value , f_int2 = @cur_value,
28258
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28259
f_charbig = '#SINGLE#';
28261
# check single-1 success: 1
28262
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28264
SET f_int1 = @cur_value , f_int2 = @cur_value,
28265
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28266
f_charbig = '#SINGLE#';
28268
# check single-2 success: 1
28269
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28270
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28271
UPDATE t1 SET f_int1 = @cur_value2
28272
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28274
# check single-3 success: 1
28275
SET @cur_value1= -1;
28276
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28277
UPDATE t1 SET f_int1 = @cur_value1
28278
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28280
# check single-4 success: 1
28281
SELECT MAX(f_int1) INTO @cur_value FROM t1;
28282
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28284
# check single-5 success: 1
28285
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28287
# check single-6 success: 1
28288
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28290
# check single-7 success: 1
28291
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28292
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28293
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28294
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28295
f_charbig = '#NULL#';
28297
SET f_int1 = NULL , f_int2 = -@max_row,
28298
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28299
f_charbig = '#NULL#';
28300
# check null success: 1
28302
# check null-1 success: 1
28303
UPDATE t1 SET f_int1 = -@max_row
28304
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28305
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28307
# check null-2 success: 1
28308
UPDATE t1 SET f_int1 = NULL
28309
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28310
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28312
# check null-3 success: 1
28314
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28315
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28317
# check null-4 success: 1
28319
WHERE f_int1 = 0 AND f_int2 = 0
28320
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28321
AND f_charbig = '#NULL#';
28323
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28324
SELECT f_int1, f_int1, '', '', 'was inserted'
28325
FROM t0_template source_tab
28326
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28328
# check transactions-1 success: 1
28331
# check transactions-2 success: 1
28334
# check transactions-3 success: 1
28335
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28339
# check transactions-4 success: 1
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-5 success: 1
28348
# check transactions-6 success: 1
28349
# INFO: Storage engine used for t1 seems to be transactional.
28352
# check transactions-7 success: 1
28353
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28355
SET @@session.sql_mode = 'traditional';
28356
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28357
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28358
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28359
'', '', 'was inserted' FROM t0_template
28360
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28361
ERROR 22012: Division by 0
28364
# check transactions-8 success: 1
28365
# INFO: Storage engine used for t1 seems to be able to revert
28366
# changes made by the failing statement.
28367
SET @@session.sql_mode = '';
28369
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28371
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28373
# check special-1 success: 1
28374
UPDATE t1 SET f_charbig = '';
28376
# check special-2 success: 1
28377
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28378
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28379
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28381
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28382
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28383
'just inserted' FROM t0_template
28384
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28385
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28387
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28388
f_charbig = 'updated by trigger'
28389
WHERE f_int1 = new.f_int1;
28391
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28392
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28393
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28395
# check trigger-1 success: 1
28396
DROP TRIGGER trg_1;
28397
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28398
f_int2 = CAST(f_char1 AS SIGNED INT),
28399
f_charbig = 'just inserted'
28400
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28402
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28403
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28404
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28405
'just inserted' FROM t0_template
28406
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28407
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28409
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28410
f_charbig = 'updated by trigger'
28411
WHERE f_int1 = new.f_int1;
28413
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28414
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28415
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28417
# check trigger-2 success: 1
28418
DROP TRIGGER trg_1;
28419
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28420
f_int2 = CAST(f_char1 AS SIGNED INT),
28421
f_charbig = 'just inserted'
28422
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28424
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28425
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28426
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28427
'just inserted' FROM t0_template
28428
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28429
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28431
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28432
f_charbig = 'updated by trigger'
28433
WHERE f_int1 = new.f_int1;
28435
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28436
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28438
# check trigger-3 success: 1
28439
DROP TRIGGER trg_1;
28440
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28441
f_int2 = CAST(f_char1 AS SIGNED INT),
28442
f_charbig = 'just inserted'
28443
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28445
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28446
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28447
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28448
'just inserted' FROM t0_template
28449
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28450
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28452
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28453
f_charbig = 'updated by trigger'
28454
WHERE f_int1 = - old.f_int1;
28456
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28457
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28459
# check trigger-4 success: 1
28460
DROP TRIGGER trg_1;
28461
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28462
f_int2 = CAST(f_char1 AS SIGNED INT),
28463
f_charbig = 'just inserted'
28464
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28466
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28467
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28468
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28469
'just inserted' FROM t0_template
28470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28471
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28473
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28474
f_charbig = 'updated by trigger'
28475
WHERE f_int1 = new.f_int1;
28477
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28478
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28480
# check trigger-5 success: 1
28481
DROP TRIGGER trg_1;
28482
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28483
f_int2 = CAST(f_char1 AS SIGNED INT),
28484
f_charbig = 'just inserted'
28485
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28487
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28488
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28489
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28490
'just inserted' FROM t0_template
28491
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28492
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28494
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28495
f_charbig = 'updated by trigger'
28496
WHERE f_int1 = - old.f_int1;
28498
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28499
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28501
# check trigger-6 success: 1
28502
DROP TRIGGER trg_1;
28503
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28504
f_int2 = CAST(f_char1 AS SIGNED INT),
28505
f_charbig = 'just inserted'
28506
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28508
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28509
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28510
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28511
'just inserted' FROM t0_template
28512
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28513
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28515
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28516
f_charbig = 'updated by trigger'
28517
WHERE f_int1 = - old.f_int1;
28520
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28522
# check trigger-7 success: 1
28523
DROP TRIGGER trg_1;
28524
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28525
f_int2 = CAST(f_char1 AS SIGNED INT),
28526
f_charbig = 'just inserted'
28527
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28529
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28530
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28531
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28532
'just inserted' FROM t0_template
28533
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28534
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28536
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28537
f_charbig = 'updated by trigger'
28538
WHERE f_int1 = - old.f_int1;
28541
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28543
# check trigger-8 success: 1
28544
DROP TRIGGER trg_1;
28545
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28546
f_int2 = CAST(f_char1 AS SIGNED INT),
28547
f_charbig = 'just inserted'
28548
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28550
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28552
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28553
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28555
SET new.f_int1 = old.f_int1 + @max_row,
28556
new.f_int2 = old.f_int2 - @max_row,
28557
new.f_charbig = '####updated per update trigger####';
28560
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28561
f_charbig = '####updated per update statement itself####';
28563
# check trigger-9 success: 1
28564
DROP TRIGGER trg_2;
28565
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28566
f_int2 = CAST(f_char1 AS SIGNED INT),
28567
f_charbig = CONCAT('===',f_char1,'===');
28568
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28570
SET new.f_int1 = new.f_int1 + @max_row,
28571
new.f_int2 = new.f_int2 - @max_row,
28572
new.f_charbig = '####updated per update trigger####';
28575
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28576
f_charbig = '####updated per update statement itself####';
28578
# check trigger-10 success: 1
28579
DROP TRIGGER trg_2;
28580
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28581
f_int2 = CAST(f_char1 AS SIGNED INT),
28582
f_charbig = CONCAT('===',f_char1,'===');
28583
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28585
SET new.f_int1 = @my_max1 + @counter,
28586
new.f_int2 = @my_min2 - @counter,
28587
new.f_charbig = '####updated per insert trigger####';
28588
SET @counter = @counter + 1;
28591
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28592
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28593
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28594
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28595
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28597
DROP TRIGGER trg_3;
28599
# check trigger-11 success: 1
28601
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28602
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28603
AND f_charbig = '####updated per insert trigger####';
28604
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28606
SET new.f_int1 = @my_max1 + @counter,
28607
new.f_int2 = @my_min2 - @counter,
28608
new.f_charbig = '####updated per insert trigger####';
28609
SET @counter = @counter + 1;
28612
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28613
INSERT INTO t1 (f_char1, f_char2, f_charbig)
28614
SELECT CAST(f_int1 AS CHAR),
28615
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28616
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28618
DROP TRIGGER trg_3;
28620
# check trigger-12 success: 1
28622
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28623
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28624
AND f_charbig = '####updated per insert trigger####';
28626
Table Op Msg_type Msg_text
28627
test.t1 analyze status OK
28628
CHECK TABLE t1 EXTENDED;
28629
Table Op Msg_type Msg_text
28630
test.t1 check status OK
28631
CHECKSUM TABLE t1 EXTENDED;
28633
test.t1 <some_value>
28635
Table Op Msg_type Msg_text
28636
test.t1 optimize status OK
28637
# check layout success: 1
28638
REPAIR TABLE t1 EXTENDED;
28639
Table Op Msg_type Msg_text
28640
test.t1 repair note The storage engine for the table doesn't support repair
28641
# check layout success: 1
28644
# check TRUNCATE success: 1
28645
# check layout success: 1
28646
# End usability test (inc/partition_check.inc)
28653
f_charbig VARCHAR(1000)
28656
PARTITION BY RANGE(f_int1)
28657
(PARTITION parta VALUES LESS THAN (0),
28658
PARTITION part_1 VALUES LESS THAN (5),
28659
PARTITION part_2 VALUES LESS THAN (10),
28660
PARTITION part_3 VALUES LESS THAN (10 + 5),
28661
PARTITION part_4 VALUES LESS THAN (20),
28662
PARTITION part_5 VALUES LESS THAN (2147483646));
28663
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28664
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28665
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28666
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
28667
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28668
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28669
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28670
# Start usability test (inc/partition_check.inc)
28672
SHOW CREATE TABLE t1;
28674
t1 CREATE TABLE `t1` (
28675
`f_int1` int(11) DEFAULT NULL,
28676
`f_int2` int(11) DEFAULT NULL,
28677
`f_char1` char(20) DEFAULT NULL,
28678
`f_char2` char(20) DEFAULT NULL,
28679
`f_charbig` varchar(1000) DEFAULT NULL
28680
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_1 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION part_5 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
28682
# check prerequisites-1 success: 1
28683
# check COUNT(*) success: 1
28684
# check MIN/MAX(f_int1) success: 1
28685
# check MIN/MAX(f_int2) success: 1
28686
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28687
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28688
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28689
WHERE f_int1 IN (2,3);
28690
# check prerequisites-3 success: 1
28691
DELETE FROM t1 WHERE f_charbig = 'delete me';
28692
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
28693
# check read via f_int1 success: 1
28694
# check read via f_int2 success: 1
28696
# check multiple-1 success: 1
28697
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28699
# check multiple-2 success: 1
28700
INSERT INTO t1 SELECT * FROM t0_template
28701
WHERE MOD(f_int1,3) = 0;
28703
# check multiple-3 success: 1
28704
UPDATE t1 SET f_int1 = f_int1 + @max_row
28705
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28706
AND @max_row_div2 + @max_row_div4;
28708
# check multiple-4 success: 1
28710
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28711
AND @max_row_div2 + @max_row_div4 + @max_row;
28713
# check multiple-5 success: 1
28714
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28716
SET f_int1 = @cur_value , f_int2 = @cur_value,
28717
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28718
f_charbig = '#SINGLE#';
28720
# check single-1 success: 1
28721
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28723
SET f_int1 = @cur_value , f_int2 = @cur_value,
28724
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28725
f_charbig = '#SINGLE#';
28727
# check single-2 success: 1
28728
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28729
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28730
UPDATE t1 SET f_int1 = @cur_value2
28731
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28733
# check single-3 success: 1
28734
SET @cur_value1= -1;
28735
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28736
UPDATE t1 SET f_int1 = @cur_value1
28737
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28739
# check single-4 success: 1
28740
SELECT MAX(f_int1) INTO @cur_value FROM t1;
28741
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28743
# check single-5 success: 1
28744
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28746
# check single-6 success: 1
28747
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28748
ERROR HY000: Table has no partition for value 2147483647
28749
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28750
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28751
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28752
f_charbig = '#NULL#';
28754
SET f_int1 = NULL , f_int2 = -@max_row,
28755
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28756
f_charbig = '#NULL#';
28757
# check null success: 1
28759
# check null-1 success: 1
28760
UPDATE t1 SET f_int1 = -@max_row
28761
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28762
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28764
# check null-2 success: 1
28765
UPDATE t1 SET f_int1 = NULL
28766
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28767
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28769
# check null-3 success: 1
28771
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28772
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28774
# check null-4 success: 1
28776
WHERE f_int1 = 0 AND f_int2 = 0
28777
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28778
AND f_charbig = '#NULL#';
28780
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28781
SELECT f_int1, f_int1, '', '', 'was inserted'
28782
FROM t0_template source_tab
28783
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28785
# check transactions-1 success: 1
28788
# check transactions-2 success: 1
28791
# check transactions-3 success: 1
28792
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28796
# check transactions-4 success: 1
28797
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28798
SELECT f_int1, f_int1, '', '', 'was inserted'
28799
FROM t0_template source_tab
28800
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28802
# check transactions-5 success: 1
28805
# check transactions-6 success: 1
28806
# INFO: Storage engine used for t1 seems to be transactional.
28809
# check transactions-7 success: 1
28810
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28812
SET @@session.sql_mode = 'traditional';
28813
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28814
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28815
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28816
'', '', 'was inserted' FROM t0_template
28817
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28818
ERROR 22012: Division by 0
28821
# check transactions-8 success: 1
28822
# INFO: Storage engine used for t1 seems to be able to revert
28823
# changes made by the failing statement.
28824
SET @@session.sql_mode = '';
28826
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28828
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28830
# check special-1 success: 1
28831
UPDATE t1 SET f_charbig = '';
28833
# check special-2 success: 1
28834
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28835
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28836
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28837
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28838
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28839
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28840
'just inserted' FROM t0_template
28841
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28842
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28844
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28845
f_charbig = 'updated by trigger'
28846
WHERE f_int1 = new.f_int1;
28848
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28849
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28850
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28852
# check trigger-1 success: 1
28853
DROP TRIGGER trg_1;
28854
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28855
f_int2 = CAST(f_char1 AS SIGNED INT),
28856
f_charbig = 'just inserted'
28857
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28859
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28860
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28861
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28862
'just inserted' FROM t0_template
28863
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28864
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28866
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28867
f_charbig = 'updated by trigger'
28868
WHERE f_int1 = new.f_int1;
28870
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28871
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28872
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28874
# check trigger-2 success: 1
28875
DROP TRIGGER trg_1;
28876
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28877
f_int2 = CAST(f_char1 AS SIGNED INT),
28878
f_charbig = 'just inserted'
28879
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28881
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28882
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28883
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28884
'just inserted' FROM t0_template
28885
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28886
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28888
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28889
f_charbig = 'updated by trigger'
28890
WHERE f_int1 = new.f_int1;
28892
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28893
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28895
# check trigger-3 success: 1
28896
DROP TRIGGER trg_1;
28897
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28898
f_int2 = CAST(f_char1 AS SIGNED INT),
28899
f_charbig = 'just inserted'
28900
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28902
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28903
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28904
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28905
'just inserted' FROM t0_template
28906
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28907
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28909
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28910
f_charbig = 'updated by trigger'
28911
WHERE f_int1 = - old.f_int1;
28913
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28914
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28916
# check trigger-4 success: 1
28917
DROP TRIGGER trg_1;
28918
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28919
f_int2 = CAST(f_char1 AS SIGNED INT),
28920
f_charbig = 'just inserted'
28921
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28923
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28924
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28925
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28926
'just inserted' FROM t0_template
28927
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28928
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28930
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28931
f_charbig = 'updated by trigger'
28932
WHERE f_int1 = new.f_int1;
28934
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28935
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28937
# check trigger-5 success: 1
28938
DROP TRIGGER trg_1;
28939
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28940
f_int2 = CAST(f_char1 AS SIGNED INT),
28941
f_charbig = 'just inserted'
28942
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28944
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28945
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28946
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28947
'just inserted' FROM t0_template
28948
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28949
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28951
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28952
f_charbig = 'updated by trigger'
28953
WHERE f_int1 = - old.f_int1;
28955
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28956
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28958
# check trigger-6 success: 1
28959
DROP TRIGGER trg_1;
28960
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28961
f_int2 = CAST(f_char1 AS SIGNED INT),
28962
f_charbig = 'just inserted'
28963
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28965
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28966
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28967
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28968
'just inserted' FROM t0_template
28969
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28970
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28972
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28973
f_charbig = 'updated by trigger'
28974
WHERE f_int1 = - old.f_int1;
28977
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28979
# check trigger-7 success: 1
28980
DROP TRIGGER trg_1;
28981
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28982
f_int2 = CAST(f_char1 AS SIGNED INT),
28983
f_charbig = 'just inserted'
28984
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28986
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28987
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28988
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28989
'just inserted' FROM t0_template
28990
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28991
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28993
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28994
f_charbig = 'updated by trigger'
28995
WHERE f_int1 = - old.f_int1;
28998
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29000
# check trigger-8 success: 1
29001
DROP TRIGGER trg_1;
29002
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29003
f_int2 = CAST(f_char1 AS SIGNED INT),
29004
f_charbig = 'just inserted'
29005
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29007
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29009
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29010
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29012
SET new.f_int1 = old.f_int1 + @max_row,
29013
new.f_int2 = old.f_int2 - @max_row,
29014
new.f_charbig = '####updated per update trigger####';
29017
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29018
f_charbig = '####updated per update statement itself####';
29020
# check trigger-9 success: 1
29021
DROP TRIGGER trg_2;
29022
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29023
f_int2 = CAST(f_char1 AS SIGNED INT),
29024
f_charbig = CONCAT('===',f_char1,'===');
29025
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29027
SET new.f_int1 = new.f_int1 + @max_row,
29028
new.f_int2 = new.f_int2 - @max_row,
29029
new.f_charbig = '####updated per update trigger####';
29032
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29033
f_charbig = '####updated per update statement itself####';
29035
# check trigger-10 success: 1
29036
DROP TRIGGER trg_2;
29037
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29038
f_int2 = CAST(f_char1 AS SIGNED INT),
29039
f_charbig = CONCAT('===',f_char1,'===');
29040
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29042
SET new.f_int1 = @my_max1 + @counter,
29043
new.f_int2 = @my_min2 - @counter,
29044
new.f_charbig = '####updated per insert trigger####';
29045
SET @counter = @counter + 1;
29048
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29049
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29050
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29051
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29052
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29054
DROP TRIGGER trg_3;
29056
# check trigger-11 success: 1
29058
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29059
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29060
AND f_charbig = '####updated per insert trigger####';
29061
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29063
SET new.f_int1 = @my_max1 + @counter,
29064
new.f_int2 = @my_min2 - @counter,
29065
new.f_charbig = '####updated per insert trigger####';
29066
SET @counter = @counter + 1;
29069
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29070
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29071
SELECT CAST(f_int1 AS CHAR),
29072
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29073
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29075
DROP TRIGGER trg_3;
29077
# check trigger-12 success: 1
29079
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29080
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29081
AND f_charbig = '####updated per insert trigger####';
29083
Table Op Msg_type Msg_text
29084
test.t1 analyze status OK
29085
CHECK TABLE t1 EXTENDED;
29086
Table Op Msg_type Msg_text
29087
test.t1 check status OK
29088
CHECKSUM TABLE t1 EXTENDED;
29090
test.t1 <some_value>
29092
Table Op Msg_type Msg_text
29093
test.t1 optimize status OK
29094
# check layout success: 1
29095
REPAIR TABLE t1 EXTENDED;
29096
Table Op Msg_type Msg_text
29097
test.t1 repair note The storage engine for the table doesn't support repair
29098
# check layout success: 1
29101
# check TRUNCATE success: 1
29102
# check layout success: 1
29103
# End usability test (inc/partition_check.inc)
29110
f_charbig VARCHAR(1000)
29113
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
29114
(PARTITION part_1 VALUES LESS THAN (0),
29115
PARTITION part_2 VALUES LESS THAN (5),
29116
PARTITION part_3 VALUES LESS THAN (10),
29117
PARTITION part_4 VALUES LESS THAN (2147483646));
29118
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29119
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29120
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29121
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
29122
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29123
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29124
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29125
# Start usability test (inc/partition_check.inc)
29127
SHOW CREATE TABLE t1;
29129
t1 CREATE TABLE `t1` (
29130
`f_int1` int(11) DEFAULT NULL,
29131
`f_int2` int(11) DEFAULT NULL,
29132
`f_char1` char(20) DEFAULT NULL,
29133
`f_char2` char(20) DEFAULT NULL,
29134
`f_charbig` varchar(1000) DEFAULT NULL
29135
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION part_1 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION part_2 VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION part_3 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION part_4 VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
29137
# check prerequisites-1 success: 1
29138
# check COUNT(*) success: 1
29139
# check MIN/MAX(f_int1) success: 1
29140
# check MIN/MAX(f_int2) success: 1
29141
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29142
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29143
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29144
WHERE f_int1 IN (2,3);
29145
# check prerequisites-3 success: 1
29146
DELETE FROM t1 WHERE f_charbig = 'delete me';
29147
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
29148
# check read via f_int1 success: 1
29149
# check read via f_int2 success: 1
29151
# check multiple-1 success: 1
29152
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29154
# check multiple-2 success: 1
29155
INSERT INTO t1 SELECT * FROM t0_template
29156
WHERE MOD(f_int1,3) = 0;
29158
# check multiple-3 success: 1
29159
UPDATE t1 SET f_int1 = f_int1 + @max_row
29160
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29161
AND @max_row_div2 + @max_row_div4;
29163
# check multiple-4 success: 1
29165
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29166
AND @max_row_div2 + @max_row_div4 + @max_row;
29168
# check multiple-5 success: 1
29169
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29171
SET f_int1 = @cur_value , f_int2 = @cur_value,
29172
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29173
f_charbig = '#SINGLE#';
29175
# check single-1 success: 1
29176
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29178
SET f_int1 = @cur_value , f_int2 = @cur_value,
29179
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29180
f_charbig = '#SINGLE#';
29182
# check single-2 success: 1
29183
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29184
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29185
UPDATE t1 SET f_int1 = @cur_value2
29186
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29188
# check single-3 success: 1
29189
SET @cur_value1= -1;
29190
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29191
UPDATE t1 SET f_int1 = @cur_value1
29192
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29194
# check single-4 success: 1
29195
SELECT MAX(f_int1) INTO @cur_value FROM t1;
29196
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29198
# check single-5 success: 1
29199
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29201
# check single-6 success: 1
29202
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29204
# check single-7 success: 1
29205
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
29206
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29207
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29208
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29209
f_charbig = '#NULL#';
29211
SET f_int1 = NULL , f_int2 = -@max_row,
29212
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29213
f_charbig = '#NULL#';
29214
# check null success: 1
29216
# check null-1 success: 1
29217
UPDATE t1 SET f_int1 = -@max_row
29218
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29219
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29221
# check null-2 success: 1
29222
UPDATE t1 SET f_int1 = NULL
29223
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29224
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29226
# check null-3 success: 1
29228
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29229
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29231
# check null-4 success: 1
29233
WHERE f_int1 = 0 AND f_int2 = 0
29234
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29235
AND f_charbig = '#NULL#';
29237
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29238
SELECT f_int1, f_int1, '', '', 'was inserted'
29239
FROM t0_template source_tab
29240
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29242
# check transactions-1 success: 1
29245
# check transactions-2 success: 1
29248
# check transactions-3 success: 1
29249
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29253
# check transactions-4 success: 1
29254
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29255
SELECT f_int1, f_int1, '', '', 'was inserted'
29256
FROM t0_template source_tab
29257
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29259
# check transactions-5 success: 1
29262
# check transactions-6 success: 1
29263
# INFO: Storage engine used for t1 seems to be transactional.
29266
# check transactions-7 success: 1
29267
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29269
SET @@session.sql_mode = 'traditional';
29270
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29271
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29272
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29273
'', '', 'was inserted' FROM t0_template
29274
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29275
ERROR 22012: Division by 0
29278
# check transactions-8 success: 1
29279
# INFO: Storage engine used for t1 seems to be able to revert
29280
# changes made by the failing statement.
29281
SET @@session.sql_mode = '';
29283
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29285
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29287
# check special-1 success: 1
29288
UPDATE t1 SET f_charbig = '';
29290
# check special-2 success: 1
29291
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29292
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29293
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29294
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29295
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29296
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29297
'just inserted' FROM t0_template
29298
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29299
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29301
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29302
f_charbig = 'updated by trigger'
29303
WHERE f_int1 = new.f_int1;
29305
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29306
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29307
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29309
# check trigger-1 success: 1
29310
DROP TRIGGER trg_1;
29311
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29312
f_int2 = CAST(f_char1 AS SIGNED INT),
29313
f_charbig = 'just inserted'
29314
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29316
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29317
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29318
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29319
'just inserted' FROM t0_template
29320
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29321
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29323
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29324
f_charbig = 'updated by trigger'
29325
WHERE f_int1 = new.f_int1;
29327
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29328
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29329
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29331
# check trigger-2 success: 1
29332
DROP TRIGGER trg_1;
29333
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29334
f_int2 = CAST(f_char1 AS SIGNED INT),
29335
f_charbig = 'just inserted'
29336
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29338
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29339
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29340
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29341
'just inserted' FROM t0_template
29342
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29343
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29345
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29346
f_charbig = 'updated by trigger'
29347
WHERE f_int1 = new.f_int1;
29349
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29350
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29352
# check trigger-3 success: 1
29353
DROP TRIGGER trg_1;
29354
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29355
f_int2 = CAST(f_char1 AS SIGNED INT),
29356
f_charbig = 'just inserted'
29357
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29359
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29360
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29361
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29362
'just inserted' FROM t0_template
29363
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29364
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29366
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29367
f_charbig = 'updated by trigger'
29368
WHERE f_int1 = - old.f_int1;
29370
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29371
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29373
# check trigger-4 success: 1
29374
DROP TRIGGER trg_1;
29375
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29376
f_int2 = CAST(f_char1 AS SIGNED INT),
29377
f_charbig = 'just inserted'
29378
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29380
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29381
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29382
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29383
'just inserted' FROM t0_template
29384
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29385
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29387
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29388
f_charbig = 'updated by trigger'
29389
WHERE f_int1 = new.f_int1;
29391
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29392
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29394
# check trigger-5 success: 1
29395
DROP TRIGGER trg_1;
29396
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29397
f_int2 = CAST(f_char1 AS SIGNED INT),
29398
f_charbig = 'just inserted'
29399
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29401
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29402
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29403
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29404
'just inserted' FROM t0_template
29405
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29406
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29408
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29409
f_charbig = 'updated by trigger'
29410
WHERE f_int1 = - old.f_int1;
29412
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29413
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29415
# check trigger-6 success: 1
29416
DROP TRIGGER trg_1;
29417
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29418
f_int2 = CAST(f_char1 AS SIGNED INT),
29419
f_charbig = 'just inserted'
29420
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29422
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29423
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29424
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29425
'just inserted' FROM t0_template
29426
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29427
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29429
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29430
f_charbig = 'updated by trigger'
29431
WHERE f_int1 = - old.f_int1;
29434
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29436
# check trigger-7 success: 1
29437
DROP TRIGGER trg_1;
29438
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29439
f_int2 = CAST(f_char1 AS SIGNED INT),
29440
f_charbig = 'just inserted'
29441
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29443
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29444
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29445
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29446
'just inserted' FROM t0_template
29447
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29448
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29450
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29451
f_charbig = 'updated by trigger'
29452
WHERE f_int1 = - old.f_int1;
29455
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29457
# check trigger-8 success: 1
29458
DROP TRIGGER trg_1;
29459
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29460
f_int2 = CAST(f_char1 AS SIGNED INT),
29461
f_charbig = 'just inserted'
29462
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29464
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29466
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29467
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29469
SET new.f_int1 = old.f_int1 + @max_row,
29470
new.f_int2 = old.f_int2 - @max_row,
29471
new.f_charbig = '####updated per update trigger####';
29474
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29475
f_charbig = '####updated per update statement itself####';
29477
# check trigger-9 success: 1
29478
DROP TRIGGER trg_2;
29479
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29480
f_int2 = CAST(f_char1 AS SIGNED INT),
29481
f_charbig = CONCAT('===',f_char1,'===');
29482
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29484
SET new.f_int1 = new.f_int1 + @max_row,
29485
new.f_int2 = new.f_int2 - @max_row,
29486
new.f_charbig = '####updated per update trigger####';
29489
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29490
f_charbig = '####updated per update statement itself####';
29492
# check trigger-10 success: 1
29493
DROP TRIGGER trg_2;
29494
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29495
f_int2 = CAST(f_char1 AS SIGNED INT),
29496
f_charbig = CONCAT('===',f_char1,'===');
29497
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29499
SET new.f_int1 = @my_max1 + @counter,
29500
new.f_int2 = @my_min2 - @counter,
29501
new.f_charbig = '####updated per insert trigger####';
29502
SET @counter = @counter + 1;
29505
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29506
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29507
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29508
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29509
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29511
DROP TRIGGER trg_3;
29513
# check trigger-11 success: 1
29515
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29516
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29517
AND f_charbig = '####updated per insert trigger####';
29518
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29520
SET new.f_int1 = @my_max1 + @counter,
29521
new.f_int2 = @my_min2 - @counter,
29522
new.f_charbig = '####updated per insert trigger####';
29523
SET @counter = @counter + 1;
29526
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29527
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29528
SELECT CAST(f_int1 AS CHAR),
29529
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29530
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29532
DROP TRIGGER trg_3;
29534
# check trigger-12 success: 1
29536
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29537
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29538
AND f_charbig = '####updated per insert trigger####';
29540
Table Op Msg_type Msg_text
29541
test.t1 analyze status OK
29542
CHECK TABLE t1 EXTENDED;
29543
Table Op Msg_type Msg_text
29544
test.t1 check status OK
29545
CHECKSUM TABLE t1 EXTENDED;
29547
test.t1 <some_value>
29549
Table Op Msg_type Msg_text
29550
test.t1 optimize status OK
29551
# check layout success: 1
29552
REPAIR TABLE t1 EXTENDED;
29553
Table Op Msg_type Msg_text
29554
test.t1 repair note The storage engine for the table doesn't support repair
29555
# check layout success: 1
29558
# check TRUNCATE success: 1
29559
# check layout success: 1
29560
# End usability test (inc/partition_check.inc)
29567
f_charbig VARCHAR(1000)
29570
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
29571
(PARTITION part_1 VALUES LESS THAN (0)
29572
(SUBPARTITION subpart11, SUBPARTITION subpart12),
29573
PARTITION part_2 VALUES LESS THAN (5)
29574
(SUBPARTITION subpart21, SUBPARTITION subpart22),
29575
PARTITION part_3 VALUES LESS THAN (10)
29576
(SUBPARTITION subpart31, SUBPARTITION subpart32),
29577
PARTITION part_4 VALUES LESS THAN (2147483646)
29578
(SUBPARTITION subpart41, SUBPARTITION subpart42));
29579
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29580
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29581
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29582
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
29583
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29584
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29585
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29586
# Start usability test (inc/partition_check.inc)
29588
SHOW CREATE TABLE t1;
29590
t1 CREATE TABLE `t1` (
29591
`f_int1` int(11) DEFAULT NULL,
29592
`f_int2` int(11) DEFAULT NULL,
29593
`f_char1` char(20) DEFAULT NULL,
29594
`f_char2` char(20) DEFAULT NULL,
29595
`f_charbig` varchar(1000) DEFAULT NULL
29596
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part_1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part_2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part_3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part_4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
29598
# check prerequisites-1 success: 1
29599
# check COUNT(*) success: 1
29600
# check MIN/MAX(f_int1) success: 1
29601
# check MIN/MAX(f_int2) success: 1
29602
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29603
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29604
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29605
WHERE f_int1 IN (2,3);
29606
# check prerequisites-3 success: 1
29607
DELETE FROM t1 WHERE f_charbig = 'delete me';
29608
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
29609
# check read via f_int1 success: 1
29610
# check read via f_int2 success: 1
29612
# check multiple-1 success: 1
29613
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29615
# check multiple-2 success: 1
29616
INSERT INTO t1 SELECT * FROM t0_template
29617
WHERE MOD(f_int1,3) = 0;
29619
# check multiple-3 success: 1
29620
UPDATE t1 SET f_int1 = f_int1 + @max_row
29621
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29622
AND @max_row_div2 + @max_row_div4;
29624
# check multiple-4 success: 1
29626
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29627
AND @max_row_div2 + @max_row_div4 + @max_row;
29629
# check multiple-5 success: 1
29630
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29632
SET f_int1 = @cur_value , f_int2 = @cur_value,
29633
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29634
f_charbig = '#SINGLE#';
29636
# check single-1 success: 1
29637
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29639
SET f_int1 = @cur_value , f_int2 = @cur_value,
29640
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29641
f_charbig = '#SINGLE#';
29643
# check single-2 success: 1
29644
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29645
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29646
UPDATE t1 SET f_int1 = @cur_value2
29647
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29649
# check single-3 success: 1
29650
SET @cur_value1= -1;
29651
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29652
UPDATE t1 SET f_int1 = @cur_value1
29653
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29655
# check single-4 success: 1
29656
SELECT MAX(f_int1) INTO @cur_value FROM t1;
29657
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29659
# check single-5 success: 1
29660
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29662
# check single-6 success: 1
29663
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29664
ERROR HY000: Table has no partition for value 2147483647
29665
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29666
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29667
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29668
f_charbig = '#NULL#';
29670
SET f_int1 = NULL , f_int2 = -@max_row,
29671
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29672
f_charbig = '#NULL#';
29673
# check null success: 1
29675
# check null-1 success: 1
29676
UPDATE t1 SET f_int1 = -@max_row
29677
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29678
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29680
# check null-2 success: 1
29681
UPDATE t1 SET f_int1 = NULL
29682
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29683
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29685
# check null-3 success: 1
29687
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29688
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29690
# check null-4 success: 1
29692
WHERE f_int1 = 0 AND f_int2 = 0
29693
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29694
AND f_charbig = '#NULL#';
29696
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29697
SELECT f_int1, f_int1, '', '', 'was inserted'
29698
FROM t0_template source_tab
29699
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29701
# check transactions-1 success: 1
29704
# check transactions-2 success: 1
29707
# check transactions-3 success: 1
29708
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29712
# check transactions-4 success: 1
29713
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29714
SELECT f_int1, f_int1, '', '', 'was inserted'
29715
FROM t0_template source_tab
29716
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29718
# check transactions-5 success: 1
29721
# check transactions-6 success: 1
29722
# INFO: Storage engine used for t1 seems to be transactional.
29725
# check transactions-7 success: 1
29726
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29728
SET @@session.sql_mode = 'traditional';
29729
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29730
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29731
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29732
'', '', 'was inserted' FROM t0_template
29733
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29734
ERROR 22012: Division by 0
29737
# check transactions-8 success: 1
29738
# INFO: Storage engine used for t1 seems to be able to revert
29739
# changes made by the failing statement.
29740
SET @@session.sql_mode = '';
29742
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29744
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29746
# check special-1 success: 1
29747
UPDATE t1 SET f_charbig = '';
29749
# check special-2 success: 1
29750
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29751
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29752
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29753
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29754
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29755
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29756
'just inserted' FROM t0_template
29757
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29758
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29760
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29761
f_charbig = 'updated by trigger'
29762
WHERE f_int1 = new.f_int1;
29764
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29765
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29768
# check trigger-1 success: 1
29769
DROP TRIGGER trg_1;
29770
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29771
f_int2 = CAST(f_char1 AS SIGNED INT),
29772
f_charbig = 'just inserted'
29773
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29775
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29776
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29777
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29778
'just inserted' FROM t0_template
29779
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29780
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29782
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29783
f_charbig = 'updated by trigger'
29784
WHERE f_int1 = new.f_int1;
29786
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29787
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29788
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29790
# check trigger-2 success: 1
29791
DROP TRIGGER trg_1;
29792
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29793
f_int2 = CAST(f_char1 AS SIGNED INT),
29794
f_charbig = 'just inserted'
29795
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29797
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29798
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29799
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29800
'just inserted' FROM t0_template
29801
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29802
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29804
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29805
f_charbig = 'updated by trigger'
29806
WHERE f_int1 = new.f_int1;
29808
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29809
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29811
# check trigger-3 success: 1
29812
DROP TRIGGER trg_1;
29813
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29814
f_int2 = CAST(f_char1 AS SIGNED INT),
29815
f_charbig = 'just inserted'
29816
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29818
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29819
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29820
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29821
'just inserted' FROM t0_template
29822
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29823
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29825
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29826
f_charbig = 'updated by trigger'
29827
WHERE f_int1 = - old.f_int1;
29829
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29830
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29832
# check trigger-4 success: 1
29833
DROP TRIGGER trg_1;
29834
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29835
f_int2 = CAST(f_char1 AS SIGNED INT),
29836
f_charbig = 'just inserted'
29837
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29839
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29840
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29841
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29842
'just inserted' FROM t0_template
29843
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29844
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29846
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29847
f_charbig = 'updated by trigger'
29848
WHERE f_int1 = new.f_int1;
29850
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29851
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29853
# check trigger-5 success: 1
29854
DROP TRIGGER trg_1;
29855
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29856
f_int2 = CAST(f_char1 AS SIGNED INT),
29857
f_charbig = 'just inserted'
29858
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29860
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29861
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29862
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29863
'just inserted' FROM t0_template
29864
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29865
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29867
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29868
f_charbig = 'updated by trigger'
29869
WHERE f_int1 = - old.f_int1;
29871
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29872
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29874
# check trigger-6 success: 1
29875
DROP TRIGGER trg_1;
29876
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29877
f_int2 = CAST(f_char1 AS SIGNED INT),
29878
f_charbig = 'just inserted'
29879
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29881
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29882
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29883
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29884
'just inserted' FROM t0_template
29885
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29886
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29888
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29889
f_charbig = 'updated by trigger'
29890
WHERE f_int1 = - old.f_int1;
29893
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29895
# check trigger-7 success: 1
29896
DROP TRIGGER trg_1;
29897
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29898
f_int2 = CAST(f_char1 AS SIGNED INT),
29899
f_charbig = 'just inserted'
29900
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29902
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29903
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29904
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29905
'just inserted' FROM t0_template
29906
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29907
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29909
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29910
f_charbig = 'updated by trigger'
29911
WHERE f_int1 = - old.f_int1;
29914
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29916
# check trigger-8 success: 1
29917
DROP TRIGGER trg_1;
29918
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29919
f_int2 = CAST(f_char1 AS SIGNED INT),
29920
f_charbig = 'just inserted'
29921
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29923
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29925
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29926
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29928
SET new.f_int1 = old.f_int1 + @max_row,
29929
new.f_int2 = old.f_int2 - @max_row,
29930
new.f_charbig = '####updated per update trigger####';
29933
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29934
f_charbig = '####updated per update statement itself####';
29936
# check trigger-9 success: 1
29937
DROP TRIGGER trg_2;
29938
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29939
f_int2 = CAST(f_char1 AS SIGNED INT),
29940
f_charbig = CONCAT('===',f_char1,'===');
29941
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29943
SET new.f_int1 = new.f_int1 + @max_row,
29944
new.f_int2 = new.f_int2 - @max_row,
29945
new.f_charbig = '####updated per update trigger####';
29948
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29949
f_charbig = '####updated per update statement itself####';
29951
# check trigger-10 success: 1
29952
DROP TRIGGER trg_2;
29953
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29954
f_int2 = CAST(f_char1 AS SIGNED INT),
29955
f_charbig = CONCAT('===',f_char1,'===');
29956
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29958
SET new.f_int1 = @my_max1 + @counter,
29959
new.f_int2 = @my_min2 - @counter,
29960
new.f_charbig = '####updated per insert trigger####';
29961
SET @counter = @counter + 1;
29964
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29965
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29966
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29967
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29968
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29970
DROP TRIGGER trg_3;
29972
# check trigger-11 success: 1
29974
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29975
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29976
AND f_charbig = '####updated per insert trigger####';
29977
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29979
SET new.f_int1 = @my_max1 + @counter,
29980
new.f_int2 = @my_min2 - @counter,
29981
new.f_charbig = '####updated per insert trigger####';
29982
SET @counter = @counter + 1;
29985
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29986
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29987
SELECT CAST(f_int1 AS CHAR),
29988
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29989
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29991
DROP TRIGGER trg_3;
29993
# check trigger-12 success: 1
29995
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29996
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29997
AND f_charbig = '####updated per insert trigger####';
29999
Table Op Msg_type Msg_text
30000
test.t1 analyze status OK
30001
CHECK TABLE t1 EXTENDED;
30002
Table Op Msg_type Msg_text
30003
test.t1 check status OK
30004
CHECKSUM TABLE t1 EXTENDED;
30006
test.t1 <some_value>
30008
Table Op Msg_type Msg_text
30009
test.t1 optimize status OK
30010
# check layout success: 1
30011
REPAIR TABLE t1 EXTENDED;
30012
Table Op Msg_type Msg_text
30013
test.t1 repair note The storage engine for the table doesn't support repair
30014
# check layout success: 1
30017
# check TRUNCATE success: 1
30018
# check layout success: 1
30019
# End usability test (inc/partition_check.inc)
30026
f_charbig VARCHAR(1000)
30029
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
30030
(PARTITION part_1 VALUES IN (0)
30031
(SUBPARTITION sp11, SUBPARTITION sp12),
30032
PARTITION part_2 VALUES IN (1)
30033
(SUBPARTITION sp21, SUBPARTITION sp22),
30034
PARTITION part_3 VALUES IN (2)
30035
(SUBPARTITION sp31, SUBPARTITION sp32),
30036
PARTITION part_4 VALUES IN (NULL)
30037
(SUBPARTITION sp41, SUBPARTITION sp42));
30038
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30039
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30040
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30041
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
30042
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30043
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30044
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30045
# Start usability test (inc/partition_check.inc)
30047
SHOW CREATE TABLE t1;
30049
t1 CREATE TABLE `t1` (
30050
`f_int1` int(11) DEFAULT NULL,
30051
`f_int2` int(11) DEFAULT NULL,
30052
`f_char1` char(20) DEFAULT NULL,
30053
`f_char2` char(20) DEFAULT NULL,
30054
`f_charbig` varchar(1000) DEFAULT NULL
30055
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part_1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part_2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part_3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part_4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
30057
# check prerequisites-1 success: 1
30058
# check COUNT(*) success: 1
30059
# check MIN/MAX(f_int1) success: 1
30060
# check MIN/MAX(f_int2) success: 1
30061
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30062
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30063
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30064
WHERE f_int1 IN (2,3);
30065
# check prerequisites-3 success: 1
30066
DELETE FROM t1 WHERE f_charbig = 'delete me';
30067
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
30068
# check read via f_int1 success: 1
30069
# check read via f_int2 success: 1
30071
# check multiple-1 success: 1
30072
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30074
# check multiple-2 success: 1
30075
INSERT INTO t1 SELECT * FROM t0_template
30076
WHERE MOD(f_int1,3) = 0;
30078
# check multiple-3 success: 1
30079
UPDATE t1 SET f_int1 = f_int1 + @max_row
30080
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30081
AND @max_row_div2 + @max_row_div4;
30083
# check multiple-4 success: 1
30085
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30086
AND @max_row_div2 + @max_row_div4 + @max_row;
30088
# check multiple-5 success: 1
30089
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30091
SET f_int1 = @cur_value , f_int2 = @cur_value,
30092
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30093
f_charbig = '#SINGLE#';
30095
# check single-1 success: 1
30096
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30098
SET f_int1 = @cur_value , f_int2 = @cur_value,
30099
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30100
f_charbig = '#SINGLE#';
30102
# check single-2 success: 1
30103
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30104
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30105
UPDATE t1 SET f_int1 = @cur_value2
30106
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30108
# check single-3 success: 1
30109
SET @cur_value1= -1;
30110
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30111
UPDATE t1 SET f_int1 = @cur_value1
30112
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30114
# check single-4 success: 1
30115
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30116
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30118
# check single-5 success: 1
30119
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30121
# check single-6 success: 1
30122
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30124
# check single-7 success: 1
30125
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
30126
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30127
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30128
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30129
f_charbig = '#NULL#';
30131
SET f_int1 = NULL , f_int2 = -@max_row,
30132
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30133
f_charbig = '#NULL#';
30134
# check null success: 1
30136
# check null-1 success: 1
30137
UPDATE t1 SET f_int1 = -@max_row
30138
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30139
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30141
# check null-2 success: 1
30142
UPDATE t1 SET f_int1 = NULL
30143
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30144
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30146
# check null-3 success: 1
30148
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30149
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30151
# check null-4 success: 1
30153
WHERE f_int1 = 0 AND f_int2 = 0
30154
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30155
AND f_charbig = '#NULL#';
30157
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30158
SELECT f_int1, f_int1, '', '', 'was inserted'
30159
FROM t0_template source_tab
30160
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30162
# check transactions-1 success: 1
30165
# check transactions-2 success: 1
30168
# check transactions-3 success: 1
30169
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30173
# check transactions-4 success: 1
30174
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30175
SELECT f_int1, f_int1, '', '', 'was inserted'
30176
FROM t0_template source_tab
30177
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30179
# check transactions-5 success: 1
30182
# check transactions-6 success: 1
30183
# INFO: Storage engine used for t1 seems to be transactional.
30186
# check transactions-7 success: 1
30187
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30189
SET @@session.sql_mode = 'traditional';
30190
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30191
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30192
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30193
'', '', 'was inserted' FROM t0_template
30194
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30195
ERROR 22012: Division by 0
30198
# check transactions-8 success: 1
30199
# INFO: Storage engine used for t1 seems to be able to revert
30200
# changes made by the failing statement.
30201
SET @@session.sql_mode = '';
30203
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30205
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30207
# check special-1 success: 1
30208
UPDATE t1 SET f_charbig = '';
30210
# check special-2 success: 1
30211
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30212
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30213
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30215
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30216
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30217
'just inserted' FROM t0_template
30218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30219
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30221
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30222
f_charbig = 'updated by trigger'
30223
WHERE f_int1 = new.f_int1;
30225
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30226
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30227
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30229
# check trigger-1 success: 1
30230
DROP TRIGGER trg_1;
30231
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30232
f_int2 = CAST(f_char1 AS SIGNED INT),
30233
f_charbig = 'just inserted'
30234
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30236
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30237
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30238
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30239
'just inserted' FROM t0_template
30240
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30241
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30243
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30244
f_charbig = 'updated by trigger'
30245
WHERE f_int1 = new.f_int1;
30247
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30248
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30249
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30251
# check trigger-2 success: 1
30252
DROP TRIGGER trg_1;
30253
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30254
f_int2 = CAST(f_char1 AS SIGNED INT),
30255
f_charbig = 'just inserted'
30256
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30258
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30259
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30260
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30261
'just inserted' FROM t0_template
30262
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30263
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30265
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30266
f_charbig = 'updated by trigger'
30267
WHERE f_int1 = new.f_int1;
30269
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30270
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30272
# check trigger-3 success: 1
30273
DROP TRIGGER trg_1;
30274
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30275
f_int2 = CAST(f_char1 AS SIGNED INT),
30276
f_charbig = 'just inserted'
30277
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30279
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30280
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30281
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30282
'just inserted' FROM t0_template
30283
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30284
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30286
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30287
f_charbig = 'updated by trigger'
30288
WHERE f_int1 = - old.f_int1;
30290
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30291
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30293
# check trigger-4 success: 1
30294
DROP TRIGGER trg_1;
30295
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30296
f_int2 = CAST(f_char1 AS SIGNED INT),
30297
f_charbig = 'just inserted'
30298
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30300
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30301
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30302
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30303
'just inserted' FROM t0_template
30304
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30305
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30307
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30308
f_charbig = 'updated by trigger'
30309
WHERE f_int1 = new.f_int1;
30311
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30312
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30314
# check trigger-5 success: 1
30315
DROP TRIGGER trg_1;
30316
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30317
f_int2 = CAST(f_char1 AS SIGNED INT),
30318
f_charbig = 'just inserted'
30319
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30321
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30322
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30323
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30324
'just inserted' FROM t0_template
30325
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30326
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30328
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30329
f_charbig = 'updated by trigger'
30330
WHERE f_int1 = - old.f_int1;
30332
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30333
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30335
# check trigger-6 success: 1
30336
DROP TRIGGER trg_1;
30337
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30338
f_int2 = CAST(f_char1 AS SIGNED INT),
30339
f_charbig = 'just inserted'
30340
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30342
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30343
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30344
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30345
'just inserted' FROM t0_template
30346
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30347
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30349
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30350
f_charbig = 'updated by trigger'
30351
WHERE f_int1 = - old.f_int1;
30354
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30356
# check trigger-7 success: 1
30357
DROP TRIGGER trg_1;
30358
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30359
f_int2 = CAST(f_char1 AS SIGNED INT),
30360
f_charbig = 'just inserted'
30361
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30363
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30364
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30365
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30366
'just inserted' FROM t0_template
30367
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30368
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30370
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30371
f_charbig = 'updated by trigger'
30372
WHERE f_int1 = - old.f_int1;
30375
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30377
# check trigger-8 success: 1
30378
DROP TRIGGER trg_1;
30379
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30380
f_int2 = CAST(f_char1 AS SIGNED INT),
30381
f_charbig = 'just inserted'
30382
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30384
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30386
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30387
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30389
SET new.f_int1 = old.f_int1 + @max_row,
30390
new.f_int2 = old.f_int2 - @max_row,
30391
new.f_charbig = '####updated per update trigger####';
30394
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30395
f_charbig = '####updated per update statement itself####';
30397
# check trigger-9 success: 1
30398
DROP TRIGGER trg_2;
30399
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30400
f_int2 = CAST(f_char1 AS SIGNED INT),
30401
f_charbig = CONCAT('===',f_char1,'===');
30402
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30404
SET new.f_int1 = new.f_int1 + @max_row,
30405
new.f_int2 = new.f_int2 - @max_row,
30406
new.f_charbig = '####updated per update trigger####';
30409
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30410
f_charbig = '####updated per update statement itself####';
30412
# check trigger-10 success: 1
30413
DROP TRIGGER trg_2;
30414
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30415
f_int2 = CAST(f_char1 AS SIGNED INT),
30416
f_charbig = CONCAT('===',f_char1,'===');
30417
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30419
SET new.f_int1 = @my_max1 + @counter,
30420
new.f_int2 = @my_min2 - @counter,
30421
new.f_charbig = '####updated per insert trigger####';
30422
SET @counter = @counter + 1;
30425
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30426
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30427
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30428
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30429
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30431
DROP TRIGGER trg_3;
30433
# check trigger-11 success: 1
30435
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30436
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30437
AND f_charbig = '####updated per insert trigger####';
30438
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30440
SET new.f_int1 = @my_max1 + @counter,
30441
new.f_int2 = @my_min2 - @counter,
30442
new.f_charbig = '####updated per insert trigger####';
30443
SET @counter = @counter + 1;
30446
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30447
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30448
SELECT CAST(f_int1 AS CHAR),
30449
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30450
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30452
DROP TRIGGER trg_3;
30454
# check trigger-12 success: 1
30456
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30457
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30458
AND f_charbig = '####updated per insert trigger####';
30460
Table Op Msg_type Msg_text
30461
test.t1 analyze status OK
30462
CHECK TABLE t1 EXTENDED;
30463
Table Op Msg_type Msg_text
30464
test.t1 check status OK
30465
CHECKSUM TABLE t1 EXTENDED;
30467
test.t1 <some_value>
30469
Table Op Msg_type Msg_text
30470
test.t1 optimize status OK
30471
# check layout success: 1
30472
REPAIR TABLE t1 EXTENDED;
30473
Table Op Msg_type Msg_text
30474
test.t1 repair note The storage engine for the table doesn't support repair
30475
# check layout success: 1
30478
# check TRUNCATE success: 1
30479
# check layout success: 1
30480
# End usability test (inc/partition_check.inc)
30487
f_charbig VARCHAR(1000)
30490
PARTITION BY LIST(ABS(MOD(f_int1,2)))
30491
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
30492
(PARTITION part_1 VALUES IN (0),
30493
PARTITION part_2 VALUES IN (1),
30494
PARTITION part_3 VALUES IN (NULL));
30495
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30496
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30497
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30498
ALTER TABLE t1 REBUILD PARTITION part_1,part_2;
30499
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30500
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30501
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30502
# Start usability test (inc/partition_check.inc)
30504
SHOW CREATE TABLE t1;
30506
t1 CREATE TABLE `t1` (
30507
`f_int1` int(11) DEFAULT NULL,
30508
`f_int2` int(11) DEFAULT NULL,
30509
`f_char1` char(20) DEFAULT NULL,
30510
`f_char2` char(20) DEFAULT NULL,
30511
`f_charbig` varchar(1000) DEFAULT NULL
30512
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part_1 VALUES IN (0) ENGINE = InnoDB, PARTITION part_2 VALUES IN (1) ENGINE = InnoDB, PARTITION part_3 VALUES IN (NULL) ENGINE = InnoDB) */
30514
# check prerequisites-1 success: 1
30515
# check COUNT(*) success: 1
30516
# check MIN/MAX(f_int1) success: 1
30517
# check MIN/MAX(f_int2) success: 1
30518
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30519
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30520
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30521
WHERE f_int1 IN (2,3);
30522
# check prerequisites-3 success: 1
30523
DELETE FROM t1 WHERE f_charbig = 'delete me';
30524
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
30525
# check read via f_int1 success: 1
30526
# check read via f_int2 success: 1
30528
# check multiple-1 success: 1
30529
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30531
# check multiple-2 success: 1
30532
INSERT INTO t1 SELECT * FROM t0_template
30533
WHERE MOD(f_int1,3) = 0;
30535
# check multiple-3 success: 1
30536
UPDATE t1 SET f_int1 = f_int1 + @max_row
30537
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30538
AND @max_row_div2 + @max_row_div4;
30540
# check multiple-4 success: 1
30542
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30543
AND @max_row_div2 + @max_row_div4 + @max_row;
30545
# check multiple-5 success: 1
30546
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30548
SET f_int1 = @cur_value , f_int2 = @cur_value,
30549
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30550
f_charbig = '#SINGLE#';
30552
# check single-1 success: 1
30553
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30555
SET f_int1 = @cur_value , f_int2 = @cur_value,
30556
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30557
f_charbig = '#SINGLE#';
30559
# check single-2 success: 1
30560
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30561
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30562
UPDATE t1 SET f_int1 = @cur_value2
30563
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30565
# check single-3 success: 1
30566
SET @cur_value1= -1;
30567
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30568
UPDATE t1 SET f_int1 = @cur_value1
30569
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30571
# check single-4 success: 1
30572
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30573
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30575
# check single-5 success: 1
30576
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30578
# check single-6 success: 1
30579
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30581
# check single-7 success: 1
30582
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
30583
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30584
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30585
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30586
f_charbig = '#NULL#';
30588
SET f_int1 = NULL , f_int2 = -@max_row,
30589
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30590
f_charbig = '#NULL#';
30591
# check null success: 1
30593
# check null-1 success: 1
30594
UPDATE t1 SET f_int1 = -@max_row
30595
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30596
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30598
# check null-2 success: 1
30599
UPDATE t1 SET f_int1 = NULL
30600
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30601
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30603
# check null-3 success: 1
30605
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30606
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30608
# check null-4 success: 1
30610
WHERE f_int1 = 0 AND f_int2 = 0
30611
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30612
AND f_charbig = '#NULL#';
30614
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30615
SELECT f_int1, f_int1, '', '', 'was inserted'
30616
FROM t0_template source_tab
30617
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30619
# check transactions-1 success: 1
30622
# check transactions-2 success: 1
30625
# check transactions-3 success: 1
30626
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30630
# check transactions-4 success: 1
30631
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30632
SELECT f_int1, f_int1, '', '', 'was inserted'
30633
FROM t0_template source_tab
30634
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30636
# check transactions-5 success: 1
30639
# check transactions-6 success: 1
30640
# INFO: Storage engine used for t1 seems to be transactional.
30643
# check transactions-7 success: 1
30644
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30646
SET @@session.sql_mode = 'traditional';
30647
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30648
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30649
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30650
'', '', 'was inserted' FROM t0_template
30651
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30652
ERROR 22012: Division by 0
30655
# check transactions-8 success: 1
30656
# INFO: Storage engine used for t1 seems to be able to revert
30657
# changes made by the failing statement.
30658
SET @@session.sql_mode = '';
30660
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30662
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30664
# check special-1 success: 1
30665
UPDATE t1 SET f_charbig = '';
30667
# check special-2 success: 1
30668
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30669
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30670
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30671
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30672
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30673
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30674
'just inserted' FROM t0_template
30675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30676
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30678
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30679
f_charbig = 'updated by trigger'
30680
WHERE f_int1 = new.f_int1;
30682
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30683
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30684
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30686
# check trigger-1 success: 1
30687
DROP TRIGGER trg_1;
30688
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30689
f_int2 = CAST(f_char1 AS SIGNED INT),
30690
f_charbig = 'just inserted'
30691
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30693
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30694
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30695
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30696
'just inserted' FROM t0_template
30697
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30698
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30700
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30701
f_charbig = 'updated by trigger'
30702
WHERE f_int1 = new.f_int1;
30704
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30705
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30706
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30708
# check trigger-2 success: 1
30709
DROP TRIGGER trg_1;
30710
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30711
f_int2 = CAST(f_char1 AS SIGNED INT),
30712
f_charbig = 'just inserted'
30713
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30715
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30716
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30717
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30718
'just inserted' FROM t0_template
30719
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30720
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30722
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30723
f_charbig = 'updated by trigger'
30724
WHERE f_int1 = new.f_int1;
30726
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30727
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30729
# check trigger-3 success: 1
30730
DROP TRIGGER trg_1;
30731
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30732
f_int2 = CAST(f_char1 AS SIGNED INT),
30733
f_charbig = 'just inserted'
30734
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30736
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30737
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30738
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30739
'just inserted' FROM t0_template
30740
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30741
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30743
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30744
f_charbig = 'updated by trigger'
30745
WHERE f_int1 = - old.f_int1;
30747
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30748
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30750
# check trigger-4 success: 1
30751
DROP TRIGGER trg_1;
30752
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30753
f_int2 = CAST(f_char1 AS SIGNED INT),
30754
f_charbig = 'just inserted'
30755
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30757
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30758
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30759
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30760
'just inserted' FROM t0_template
30761
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30762
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30764
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30765
f_charbig = 'updated by trigger'
30766
WHERE f_int1 = new.f_int1;
30768
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30769
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30771
# check trigger-5 success: 1
30772
DROP TRIGGER trg_1;
30773
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30774
f_int2 = CAST(f_char1 AS SIGNED INT),
30775
f_charbig = 'just inserted'
30776
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30778
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30779
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30780
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30781
'just inserted' FROM t0_template
30782
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30783
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30785
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30786
f_charbig = 'updated by trigger'
30787
WHERE f_int1 = - old.f_int1;
30789
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30790
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30792
# check trigger-6 success: 1
30793
DROP TRIGGER trg_1;
30794
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30795
f_int2 = CAST(f_char1 AS SIGNED INT),
30796
f_charbig = 'just inserted'
30797
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30799
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30800
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30801
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30802
'just inserted' FROM t0_template
30803
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30804
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30806
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30807
f_charbig = 'updated by trigger'
30808
WHERE f_int1 = - old.f_int1;
30811
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30813
# check trigger-7 success: 1
30814
DROP TRIGGER trg_1;
30815
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30816
f_int2 = CAST(f_char1 AS SIGNED INT),
30817
f_charbig = 'just inserted'
30818
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30820
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30821
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30822
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30823
'just inserted' FROM t0_template
30824
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30825
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30827
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30828
f_charbig = 'updated by trigger'
30829
WHERE f_int1 = - old.f_int1;
30832
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30834
# check trigger-8 success: 1
30835
DROP TRIGGER trg_1;
30836
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30837
f_int2 = CAST(f_char1 AS SIGNED INT),
30838
f_charbig = 'just inserted'
30839
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30841
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30843
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30844
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30846
SET new.f_int1 = old.f_int1 + @max_row,
30847
new.f_int2 = old.f_int2 - @max_row,
30848
new.f_charbig = '####updated per update trigger####';
30851
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30852
f_charbig = '####updated per update statement itself####';
30854
# check trigger-9 success: 1
30855
DROP TRIGGER trg_2;
30856
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30857
f_int2 = CAST(f_char1 AS SIGNED INT),
30858
f_charbig = CONCAT('===',f_char1,'===');
30859
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30861
SET new.f_int1 = new.f_int1 + @max_row,
30862
new.f_int2 = new.f_int2 - @max_row,
30863
new.f_charbig = '####updated per update trigger####';
30866
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30867
f_charbig = '####updated per update statement itself####';
30869
# check trigger-10 success: 1
30870
DROP TRIGGER trg_2;
30871
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30872
f_int2 = CAST(f_char1 AS SIGNED INT),
30873
f_charbig = CONCAT('===',f_char1,'===');
30874
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30876
SET new.f_int1 = @my_max1 + @counter,
30877
new.f_int2 = @my_min2 - @counter,
30878
new.f_charbig = '####updated per insert trigger####';
30879
SET @counter = @counter + 1;
30882
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30883
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30884
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30885
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30886
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30888
DROP TRIGGER trg_3;
30890
# check trigger-11 success: 1
30892
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30893
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30894
AND f_charbig = '####updated per insert trigger####';
30895
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30897
SET new.f_int1 = @my_max1 + @counter,
30898
new.f_int2 = @my_min2 - @counter,
30899
new.f_charbig = '####updated per insert trigger####';
30900
SET @counter = @counter + 1;
30903
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30904
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30905
SELECT CAST(f_int1 AS CHAR),
30906
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30907
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30909
DROP TRIGGER trg_3;
30911
# check trigger-12 success: 1
30913
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30914
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30915
AND f_charbig = '####updated per insert trigger####';
30917
Table Op Msg_type Msg_text
30918
test.t1 analyze status OK
30919
CHECK TABLE t1 EXTENDED;
30920
Table Op Msg_type Msg_text
30921
test.t1 check status OK
30922
CHECKSUM TABLE t1 EXTENDED;
30924
test.t1 <some_value>
30926
Table Op Msg_type Msg_text
30927
test.t1 optimize status OK
30928
# check layout success: 1
30929
REPAIR TABLE t1 EXTENDED;
30930
Table Op Msg_type Msg_text
30931
test.t1 repair note The storage engine for the table doesn't support repair
30932
# check layout success: 1
30935
# check TRUNCATE success: 1
30936
# check layout success: 1
30937
# End usability test (inc/partition_check.inc)
30939
# 5.3 ALTER ... REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
30940
DROP TABLE IF EXISTS t1;
30946
f_charbig VARCHAR(1000)
30949
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
30950
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30951
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30952
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30953
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
30954
ERROR HY000: Error in list of partitions to REBUILD
30961
f_charbig VARCHAR(1000)
30964
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
30965
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30966
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30967
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30968
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
30969
ERROR HY000: Error in list of partitions to REBUILD
30976
f_charbig VARCHAR(1000)
30979
PARTITION BY LIST(MOD(f_int1,4))
30980
(PARTITION part_3 VALUES IN (-3),
30981
PARTITION part_2 VALUES IN (-2),
30982
PARTITION part_1 VALUES IN (-1),
30983
PARTITION part_N VALUES IN (NULL),
30984
PARTITION part0 VALUES IN (0),
30985
PARTITION part1 VALUES IN (1),
30986
PARTITION part2 VALUES IN (2),
30987
PARTITION part3 VALUES IN (3));
30988
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30989
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30990
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30991
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
30992
ERROR HY000: Error in list of partitions to REBUILD
30999
f_charbig VARCHAR(1000)
31002
PARTITION BY RANGE(f_int1)
31003
(PARTITION parta VALUES LESS THAN (0),
31004
PARTITION part_1 VALUES LESS THAN (5),
31005
PARTITION part_2 VALUES LESS THAN (10),
31006
PARTITION part_3 VALUES LESS THAN (10 + 5),
31007
PARTITION part_4 VALUES LESS THAN (20),
31008
PARTITION part_5 VALUES LESS THAN (2147483646));
31009
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31010
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31011
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31012
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
31013
ERROR HY000: Error in list of partitions to REBUILD
31020
f_charbig VARCHAR(1000)
31023
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
31024
(PARTITION part_1 VALUES LESS THAN (0),
31025
PARTITION part_2 VALUES LESS THAN (5),
31026
PARTITION part_3 VALUES LESS THAN (10),
31027
PARTITION part_4 VALUES LESS THAN (2147483646));
31028
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31029
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31030
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31031
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
31032
ERROR HY000: Error in list of partitions to REBUILD
31039
f_charbig VARCHAR(1000)
31042
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
31043
(PARTITION part_1 VALUES LESS THAN (0)
31044
(SUBPARTITION subpart11, SUBPARTITION subpart12),
31045
PARTITION part_2 VALUES LESS THAN (5)
31046
(SUBPARTITION subpart21, SUBPARTITION subpart22),
31047
PARTITION part_3 VALUES LESS THAN (10)
31048
(SUBPARTITION subpart31, SUBPARTITION subpart32),
31049
PARTITION part_4 VALUES LESS THAN (2147483646)
31050
(SUBPARTITION subpart41, SUBPARTITION subpart42));
31051
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31052
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31053
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31054
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
31055
ERROR HY000: Error in list of partitions to REBUILD
31062
f_charbig VARCHAR(1000)
31065
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
31066
(PARTITION part_1 VALUES IN (0)
31067
(SUBPARTITION sp11, SUBPARTITION sp12),
31068
PARTITION part_2 VALUES IN (1)
31069
(SUBPARTITION sp21, SUBPARTITION sp22),
31070
PARTITION part_3 VALUES IN (2)
31071
(SUBPARTITION sp31, SUBPARTITION sp32),
31072
PARTITION part_4 VALUES IN (NULL)
31073
(SUBPARTITION sp41, SUBPARTITION sp42));
31074
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31075
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31076
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31077
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
31078
ERROR HY000: Error in list of partitions to REBUILD
31085
f_charbig VARCHAR(1000)
31088
PARTITION BY LIST(ABS(MOD(f_int1,2)))
31089
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
31090
(PARTITION part_1 VALUES IN (0),
31091
PARTITION part_2 VALUES IN (1),
31092
PARTITION part_3 VALUES IN (NULL));
31093
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31094
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31095
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31096
ALTER TABLE t1 REBUILD PARTITION part_1,part_2,part_5,part_6,part_10;
31097
ERROR HY000: Error in list of partitions to REBUILD
31099
# 5.4 ALTER ... REBUILD PARTITION part_1,part_1,part_1;
31100
DROP TABLE IF EXISTS t1;
31106
f_charbig VARCHAR(1000)
31109
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
31110
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31111
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31112
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31113
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
31114
ERROR HY000: Error in list of partitions to REBUILD
31121
f_charbig VARCHAR(1000)
31124
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
31125
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31126
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31127
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31128
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
31129
ERROR HY000: Error in list of partitions to REBUILD
31136
f_charbig VARCHAR(1000)
31139
PARTITION BY LIST(MOD(f_int1,4))
31140
(PARTITION part_3 VALUES IN (-3),
31141
PARTITION part_2 VALUES IN (-2),
31142
PARTITION part_1 VALUES IN (-1),
31143
PARTITION part_N VALUES IN (NULL),
31144
PARTITION part0 VALUES IN (0),
31145
PARTITION part1 VALUES IN (1),
31146
PARTITION part2 VALUES IN (2),
31147
PARTITION part3 VALUES IN (3));
31148
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31149
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31150
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31151
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
31152
ERROR HY000: Error in list of partitions to REBUILD
31159
f_charbig VARCHAR(1000)
31162
PARTITION BY RANGE(f_int1)
31163
(PARTITION parta VALUES LESS THAN (0),
31164
PARTITION part_1 VALUES LESS THAN (5),
31165
PARTITION part_2 VALUES LESS THAN (10),
31166
PARTITION part_3 VALUES LESS THAN (10 + 5),
31167
PARTITION part_4 VALUES LESS THAN (20),
31168
PARTITION part_5 VALUES LESS THAN (2147483646));
31169
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31170
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31171
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31172
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
31173
ERROR HY000: Error in list of partitions to REBUILD
31180
f_charbig VARCHAR(1000)
31183
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
31184
(PARTITION part_1 VALUES LESS THAN (0),
31185
PARTITION part_2 VALUES LESS THAN (5),
31186
PARTITION part_3 VALUES LESS THAN (10),
31187
PARTITION part_4 VALUES LESS THAN (2147483646));
31188
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31189
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31190
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31191
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
31192
ERROR HY000: Error in list of partitions to REBUILD
31199
f_charbig VARCHAR(1000)
31202
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
31203
(PARTITION part_1 VALUES LESS THAN (0)
31204
(SUBPARTITION subpart11, SUBPARTITION subpart12),
31205
PARTITION part_2 VALUES LESS THAN (5)
31206
(SUBPARTITION subpart21, SUBPARTITION subpart22),
31207
PARTITION part_3 VALUES LESS THAN (10)
31208
(SUBPARTITION subpart31, SUBPARTITION subpart32),
31209
PARTITION part_4 VALUES LESS THAN (2147483646)
31210
(SUBPARTITION subpart41, SUBPARTITION subpart42));
31211
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31212
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31213
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31214
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
31215
ERROR HY000: Error in list of partitions to REBUILD
31222
f_charbig VARCHAR(1000)
31225
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
31226
(PARTITION part_1 VALUES IN (0)
31227
(SUBPARTITION sp11, SUBPARTITION sp12),
31228
PARTITION part_2 VALUES IN (1)
31229
(SUBPARTITION sp21, SUBPARTITION sp22),
31230
PARTITION part_3 VALUES IN (2)
31231
(SUBPARTITION sp31, SUBPARTITION sp32),
31232
PARTITION part_4 VALUES IN (NULL)
31233
(SUBPARTITION sp41, SUBPARTITION sp42));
31234
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31235
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31236
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31237
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
31238
ERROR HY000: Error in list of partitions to REBUILD
31245
f_charbig VARCHAR(1000)
31248
PARTITION BY LIST(ABS(MOD(f_int1,2)))
31249
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
31250
(PARTITION part_1 VALUES IN (0),
31251
PARTITION part_2 VALUES IN (1),
31252
PARTITION part_3 VALUES IN (NULL));
31253
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31254
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31255
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31256
ALTER TABLE t1 REBUILD PARTITION part_1,part_1,part_1;
31257
ERROR HY000: Error in list of partitions to REBUILD
31259
#------------------------------------------------------------------------
31260
# 6 ALTER ... REMOVE PARTITIONING
31261
#------------------------------------------------------------------------
31262
# 6.1 ALTER ... REMOVE PARTITIONING;
31263
DROP TABLE IF EXISTS t1;
31269
f_charbig VARCHAR(1000)
31272
PARTITION BY HASH(f_int1) PARTITIONS 2 (partition part_1, partition part_2);
31273
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31274
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31275
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31276
ALTER TABLE t1 REMOVE PARTITIONING;
31277
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31278
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31279
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31280
# Start usability test (inc/partition_check.inc)
31282
SHOW CREATE TABLE t1;
31284
t1 CREATE TABLE `t1` (
31285
`f_int1` int(11) DEFAULT NULL,
31286
`f_int2` int(11) DEFAULT NULL,
31287
`f_char1` char(20) DEFAULT NULL,
31288
`f_char2` char(20) DEFAULT NULL,
31289
`f_charbig` varchar(1000) DEFAULT NULL
31290
) ENGINE=InnoDB DEFAULT CHARSET=latin1
31292
# check prerequisites-1 success: 1
31293
# check COUNT(*) success: 1
31294
# check MIN/MAX(f_int1) success: 1
31295
# check MIN/MAX(f_int2) success: 1
31296
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31297
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31298
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31299
WHERE f_int1 IN (2,3);
31300
# check prerequisites-3 success: 1
31301
DELETE FROM t1 WHERE f_charbig = 'delete me';
31302
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
31303
# check read via f_int1 success: 1
31304
# check read via f_int2 success: 1
31306
# check multiple-1 success: 1
31307
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31309
# check multiple-2 success: 1
31310
INSERT INTO t1 SELECT * FROM t0_template
31311
WHERE MOD(f_int1,3) = 0;
31313
# check multiple-3 success: 1
31314
UPDATE t1 SET f_int1 = f_int1 + @max_row
31315
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31316
AND @max_row_div2 + @max_row_div4;
31318
# check multiple-4 success: 1
31320
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31321
AND @max_row_div2 + @max_row_div4 + @max_row;
31323
# check multiple-5 success: 1
31324
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31326
SET f_int1 = @cur_value , f_int2 = @cur_value,
31327
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31328
f_charbig = '#SINGLE#';
31330
# check single-1 success: 1
31331
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31333
SET f_int1 = @cur_value , f_int2 = @cur_value,
31334
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31335
f_charbig = '#SINGLE#';
31337
# check single-2 success: 1
31338
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31339
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31340
UPDATE t1 SET f_int1 = @cur_value2
31341
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31343
# check single-3 success: 1
31344
SET @cur_value1= -1;
31345
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31346
UPDATE t1 SET f_int1 = @cur_value1
31347
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31349
# check single-4 success: 1
31350
SELECT MAX(f_int1) INTO @cur_value FROM t1;
31351
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31353
# check single-5 success: 1
31354
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31356
# check single-6 success: 1
31357
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31359
# check single-7 success: 1
31360
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
31361
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31362
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31363
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31364
f_charbig = '#NULL#';
31366
SET f_int1 = NULL , f_int2 = -@max_row,
31367
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31368
f_charbig = '#NULL#';
31369
# check null success: 1
31371
# check null-1 success: 1
31372
UPDATE t1 SET f_int1 = -@max_row
31373
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31374
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31376
# check null-2 success: 1
31377
UPDATE t1 SET f_int1 = NULL
31378
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31379
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31381
# check null-3 success: 1
31383
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31384
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31386
# check null-4 success: 1
31388
WHERE f_int1 = 0 AND f_int2 = 0
31389
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31390
AND f_charbig = '#NULL#';
31392
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31393
SELECT f_int1, f_int1, '', '', 'was inserted'
31394
FROM t0_template source_tab
31395
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31397
# check transactions-1 success: 1
31400
# check transactions-2 success: 1
31403
# check transactions-3 success: 1
31404
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31408
# check transactions-4 success: 1
31409
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31410
SELECT f_int1, f_int1, '', '', 'was inserted'
31411
FROM t0_template source_tab
31412
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31414
# check transactions-5 success: 1
31417
# check transactions-6 success: 1
31418
# INFO: Storage engine used for t1 seems to be transactional.
31421
# check transactions-7 success: 1
31422
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31424
SET @@session.sql_mode = 'traditional';
31425
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31426
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31427
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31428
'', '', 'was inserted' FROM t0_template
31429
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31430
ERROR 22012: Division by 0
31433
# check transactions-8 success: 1
31434
# INFO: Storage engine used for t1 seems to be able to revert
31435
# changes made by the failing statement.
31436
SET @@session.sql_mode = '';
31438
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31440
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31442
# check special-1 success: 1
31443
UPDATE t1 SET f_charbig = '';
31445
# check special-2 success: 1
31446
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31447
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31448
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31449
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31450
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31451
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31452
'just inserted' FROM t0_template
31453
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31454
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31456
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31457
f_charbig = 'updated by trigger'
31458
WHERE f_int1 = new.f_int1;
31460
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31461
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31462
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31464
# check trigger-1 success: 1
31465
DROP TRIGGER trg_1;
31466
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31467
f_int2 = CAST(f_char1 AS SIGNED INT),
31468
f_charbig = 'just inserted'
31469
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31471
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31472
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31473
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31474
'just inserted' FROM t0_template
31475
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31476
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31478
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31479
f_charbig = 'updated by trigger'
31480
WHERE f_int1 = new.f_int1;
31482
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31483
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31484
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31486
# check trigger-2 success: 1
31487
DROP TRIGGER trg_1;
31488
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31489
f_int2 = CAST(f_char1 AS SIGNED INT),
31490
f_charbig = 'just inserted'
31491
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31493
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31494
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31495
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31496
'just inserted' FROM t0_template
31497
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31498
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31500
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31501
f_charbig = 'updated by trigger'
31502
WHERE f_int1 = new.f_int1;
31504
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31505
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31507
# check trigger-3 success: 1
31508
DROP TRIGGER trg_1;
31509
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31510
f_int2 = CAST(f_char1 AS SIGNED INT),
31511
f_charbig = 'just inserted'
31512
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31514
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31515
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31516
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31517
'just inserted' FROM t0_template
31518
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31519
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31521
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31522
f_charbig = 'updated by trigger'
31523
WHERE f_int1 = - old.f_int1;
31525
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31526
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31528
# check trigger-4 success: 1
31529
DROP TRIGGER trg_1;
31530
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31531
f_int2 = CAST(f_char1 AS SIGNED INT),
31532
f_charbig = 'just inserted'
31533
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31535
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31536
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31537
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31538
'just inserted' FROM t0_template
31539
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31540
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31542
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31543
f_charbig = 'updated by trigger'
31544
WHERE f_int1 = new.f_int1;
31546
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31547
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31549
# check trigger-5 success: 1
31550
DROP TRIGGER trg_1;
31551
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31552
f_int2 = CAST(f_char1 AS SIGNED INT),
31553
f_charbig = 'just inserted'
31554
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31556
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31557
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31558
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31559
'just inserted' FROM t0_template
31560
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31561
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31563
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31564
f_charbig = 'updated by trigger'
31565
WHERE f_int1 = - old.f_int1;
31567
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31568
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31570
# check trigger-6 success: 1
31571
DROP TRIGGER trg_1;
31572
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31573
f_int2 = CAST(f_char1 AS SIGNED INT),
31574
f_charbig = 'just inserted'
31575
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31577
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31578
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31579
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31580
'just inserted' FROM t0_template
31581
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31582
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31584
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31585
f_charbig = 'updated by trigger'
31586
WHERE f_int1 = - old.f_int1;
31589
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31591
# check trigger-7 success: 1
31592
DROP TRIGGER trg_1;
31593
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31594
f_int2 = CAST(f_char1 AS SIGNED INT),
31595
f_charbig = 'just inserted'
31596
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31598
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31599
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31600
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31601
'just inserted' FROM t0_template
31602
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31603
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31605
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31606
f_charbig = 'updated by trigger'
31607
WHERE f_int1 = - old.f_int1;
31610
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31612
# check trigger-8 success: 1
31613
DROP TRIGGER trg_1;
31614
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31615
f_int2 = CAST(f_char1 AS SIGNED INT),
31616
f_charbig = 'just inserted'
31617
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31619
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31621
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31622
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31624
SET new.f_int1 = old.f_int1 + @max_row,
31625
new.f_int2 = old.f_int2 - @max_row,
31626
new.f_charbig = '####updated per update trigger####';
31629
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31630
f_charbig = '####updated per update statement itself####';
31632
# check trigger-9 success: 1
31633
DROP TRIGGER trg_2;
31634
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31635
f_int2 = CAST(f_char1 AS SIGNED INT),
31636
f_charbig = CONCAT('===',f_char1,'===');
31637
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31639
SET new.f_int1 = new.f_int1 + @max_row,
31640
new.f_int2 = new.f_int2 - @max_row,
31641
new.f_charbig = '####updated per update trigger####';
31644
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31645
f_charbig = '####updated per update statement itself####';
31647
# check trigger-10 success: 1
31648
DROP TRIGGER trg_2;
31649
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31650
f_int2 = CAST(f_char1 AS SIGNED INT),
31651
f_charbig = CONCAT('===',f_char1,'===');
31652
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31654
SET new.f_int1 = @my_max1 + @counter,
31655
new.f_int2 = @my_min2 - @counter,
31656
new.f_charbig = '####updated per insert trigger####';
31657
SET @counter = @counter + 1;
31660
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31661
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31662
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31663
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31664
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31666
DROP TRIGGER trg_3;
31668
# check trigger-11 success: 1
31670
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31671
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31672
AND f_charbig = '####updated per insert trigger####';
31673
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31675
SET new.f_int1 = @my_max1 + @counter,
31676
new.f_int2 = @my_min2 - @counter,
31677
new.f_charbig = '####updated per insert trigger####';
31678
SET @counter = @counter + 1;
31681
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31682
INSERT INTO t1 (f_char1, f_char2, f_charbig)
31683
SELECT CAST(f_int1 AS CHAR),
31684
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31685
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31687
DROP TRIGGER trg_3;
31689
# check trigger-12 success: 1
31691
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31692
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31693
AND f_charbig = '####updated per insert trigger####';
31695
Table Op Msg_type Msg_text
31696
test.t1 analyze status OK
31697
CHECK TABLE t1 EXTENDED;
31698
Table Op Msg_type Msg_text
31699
test.t1 check status OK
31700
CHECKSUM TABLE t1 EXTENDED;
31702
test.t1 <some_value>
31704
Table Op Msg_type Msg_text
31705
test.t1 optimize status OK
31706
# check layout success: 1
31707
REPAIR TABLE t1 EXTENDED;
31708
Table Op Msg_type Msg_text
31709
test.t1 repair note The storage engine for the table doesn't support repair
31710
# check layout success: 1
31713
# check TRUNCATE success: 1
31714
# check layout success: 1
31715
# End usability test (inc/partition_check.inc)
31722
f_charbig VARCHAR(1000)
31725
PARTITION BY KEY(f_int1) PARTITIONS 5 (partition part_1, partition part_2, partition part_3, partition part_4, partition part_5);
31726
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31727
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31728
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31729
ALTER TABLE t1 REMOVE PARTITIONING;
31730
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31731
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31732
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31733
# Start usability test (inc/partition_check.inc)
31735
SHOW CREATE TABLE t1;
31737
t1 CREATE TABLE `t1` (
31738
`f_int1` int(11) DEFAULT NULL,
31739
`f_int2` int(11) DEFAULT NULL,
31740
`f_char1` char(20) DEFAULT NULL,
31741
`f_char2` char(20) DEFAULT NULL,
31742
`f_charbig` varchar(1000) DEFAULT NULL
31743
) ENGINE=InnoDB DEFAULT CHARSET=latin1
31745
# check prerequisites-1 success: 1
31746
# check COUNT(*) success: 1
31747
# check MIN/MAX(f_int1) success: 1
31748
# check MIN/MAX(f_int2) success: 1
31749
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31750
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31751
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31752
WHERE f_int1 IN (2,3);
31753
# check prerequisites-3 success: 1
31754
DELETE FROM t1 WHERE f_charbig = 'delete me';
31755
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
31756
# check read via f_int1 success: 1
31757
# check read via f_int2 success: 1
31759
# check multiple-1 success: 1
31760
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31762
# check multiple-2 success: 1
31763
INSERT INTO t1 SELECT * FROM t0_template
31764
WHERE MOD(f_int1,3) = 0;
31766
# check multiple-3 success: 1
31767
UPDATE t1 SET f_int1 = f_int1 + @max_row
31768
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31769
AND @max_row_div2 + @max_row_div4;
31771
# check multiple-4 success: 1
31773
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31774
AND @max_row_div2 + @max_row_div4 + @max_row;
31776
# check multiple-5 success: 1
31777
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31779
SET f_int1 = @cur_value , f_int2 = @cur_value,
31780
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31781
f_charbig = '#SINGLE#';
31783
# check single-1 success: 1
31784
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31786
SET f_int1 = @cur_value , f_int2 = @cur_value,
31787
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31788
f_charbig = '#SINGLE#';
31790
# check single-2 success: 1
31791
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31792
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31793
UPDATE t1 SET f_int1 = @cur_value2
31794
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31796
# check single-3 success: 1
31797
SET @cur_value1= -1;
31798
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31799
UPDATE t1 SET f_int1 = @cur_value1
31800
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31802
# check single-4 success: 1
31803
SELECT MAX(f_int1) INTO @cur_value FROM t1;
31804
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31806
# check single-5 success: 1
31807
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31809
# check single-6 success: 1
31810
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31812
# check single-7 success: 1
31813
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
31814
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31815
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31816
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31817
f_charbig = '#NULL#';
31819
SET f_int1 = NULL , f_int2 = -@max_row,
31820
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31821
f_charbig = '#NULL#';
31822
# check null success: 1
31824
# check null-1 success: 1
31825
UPDATE t1 SET f_int1 = -@max_row
31826
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31827
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31829
# check null-2 success: 1
31830
UPDATE t1 SET f_int1 = NULL
31831
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31832
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31834
# check null-3 success: 1
31836
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31837
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31839
# check null-4 success: 1
31841
WHERE f_int1 = 0 AND f_int2 = 0
31842
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31843
AND f_charbig = '#NULL#';
31845
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31846
SELECT f_int1, f_int1, '', '', 'was inserted'
31847
FROM t0_template source_tab
31848
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31850
# check transactions-1 success: 1
31853
# check transactions-2 success: 1
31856
# check transactions-3 success: 1
31857
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31861
# check transactions-4 success: 1
31862
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31863
SELECT f_int1, f_int1, '', '', 'was inserted'
31864
FROM t0_template source_tab
31865
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31867
# check transactions-5 success: 1
31870
# check transactions-6 success: 1
31871
# INFO: Storage engine used for t1 seems to be transactional.
31874
# check transactions-7 success: 1
31875
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31877
SET @@session.sql_mode = 'traditional';
31878
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31879
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31880
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31881
'', '', 'was inserted' FROM t0_template
31882
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31883
ERROR 22012: Division by 0
31886
# check transactions-8 success: 1
31887
# INFO: Storage engine used for t1 seems to be able to revert
31888
# changes made by the failing statement.
31889
SET @@session.sql_mode = '';
31891
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31893
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31895
# check special-1 success: 1
31896
UPDATE t1 SET f_charbig = '';
31898
# check special-2 success: 1
31899
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31900
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31901
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31902
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31903
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31904
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31905
'just inserted' FROM t0_template
31906
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31907
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31909
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31910
f_charbig = 'updated by trigger'
31911
WHERE f_int1 = new.f_int1;
31913
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31914
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31915
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31917
# check trigger-1 success: 1
31918
DROP TRIGGER trg_1;
31919
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31920
f_int2 = CAST(f_char1 AS SIGNED INT),
31921
f_charbig = 'just inserted'
31922
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31924
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31925
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31926
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31927
'just inserted' FROM t0_template
31928
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31929
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31931
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31932
f_charbig = 'updated by trigger'
31933
WHERE f_int1 = new.f_int1;
31935
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31936
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31937
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31939
# check trigger-2 success: 1
31940
DROP TRIGGER trg_1;
31941
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31942
f_int2 = CAST(f_char1 AS SIGNED INT),
31943
f_charbig = 'just inserted'
31944
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31946
WHERE ABS(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 UPDATE 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
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31958
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31960
# check trigger-3 success: 1
31961
DROP TRIGGER trg_1;
31962
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31963
f_int2 = CAST(f_char1 AS SIGNED INT),
31964
f_charbig = 'just inserted'
31965
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31967
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31968
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31969
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31970
'just inserted' FROM t0_template
31971
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31972
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31974
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31975
f_charbig = 'updated by trigger'
31976
WHERE f_int1 = - old.f_int1;
31978
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31979
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31981
# check trigger-4 success: 1
31982
DROP TRIGGER trg_1;
31983
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31984
f_int2 = CAST(f_char1 AS SIGNED INT),
31985
f_charbig = 'just inserted'
31986
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31988
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31989
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31990
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31991
'just inserted' FROM t0_template
31992
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31993
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31995
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31996
f_charbig = 'updated by trigger'
31997
WHERE f_int1 = new.f_int1;
31999
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32000
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32002
# check trigger-5 success: 1
32003
DROP TRIGGER trg_1;
32004
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32005
f_int2 = CAST(f_char1 AS SIGNED INT),
32006
f_charbig = 'just inserted'
32007
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32009
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32010
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32011
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32012
'just inserted' FROM t0_template
32013
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32014
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32016
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32017
f_charbig = 'updated by trigger'
32018
WHERE f_int1 = - old.f_int1;
32020
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32021
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32023
# check trigger-6 success: 1
32024
DROP TRIGGER trg_1;
32025
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32026
f_int2 = CAST(f_char1 AS SIGNED INT),
32027
f_charbig = 'just inserted'
32028
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32030
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32031
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32032
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32033
'just inserted' FROM t0_template
32034
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32035
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32037
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32038
f_charbig = 'updated by trigger'
32039
WHERE f_int1 = - old.f_int1;
32042
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32044
# check trigger-7 success: 1
32045
DROP TRIGGER trg_1;
32046
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32047
f_int2 = CAST(f_char1 AS SIGNED INT),
32048
f_charbig = 'just inserted'
32049
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32051
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32052
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32053
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32054
'just inserted' FROM t0_template
32055
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32056
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32058
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32059
f_charbig = 'updated by trigger'
32060
WHERE f_int1 = - old.f_int1;
32063
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32065
# check trigger-8 success: 1
32066
DROP TRIGGER trg_1;
32067
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32068
f_int2 = CAST(f_char1 AS SIGNED INT),
32069
f_charbig = 'just inserted'
32070
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32072
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32074
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32075
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32077
SET new.f_int1 = old.f_int1 + @max_row,
32078
new.f_int2 = old.f_int2 - @max_row,
32079
new.f_charbig = '####updated per update trigger####';
32082
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32083
f_charbig = '####updated per update statement itself####';
32085
# check trigger-9 success: 1
32086
DROP TRIGGER trg_2;
32087
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32088
f_int2 = CAST(f_char1 AS SIGNED INT),
32089
f_charbig = CONCAT('===',f_char1,'===');
32090
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32092
SET new.f_int1 = new.f_int1 + @max_row,
32093
new.f_int2 = new.f_int2 - @max_row,
32094
new.f_charbig = '####updated per update trigger####';
32097
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32098
f_charbig = '####updated per update statement itself####';
32100
# check trigger-10 success: 1
32101
DROP TRIGGER trg_2;
32102
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32103
f_int2 = CAST(f_char1 AS SIGNED INT),
32104
f_charbig = CONCAT('===',f_char1,'===');
32105
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32107
SET new.f_int1 = @my_max1 + @counter,
32108
new.f_int2 = @my_min2 - @counter,
32109
new.f_charbig = '####updated per insert trigger####';
32110
SET @counter = @counter + 1;
32113
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32114
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32115
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32116
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32117
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32119
DROP TRIGGER trg_3;
32121
# check trigger-11 success: 1
32123
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32124
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32125
AND f_charbig = '####updated per insert trigger####';
32126
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32128
SET new.f_int1 = @my_max1 + @counter,
32129
new.f_int2 = @my_min2 - @counter,
32130
new.f_charbig = '####updated per insert trigger####';
32131
SET @counter = @counter + 1;
32134
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32135
INSERT INTO t1 (f_char1, f_char2, f_charbig)
32136
SELECT CAST(f_int1 AS CHAR),
32137
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32138
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32140
DROP TRIGGER trg_3;
32142
# check trigger-12 success: 1
32144
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32145
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32146
AND f_charbig = '####updated per insert trigger####';
32148
Table Op Msg_type Msg_text
32149
test.t1 analyze status OK
32150
CHECK TABLE t1 EXTENDED;
32151
Table Op Msg_type Msg_text
32152
test.t1 check status OK
32153
CHECKSUM TABLE t1 EXTENDED;
32155
test.t1 <some_value>
32157
Table Op Msg_type Msg_text
32158
test.t1 optimize status OK
32159
# check layout success: 1
32160
REPAIR TABLE t1 EXTENDED;
32161
Table Op Msg_type Msg_text
32162
test.t1 repair note The storage engine for the table doesn't support repair
32163
# check layout success: 1
32166
# check TRUNCATE success: 1
32167
# check layout success: 1
32168
# End usability test (inc/partition_check.inc)
32175
f_charbig VARCHAR(1000)
32178
PARTITION BY LIST(MOD(f_int1,4))
32179
(PARTITION part_3 VALUES IN (-3),
32180
PARTITION part_2 VALUES IN (-2),
32181
PARTITION part_1 VALUES IN (-1),
32182
PARTITION part_N VALUES IN (NULL),
32183
PARTITION part0 VALUES IN (0),
32184
PARTITION part1 VALUES IN (1),
32185
PARTITION part2 VALUES IN (2),
32186
PARTITION part3 VALUES IN (3));
32187
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32188
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32189
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
32190
ALTER TABLE t1 REMOVE PARTITIONING;
32191
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32192
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32193
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
32194
# Start usability test (inc/partition_check.inc)
32196
SHOW CREATE TABLE t1;
32198
t1 CREATE TABLE `t1` (
32199
`f_int1` int(11) DEFAULT NULL,
32200
`f_int2` int(11) DEFAULT NULL,
32201
`f_char1` char(20) DEFAULT NULL,
32202
`f_char2` char(20) DEFAULT NULL,
32203
`f_charbig` varchar(1000) DEFAULT NULL
32204
) ENGINE=InnoDB DEFAULT CHARSET=latin1
32206
# check prerequisites-1 success: 1
32207
# check COUNT(*) success: 1
32208
# check MIN/MAX(f_int1) success: 1
32209
# check MIN/MAX(f_int2) success: 1
32210
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32211
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32212
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
32213
WHERE f_int1 IN (2,3);
32214
# check prerequisites-3 success: 1
32215
DELETE FROM t1 WHERE f_charbig = 'delete me';
32216
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
32217
# check read via f_int1 success: 1
32218
# check read via f_int2 success: 1
32220
# check multiple-1 success: 1
32221
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
32223
# check multiple-2 success: 1
32224
INSERT INTO t1 SELECT * FROM t0_template
32225
WHERE MOD(f_int1,3) = 0;
32227
# check multiple-3 success: 1
32228
UPDATE t1 SET f_int1 = f_int1 + @max_row
32229
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
32230
AND @max_row_div2 + @max_row_div4;
32232
# check multiple-4 success: 1
32234
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32235
AND @max_row_div2 + @max_row_div4 + @max_row;
32237
# check multiple-5 success: 1
32238
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32240
SET f_int1 = @cur_value , f_int2 = @cur_value,
32241
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32242
f_charbig = '#SINGLE#';
32244
# check single-1 success: 1
32245
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32247
SET f_int1 = @cur_value , f_int2 = @cur_value,
32248
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32249
f_charbig = '#SINGLE#';
32251
# check single-2 success: 1
32252
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32253
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32254
UPDATE t1 SET f_int1 = @cur_value2
32255
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32257
# check single-3 success: 1
32258
SET @cur_value1= -1;
32259
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32260
UPDATE t1 SET f_int1 = @cur_value1
32261
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32263
# check single-4 success: 1
32264
SELECT MAX(f_int1) INTO @cur_value FROM t1;
32265
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32267
# check single-5 success: 1
32268
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32270
# check single-6 success: 1
32271
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32273
# check single-7 success: 1
32274
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32275
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32276
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32277
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32278
f_charbig = '#NULL#';
32280
SET f_int1 = NULL , f_int2 = -@max_row,
32281
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32282
f_charbig = '#NULL#';
32283
# check null success: 1
32285
# check null-1 success: 1
32286
UPDATE t1 SET f_int1 = -@max_row
32287
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32288
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32290
# check null-2 success: 1
32291
UPDATE t1 SET f_int1 = NULL
32292
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32293
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32295
# check null-3 success: 1
32297
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32298
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32300
# check null-4 success: 1
32302
WHERE f_int1 = 0 AND f_int2 = 0
32303
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32304
AND f_charbig = '#NULL#';
32306
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32307
SELECT f_int1, f_int1, '', '', 'was inserted'
32308
FROM t0_template source_tab
32309
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32311
# check transactions-1 success: 1
32314
# check transactions-2 success: 1
32317
# check transactions-3 success: 1
32318
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32322
# check transactions-4 success: 1
32323
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32324
SELECT f_int1, f_int1, '', '', 'was inserted'
32325
FROM t0_template source_tab
32326
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32328
# check transactions-5 success: 1
32331
# check transactions-6 success: 1
32332
# INFO: Storage engine used for t1 seems to be transactional.
32335
# check transactions-7 success: 1
32336
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32338
SET @@session.sql_mode = 'traditional';
32339
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32340
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32341
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32342
'', '', 'was inserted' FROM t0_template
32343
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32344
ERROR 22012: Division by 0
32347
# check transactions-8 success: 1
32348
# INFO: Storage engine used for t1 seems to be able to revert
32349
# changes made by the failing statement.
32350
SET @@session.sql_mode = '';
32352
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32354
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32356
# check special-1 success: 1
32357
UPDATE t1 SET f_charbig = '';
32359
# check special-2 success: 1
32360
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32361
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32362
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32363
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32364
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32365
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32366
'just inserted' FROM t0_template
32367
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32368
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
32370
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32371
f_charbig = 'updated by trigger'
32372
WHERE f_int1 = new.f_int1;
32374
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32375
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32376
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32378
# check trigger-1 success: 1
32379
DROP TRIGGER trg_1;
32380
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32381
f_int2 = CAST(f_char1 AS SIGNED INT),
32382
f_charbig = 'just inserted'
32383
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32385
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32386
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32387
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32388
'just inserted' FROM t0_template
32389
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32390
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
32392
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32393
f_charbig = 'updated by trigger'
32394
WHERE f_int1 = new.f_int1;
32396
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32397
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32398
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32400
# check trigger-2 success: 1
32401
DROP TRIGGER trg_1;
32402
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32403
f_int2 = CAST(f_char1 AS SIGNED INT),
32404
f_charbig = 'just inserted'
32405
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32407
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32408
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32409
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32410
'just inserted' FROM t0_template
32411
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32412
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32414
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32415
f_charbig = 'updated by trigger'
32416
WHERE f_int1 = new.f_int1;
32418
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32419
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32421
# check trigger-3 success: 1
32422
DROP TRIGGER trg_1;
32423
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32424
f_int2 = CAST(f_char1 AS SIGNED INT),
32425
f_charbig = 'just inserted'
32426
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32428
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32429
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32430
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32431
'just inserted' FROM t0_template
32432
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32433
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32435
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32436
f_charbig = 'updated by trigger'
32437
WHERE f_int1 = - old.f_int1;
32439
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32440
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32442
# check trigger-4 success: 1
32443
DROP TRIGGER trg_1;
32444
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32445
f_int2 = CAST(f_char1 AS SIGNED INT),
32446
f_charbig = 'just inserted'
32447
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32449
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32450
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32451
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32452
'just inserted' FROM t0_template
32453
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32454
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32456
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32457
f_charbig = 'updated by trigger'
32458
WHERE f_int1 = new.f_int1;
32460
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32461
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32463
# check trigger-5 success: 1
32464
DROP TRIGGER trg_1;
32465
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32466
f_int2 = CAST(f_char1 AS SIGNED INT),
32467
f_charbig = 'just inserted'
32468
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32470
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32471
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32472
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32473
'just inserted' FROM t0_template
32474
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32475
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32477
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32478
f_charbig = 'updated by trigger'
32479
WHERE f_int1 = - old.f_int1;
32481
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32482
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32484
# check trigger-6 success: 1
32485
DROP TRIGGER trg_1;
32486
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32487
f_int2 = CAST(f_char1 AS SIGNED INT),
32488
f_charbig = 'just inserted'
32489
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32491
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32492
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32493
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32494
'just inserted' FROM t0_template
32495
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32496
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32498
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32499
f_charbig = 'updated by trigger'
32500
WHERE f_int1 = - old.f_int1;
32503
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32505
# check trigger-7 success: 1
32506
DROP TRIGGER trg_1;
32507
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32508
f_int2 = CAST(f_char1 AS SIGNED INT),
32509
f_charbig = 'just inserted'
32510
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32512
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32513
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32514
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32515
'just inserted' FROM t0_template
32516
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32517
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32519
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32520
f_charbig = 'updated by trigger'
32521
WHERE f_int1 = - old.f_int1;
32524
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32526
# check trigger-8 success: 1
32527
DROP TRIGGER trg_1;
32528
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32529
f_int2 = CAST(f_char1 AS SIGNED INT),
32530
f_charbig = 'just inserted'
32531
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32533
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32535
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32536
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32538
SET new.f_int1 = old.f_int1 + @max_row,
32539
new.f_int2 = old.f_int2 - @max_row,
32540
new.f_charbig = '####updated per update trigger####';
32543
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32544
f_charbig = '####updated per update statement itself####';
32546
# check trigger-9 success: 1
32547
DROP TRIGGER trg_2;
32548
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32549
f_int2 = CAST(f_char1 AS SIGNED INT),
32550
f_charbig = CONCAT('===',f_char1,'===');
32551
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32553
SET new.f_int1 = new.f_int1 + @max_row,
32554
new.f_int2 = new.f_int2 - @max_row,
32555
new.f_charbig = '####updated per update trigger####';
32558
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32559
f_charbig = '####updated per update statement itself####';
32561
# check trigger-10 success: 1
32562
DROP TRIGGER trg_2;
32563
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32564
f_int2 = CAST(f_char1 AS SIGNED INT),
32565
f_charbig = CONCAT('===',f_char1,'===');
32566
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32568
SET new.f_int1 = @my_max1 + @counter,
32569
new.f_int2 = @my_min2 - @counter,
32570
new.f_charbig = '####updated per insert trigger####';
32571
SET @counter = @counter + 1;
32574
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32575
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32576
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32577
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32578
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32580
DROP TRIGGER trg_3;
32582
# check trigger-11 success: 1
32584
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32585
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32586
AND f_charbig = '####updated per insert trigger####';
32587
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32589
SET new.f_int1 = @my_max1 + @counter,
32590
new.f_int2 = @my_min2 - @counter,
32591
new.f_charbig = '####updated per insert trigger####';
32592
SET @counter = @counter + 1;
32595
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32596
INSERT INTO t1 (f_char1, f_char2, f_charbig)
32597
SELECT CAST(f_int1 AS CHAR),
32598
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32599
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32601
DROP TRIGGER trg_3;
32603
# check trigger-12 success: 1
32605
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32606
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32607
AND f_charbig = '####updated per insert trigger####';
32609
Table Op Msg_type Msg_text
32610
test.t1 analyze status OK
32611
CHECK TABLE t1 EXTENDED;
32612
Table Op Msg_type Msg_text
32613
test.t1 check status OK
32614
CHECKSUM TABLE t1 EXTENDED;
32616
test.t1 <some_value>
32618
Table Op Msg_type Msg_text
32619
test.t1 optimize status OK
32620
# check layout success: 1
32621
REPAIR TABLE t1 EXTENDED;
32622
Table Op Msg_type Msg_text
32623
test.t1 repair note The storage engine for the table doesn't support repair
32624
# check layout success: 1
32627
# check TRUNCATE success: 1
32628
# check layout success: 1
32629
# End usability test (inc/partition_check.inc)
32636
f_charbig VARCHAR(1000)
32639
PARTITION BY RANGE(f_int1)
32640
(PARTITION parta VALUES LESS THAN (0),
32641
PARTITION part_1 VALUES LESS THAN (5),
32642
PARTITION part_2 VALUES LESS THAN (10),
32643
PARTITION part_3 VALUES LESS THAN (10 + 5),
32644
PARTITION part_4 VALUES LESS THAN (20),
32645
PARTITION part_5 VALUES LESS THAN (2147483646));
32646
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32647
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32648
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
32649
ALTER TABLE t1 REMOVE PARTITIONING;
32650
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32651
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32652
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
32653
# Start usability test (inc/partition_check.inc)
32655
SHOW CREATE TABLE t1;
32657
t1 CREATE TABLE `t1` (
32658
`f_int1` int(11) DEFAULT NULL,
32659
`f_int2` int(11) DEFAULT NULL,
32660
`f_char1` char(20) DEFAULT NULL,
32661
`f_char2` char(20) DEFAULT NULL,
32662
`f_charbig` varchar(1000) DEFAULT NULL
32663
) ENGINE=InnoDB DEFAULT CHARSET=latin1
32665
# check prerequisites-1 success: 1
32666
# check COUNT(*) success: 1
32667
# check MIN/MAX(f_int1) success: 1
32668
# check MIN/MAX(f_int2) success: 1
32669
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32670
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32671
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
32672
WHERE f_int1 IN (2,3);
32673
# check prerequisites-3 success: 1
32674
DELETE FROM t1 WHERE f_charbig = 'delete me';
32675
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
32676
# check read via f_int1 success: 1
32677
# check read via f_int2 success: 1
32679
# check multiple-1 success: 1
32680
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
32682
# check multiple-2 success: 1
32683
INSERT INTO t1 SELECT * FROM t0_template
32684
WHERE MOD(f_int1,3) = 0;
32686
# check multiple-3 success: 1
32687
UPDATE t1 SET f_int1 = f_int1 + @max_row
32688
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
32689
AND @max_row_div2 + @max_row_div4;
32691
# check multiple-4 success: 1
32693
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32694
AND @max_row_div2 + @max_row_div4 + @max_row;
32696
# check multiple-5 success: 1
32697
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32699
SET f_int1 = @cur_value , f_int2 = @cur_value,
32700
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32701
f_charbig = '#SINGLE#';
32703
# check single-1 success: 1
32704
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32706
SET f_int1 = @cur_value , f_int2 = @cur_value,
32707
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32708
f_charbig = '#SINGLE#';
32710
# check single-2 success: 1
32711
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32712
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32713
UPDATE t1 SET f_int1 = @cur_value2
32714
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32716
# check single-3 success: 1
32717
SET @cur_value1= -1;
32718
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32719
UPDATE t1 SET f_int1 = @cur_value1
32720
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32722
# check single-4 success: 1
32723
SELECT MAX(f_int1) INTO @cur_value FROM t1;
32724
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32726
# check single-5 success: 1
32727
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32729
# check single-6 success: 1
32730
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32732
# check single-7 success: 1
32733
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32734
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32735
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32736
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32737
f_charbig = '#NULL#';
32739
SET f_int1 = NULL , f_int2 = -@max_row,
32740
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32741
f_charbig = '#NULL#';
32742
# check null success: 1
32744
# check null-1 success: 1
32745
UPDATE t1 SET f_int1 = -@max_row
32746
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32747
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32749
# check null-2 success: 1
32750
UPDATE t1 SET f_int1 = NULL
32751
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32752
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32754
# check null-3 success: 1
32756
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32757
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32759
# check null-4 success: 1
32761
WHERE f_int1 = 0 AND f_int2 = 0
32762
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32763
AND f_charbig = '#NULL#';
32765
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32766
SELECT f_int1, f_int1, '', '', 'was inserted'
32767
FROM t0_template source_tab
32768
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32770
# check transactions-1 success: 1
32773
# check transactions-2 success: 1
32776
# check transactions-3 success: 1
32777
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32781
# check transactions-4 success: 1
32782
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32783
SELECT f_int1, f_int1, '', '', 'was inserted'
32784
FROM t0_template source_tab
32785
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32787
# check transactions-5 success: 1
32790
# check transactions-6 success: 1
32791
# INFO: Storage engine used for t1 seems to be transactional.
32794
# check transactions-7 success: 1
32795
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32797
SET @@session.sql_mode = 'traditional';
32798
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32799
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32800
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32801
'', '', 'was inserted' FROM t0_template
32802
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32803
ERROR 22012: Division by 0
32806
# check transactions-8 success: 1
32807
# INFO: Storage engine used for t1 seems to be able to revert
32808
# changes made by the failing statement.
32809
SET @@session.sql_mode = '';
32811
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32813
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32815
# check special-1 success: 1
32816
UPDATE t1 SET f_charbig = '';
32818
# check special-2 success: 1
32819
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32820
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32821
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32822
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32823
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32824
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32825
'just inserted' FROM t0_template
32826
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32827
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
32829
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32830
f_charbig = 'updated by trigger'
32831
WHERE f_int1 = new.f_int1;
32833
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32834
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32835
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32837
# check trigger-1 success: 1
32838
DROP TRIGGER trg_1;
32839
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32840
f_int2 = CAST(f_char1 AS SIGNED INT),
32841
f_charbig = 'just inserted'
32842
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32844
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32845
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32846
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32847
'just inserted' FROM t0_template
32848
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32849
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
32851
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32852
f_charbig = 'updated by trigger'
32853
WHERE f_int1 = new.f_int1;
32855
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32856
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32857
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32859
# check trigger-2 success: 1
32860
DROP TRIGGER trg_1;
32861
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32862
f_int2 = CAST(f_char1 AS SIGNED INT),
32863
f_charbig = 'just inserted'
32864
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32866
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32867
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32868
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32869
'just inserted' FROM t0_template
32870
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32871
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32873
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32874
f_charbig = 'updated by trigger'
32875
WHERE f_int1 = new.f_int1;
32877
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32878
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32880
# check trigger-3 success: 1
32881
DROP TRIGGER trg_1;
32882
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32883
f_int2 = CAST(f_char1 AS SIGNED INT),
32884
f_charbig = 'just inserted'
32885
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32887
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32888
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32889
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32890
'just inserted' FROM t0_template
32891
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32892
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32894
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32895
f_charbig = 'updated by trigger'
32896
WHERE f_int1 = - old.f_int1;
32898
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32899
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32901
# check trigger-4 success: 1
32902
DROP TRIGGER trg_1;
32903
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32904
f_int2 = CAST(f_char1 AS SIGNED INT),
32905
f_charbig = 'just inserted'
32906
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32908
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32909
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32910
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32911
'just inserted' FROM t0_template
32912
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32913
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32915
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32916
f_charbig = 'updated by trigger'
32917
WHERE f_int1 = new.f_int1;
32919
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32920
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32922
# check trigger-5 success: 1
32923
DROP TRIGGER trg_1;
32924
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32925
f_int2 = CAST(f_char1 AS SIGNED INT),
32926
f_charbig = 'just inserted'
32927
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32929
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32930
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32931
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32932
'just inserted' FROM t0_template
32933
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32934
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32936
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32937
f_charbig = 'updated by trigger'
32938
WHERE f_int1 = - old.f_int1;
32940
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32941
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32943
# check trigger-6 success: 1
32944
DROP TRIGGER trg_1;
32945
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32946
f_int2 = CAST(f_char1 AS SIGNED INT),
32947
f_charbig = 'just inserted'
32948
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32950
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32951
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32952
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32953
'just inserted' FROM t0_template
32954
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32955
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32957
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32958
f_charbig = 'updated by trigger'
32959
WHERE f_int1 = - old.f_int1;
32962
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32964
# check trigger-7 success: 1
32965
DROP TRIGGER trg_1;
32966
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32967
f_int2 = CAST(f_char1 AS SIGNED INT),
32968
f_charbig = 'just inserted'
32969
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32971
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32972
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32973
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32974
'just inserted' FROM t0_template
32975
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32976
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32978
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32979
f_charbig = 'updated by trigger'
32980
WHERE f_int1 = - old.f_int1;
32983
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32985
# check trigger-8 success: 1
32986
DROP TRIGGER trg_1;
32987
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32988
f_int2 = CAST(f_char1 AS SIGNED INT),
32989
f_charbig = 'just inserted'
32990
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32992
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32994
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32995
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32997
SET new.f_int1 = old.f_int1 + @max_row,
32998
new.f_int2 = old.f_int2 - @max_row,
32999
new.f_charbig = '####updated per update trigger####';
33002
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33003
f_charbig = '####updated per update statement itself####';
33005
# check trigger-9 success: 1
33006
DROP TRIGGER trg_2;
33007
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33008
f_int2 = CAST(f_char1 AS SIGNED INT),
33009
f_charbig = CONCAT('===',f_char1,'===');
33010
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33012
SET new.f_int1 = new.f_int1 + @max_row,
33013
new.f_int2 = new.f_int2 - @max_row,
33014
new.f_charbig = '####updated per update trigger####';
33017
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33018
f_charbig = '####updated per update statement itself####';
33020
# check trigger-10 success: 1
33021
DROP TRIGGER trg_2;
33022
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33023
f_int2 = CAST(f_char1 AS SIGNED INT),
33024
f_charbig = CONCAT('===',f_char1,'===');
33025
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33027
SET new.f_int1 = @my_max1 + @counter,
33028
new.f_int2 = @my_min2 - @counter,
33029
new.f_charbig = '####updated per insert trigger####';
33030
SET @counter = @counter + 1;
33033
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33034
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33035
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33036
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33037
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33039
DROP TRIGGER trg_3;
33041
# check trigger-11 success: 1
33043
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33044
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33045
AND f_charbig = '####updated per insert trigger####';
33046
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33048
SET new.f_int1 = @my_max1 + @counter,
33049
new.f_int2 = @my_min2 - @counter,
33050
new.f_charbig = '####updated per insert trigger####';
33051
SET @counter = @counter + 1;
33054
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33055
INSERT INTO t1 (f_char1, f_char2, f_charbig)
33056
SELECT CAST(f_int1 AS CHAR),
33057
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33058
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33060
DROP TRIGGER trg_3;
33062
# check trigger-12 success: 1
33064
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33065
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33066
AND f_charbig = '####updated per insert trigger####';
33068
Table Op Msg_type Msg_text
33069
test.t1 analyze status OK
33070
CHECK TABLE t1 EXTENDED;
33071
Table Op Msg_type Msg_text
33072
test.t1 check status OK
33073
CHECKSUM TABLE t1 EXTENDED;
33075
test.t1 <some_value>
33077
Table Op Msg_type Msg_text
33078
test.t1 optimize status OK
33079
# check layout success: 1
33080
REPAIR TABLE t1 EXTENDED;
33081
Table Op Msg_type Msg_text
33082
test.t1 repair note The storage engine for the table doesn't support repair
33083
# check layout success: 1
33086
# check TRUNCATE success: 1
33087
# check layout success: 1
33088
# End usability test (inc/partition_check.inc)
33095
f_charbig VARCHAR(1000)
33098
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
33099
(PARTITION part_1 VALUES LESS THAN (0),
33100
PARTITION part_2 VALUES LESS THAN (5),
33101
PARTITION part_3 VALUES LESS THAN (10),
33102
PARTITION part_4 VALUES LESS THAN (2147483646));
33103
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33104
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33105
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
33106
ALTER TABLE t1 REMOVE PARTITIONING;
33107
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33108
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33109
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
33110
# Start usability test (inc/partition_check.inc)
33112
SHOW CREATE TABLE t1;
33114
t1 CREATE TABLE `t1` (
33115
`f_int1` int(11) DEFAULT NULL,
33116
`f_int2` int(11) DEFAULT NULL,
33117
`f_char1` char(20) DEFAULT NULL,
33118
`f_char2` char(20) DEFAULT NULL,
33119
`f_charbig` varchar(1000) DEFAULT NULL
33120
) ENGINE=InnoDB DEFAULT CHARSET=latin1
33122
# check prerequisites-1 success: 1
33123
# check COUNT(*) success: 1
33124
# check MIN/MAX(f_int1) success: 1
33125
# check MIN/MAX(f_int2) success: 1
33126
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33127
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33128
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
33129
WHERE f_int1 IN (2,3);
33130
# check prerequisites-3 success: 1
33131
DELETE FROM t1 WHERE f_charbig = 'delete me';
33132
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
33133
# check read via f_int1 success: 1
33134
# check read via f_int2 success: 1
33136
# check multiple-1 success: 1
33137
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
33139
# check multiple-2 success: 1
33140
INSERT INTO t1 SELECT * FROM t0_template
33141
WHERE MOD(f_int1,3) = 0;
33143
# check multiple-3 success: 1
33144
UPDATE t1 SET f_int1 = f_int1 + @max_row
33145
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
33146
AND @max_row_div2 + @max_row_div4;
33148
# check multiple-4 success: 1
33150
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
33151
AND @max_row_div2 + @max_row_div4 + @max_row;
33153
# check multiple-5 success: 1
33154
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
33156
SET f_int1 = @cur_value , f_int2 = @cur_value,
33157
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33158
f_charbig = '#SINGLE#';
33160
# check single-1 success: 1
33161
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
33163
SET f_int1 = @cur_value , f_int2 = @cur_value,
33164
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33165
f_charbig = '#SINGLE#';
33167
# check single-2 success: 1
33168
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
33169
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
33170
UPDATE t1 SET f_int1 = @cur_value2
33171
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
33173
# check single-3 success: 1
33174
SET @cur_value1= -1;
33175
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
33176
UPDATE t1 SET f_int1 = @cur_value1
33177
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
33179
# check single-4 success: 1
33180
SELECT MAX(f_int1) INTO @cur_value FROM t1;
33181
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
33183
# check single-5 success: 1
33184
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
33186
# check single-6 success: 1
33187
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
33189
# check single-7 success: 1
33190
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
33191
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
33192
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
33193
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
33194
f_charbig = '#NULL#';
33196
SET f_int1 = NULL , f_int2 = -@max_row,
33197
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
33198
f_charbig = '#NULL#';
33199
# check null success: 1
33201
# check null-1 success: 1
33202
UPDATE t1 SET f_int1 = -@max_row
33203
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33204
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33206
# check null-2 success: 1
33207
UPDATE t1 SET f_int1 = NULL
33208
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33209
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33211
# check null-3 success: 1
33213
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33214
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33216
# check null-4 success: 1
33218
WHERE f_int1 = 0 AND f_int2 = 0
33219
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
33220
AND f_charbig = '#NULL#';
33222
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33223
SELECT f_int1, f_int1, '', '', 'was inserted'
33224
FROM t0_template source_tab
33225
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33227
# check transactions-1 success: 1
33230
# check transactions-2 success: 1
33233
# check transactions-3 success: 1
33234
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33238
# check transactions-4 success: 1
33239
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33240
SELECT f_int1, f_int1, '', '', 'was inserted'
33241
FROM t0_template source_tab
33242
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33244
# check transactions-5 success: 1
33247
# check transactions-6 success: 1
33248
# INFO: Storage engine used for t1 seems to be transactional.
33251
# check transactions-7 success: 1
33252
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33254
SET @@session.sql_mode = 'traditional';
33255
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
33256
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33257
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
33258
'', '', 'was inserted' FROM t0_template
33259
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33260
ERROR 22012: Division by 0
33263
# check transactions-8 success: 1
33264
# INFO: Storage engine used for t1 seems to be able to revert
33265
# changes made by the failing statement.
33266
SET @@session.sql_mode = '';
33268
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33270
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33272
# check special-1 success: 1
33273
UPDATE t1 SET f_charbig = '';
33275
# check special-2 success: 1
33276
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33277
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33278
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33279
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33280
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33281
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33282
'just inserted' FROM t0_template
33283
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33284
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
33286
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33287
f_charbig = 'updated by trigger'
33288
WHERE f_int1 = new.f_int1;
33290
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33291
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33292
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33294
# check trigger-1 success: 1
33295
DROP TRIGGER trg_1;
33296
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33297
f_int2 = CAST(f_char1 AS SIGNED INT),
33298
f_charbig = 'just inserted'
33299
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33301
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33302
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33303
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33304
'just inserted' FROM t0_template
33305
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33306
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
33308
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33309
f_charbig = 'updated by trigger'
33310
WHERE f_int1 = new.f_int1;
33312
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33313
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33314
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33316
# check trigger-2 success: 1
33317
DROP TRIGGER trg_1;
33318
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33319
f_int2 = CAST(f_char1 AS SIGNED INT),
33320
f_charbig = 'just inserted'
33321
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33323
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33324
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33325
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33326
'just inserted' FROM t0_template
33327
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33328
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33330
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33331
f_charbig = 'updated by trigger'
33332
WHERE f_int1 = new.f_int1;
33334
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33335
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33337
# check trigger-3 success: 1
33338
DROP TRIGGER trg_1;
33339
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33340
f_int2 = CAST(f_char1 AS SIGNED INT),
33341
f_charbig = 'just inserted'
33342
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33344
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33345
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33346
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33347
'just inserted' FROM t0_template
33348
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33349
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33351
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33352
f_charbig = 'updated by trigger'
33353
WHERE f_int1 = - old.f_int1;
33355
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33356
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33358
# check trigger-4 success: 1
33359
DROP TRIGGER trg_1;
33360
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33361
f_int2 = CAST(f_char1 AS SIGNED INT),
33362
f_charbig = 'just inserted'
33363
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33365
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33366
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33367
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33368
'just inserted' FROM t0_template
33369
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33370
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33372
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33373
f_charbig = 'updated by trigger'
33374
WHERE f_int1 = new.f_int1;
33376
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33377
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33379
# check trigger-5 success: 1
33380
DROP TRIGGER trg_1;
33381
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33382
f_int2 = CAST(f_char1 AS SIGNED INT),
33383
f_charbig = 'just inserted'
33384
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33386
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33387
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33388
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33389
'just inserted' FROM t0_template
33390
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33391
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33393
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33394
f_charbig = 'updated by trigger'
33395
WHERE f_int1 = - old.f_int1;
33397
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33398
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33400
# check trigger-6 success: 1
33401
DROP TRIGGER trg_1;
33402
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33403
f_int2 = CAST(f_char1 AS SIGNED INT),
33404
f_charbig = 'just inserted'
33405
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33407
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33408
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33409
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33410
'just inserted' FROM t0_template
33411
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33412
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
33414
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33415
f_charbig = 'updated by trigger'
33416
WHERE f_int1 = - old.f_int1;
33419
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33421
# check trigger-7 success: 1
33422
DROP TRIGGER trg_1;
33423
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33424
f_int2 = CAST(f_char1 AS SIGNED INT),
33425
f_charbig = 'just inserted'
33426
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33428
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33429
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33430
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33431
'just inserted' FROM t0_template
33432
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33433
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33435
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33436
f_charbig = 'updated by trigger'
33437
WHERE f_int1 = - old.f_int1;
33440
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33442
# check trigger-8 success: 1
33443
DROP TRIGGER trg_1;
33444
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33445
f_int2 = CAST(f_char1 AS SIGNED INT),
33446
f_charbig = 'just inserted'
33447
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33449
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33451
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33452
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33454
SET new.f_int1 = old.f_int1 + @max_row,
33455
new.f_int2 = old.f_int2 - @max_row,
33456
new.f_charbig = '####updated per update trigger####';
33459
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33460
f_charbig = '####updated per update statement itself####';
33462
# check trigger-9 success: 1
33463
DROP TRIGGER trg_2;
33464
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33465
f_int2 = CAST(f_char1 AS SIGNED INT),
33466
f_charbig = CONCAT('===',f_char1,'===');
33467
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33469
SET new.f_int1 = new.f_int1 + @max_row,
33470
new.f_int2 = new.f_int2 - @max_row,
33471
new.f_charbig = '####updated per update trigger####';
33474
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33475
f_charbig = '####updated per update statement itself####';
33477
# check trigger-10 success: 1
33478
DROP TRIGGER trg_2;
33479
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33480
f_int2 = CAST(f_char1 AS SIGNED INT),
33481
f_charbig = CONCAT('===',f_char1,'===');
33482
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33484
SET new.f_int1 = @my_max1 + @counter,
33485
new.f_int2 = @my_min2 - @counter,
33486
new.f_charbig = '####updated per insert trigger####';
33487
SET @counter = @counter + 1;
33490
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33491
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33492
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33493
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33494
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33496
DROP TRIGGER trg_3;
33498
# check trigger-11 success: 1
33500
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33501
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33502
AND f_charbig = '####updated per insert trigger####';
33503
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33505
SET new.f_int1 = @my_max1 + @counter,
33506
new.f_int2 = @my_min2 - @counter,
33507
new.f_charbig = '####updated per insert trigger####';
33508
SET @counter = @counter + 1;
33511
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33512
INSERT INTO t1 (f_char1, f_char2, f_charbig)
33513
SELECT CAST(f_int1 AS CHAR),
33514
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33515
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33517
DROP TRIGGER trg_3;
33519
# check trigger-12 success: 1
33521
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33522
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33523
AND f_charbig = '####updated per insert trigger####';
33525
Table Op Msg_type Msg_text
33526
test.t1 analyze status OK
33527
CHECK TABLE t1 EXTENDED;
33528
Table Op Msg_type Msg_text
33529
test.t1 check status OK
33530
CHECKSUM TABLE t1 EXTENDED;
33532
test.t1 <some_value>
33534
Table Op Msg_type Msg_text
33535
test.t1 optimize status OK
33536
# check layout success: 1
33537
REPAIR TABLE t1 EXTENDED;
33538
Table Op Msg_type Msg_text
33539
test.t1 repair note The storage engine for the table doesn't support repair
33540
# check layout success: 1
33543
# check TRUNCATE success: 1
33544
# check layout success: 1
33545
# End usability test (inc/partition_check.inc)
33552
f_charbig VARCHAR(1000)
33555
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
33556
(PARTITION part_1 VALUES LESS THAN (0)
33557
(SUBPARTITION subpart11, SUBPARTITION subpart12),
33558
PARTITION part_2 VALUES LESS THAN (5)
33559
(SUBPARTITION subpart21, SUBPARTITION subpart22),
33560
PARTITION part_3 VALUES LESS THAN (10)
33561
(SUBPARTITION subpart31, SUBPARTITION subpart32),
33562
PARTITION part_4 VALUES LESS THAN (2147483646)
33563
(SUBPARTITION subpart41, SUBPARTITION subpart42));
33564
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33565
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33566
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
33567
ALTER TABLE t1 REMOVE PARTITIONING;
33568
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33569
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33570
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
33571
# Start usability test (inc/partition_check.inc)
33573
SHOW CREATE TABLE t1;
33575
t1 CREATE TABLE `t1` (
33576
`f_int1` int(11) DEFAULT NULL,
33577
`f_int2` int(11) DEFAULT NULL,
33578
`f_char1` char(20) DEFAULT NULL,
33579
`f_char2` char(20) DEFAULT NULL,
33580
`f_charbig` varchar(1000) DEFAULT NULL
33581
) ENGINE=InnoDB DEFAULT CHARSET=latin1
33583
# check prerequisites-1 success: 1
33584
# check COUNT(*) success: 1
33585
# check MIN/MAX(f_int1) success: 1
33586
# check MIN/MAX(f_int2) success: 1
33587
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33588
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33589
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
33590
WHERE f_int1 IN (2,3);
33591
# check prerequisites-3 success: 1
33592
DELETE FROM t1 WHERE f_charbig = 'delete me';
33593
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
33594
# check read via f_int1 success: 1
33595
# check read via f_int2 success: 1
33597
# check multiple-1 success: 1
33598
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
33600
# check multiple-2 success: 1
33601
INSERT INTO t1 SELECT * FROM t0_template
33602
WHERE MOD(f_int1,3) = 0;
33604
# check multiple-3 success: 1
33605
UPDATE t1 SET f_int1 = f_int1 + @max_row
33606
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
33607
AND @max_row_div2 + @max_row_div4;
33609
# check multiple-4 success: 1
33611
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
33612
AND @max_row_div2 + @max_row_div4 + @max_row;
33614
# check multiple-5 success: 1
33615
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
33617
SET f_int1 = @cur_value , f_int2 = @cur_value,
33618
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33619
f_charbig = '#SINGLE#';
33621
# check single-1 success: 1
33622
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
33624
SET f_int1 = @cur_value , f_int2 = @cur_value,
33625
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33626
f_charbig = '#SINGLE#';
33628
# check single-2 success: 1
33629
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
33630
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
33631
UPDATE t1 SET f_int1 = @cur_value2
33632
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
33634
# check single-3 success: 1
33635
SET @cur_value1= -1;
33636
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
33637
UPDATE t1 SET f_int1 = @cur_value1
33638
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
33640
# check single-4 success: 1
33641
SELECT MAX(f_int1) INTO @cur_value FROM t1;
33642
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
33644
# check single-5 success: 1
33645
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
33647
# check single-6 success: 1
33648
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
33650
# check single-7 success: 1
33651
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
33652
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
33653
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
33654
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
33655
f_charbig = '#NULL#';
33657
SET f_int1 = NULL , f_int2 = -@max_row,
33658
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
33659
f_charbig = '#NULL#';
33660
# check null success: 1
33662
# check null-1 success: 1
33663
UPDATE t1 SET f_int1 = -@max_row
33664
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33665
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33667
# check null-2 success: 1
33668
UPDATE t1 SET f_int1 = NULL
33669
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33670
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33672
# check null-3 success: 1
33674
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33675
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33677
# check null-4 success: 1
33679
WHERE f_int1 = 0 AND f_int2 = 0
33680
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
33681
AND f_charbig = '#NULL#';
33683
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33684
SELECT f_int1, f_int1, '', '', 'was inserted'
33685
FROM t0_template source_tab
33686
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33688
# check transactions-1 success: 1
33691
# check transactions-2 success: 1
33694
# check transactions-3 success: 1
33695
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33699
# check transactions-4 success: 1
33700
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33701
SELECT f_int1, f_int1, '', '', 'was inserted'
33702
FROM t0_template source_tab
33703
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33705
# check transactions-5 success: 1
33708
# check transactions-6 success: 1
33709
# INFO: Storage engine used for t1 seems to be transactional.
33712
# check transactions-7 success: 1
33713
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33715
SET @@session.sql_mode = 'traditional';
33716
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
33717
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33718
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
33719
'', '', 'was inserted' FROM t0_template
33720
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33721
ERROR 22012: Division by 0
33724
# check transactions-8 success: 1
33725
# INFO: Storage engine used for t1 seems to be able to revert
33726
# changes made by the failing statement.
33727
SET @@session.sql_mode = '';
33729
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33731
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33733
# check special-1 success: 1
33734
UPDATE t1 SET f_charbig = '';
33736
# check special-2 success: 1
33737
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33738
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33739
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33740
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33741
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33742
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33743
'just inserted' FROM t0_template
33744
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33745
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
33747
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33748
f_charbig = 'updated by trigger'
33749
WHERE f_int1 = new.f_int1;
33751
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33752
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33753
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33755
# check trigger-1 success: 1
33756
DROP TRIGGER trg_1;
33757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33758
f_int2 = CAST(f_char1 AS SIGNED INT),
33759
f_charbig = 'just inserted'
33760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33765
'just inserted' FROM t0_template
33766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33767
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
33769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33770
f_charbig = 'updated by trigger'
33771
WHERE f_int1 = new.f_int1;
33773
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33774
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33775
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33777
# check trigger-2 success: 1
33778
DROP TRIGGER trg_1;
33779
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33780
f_int2 = CAST(f_char1 AS SIGNED INT),
33781
f_charbig = 'just inserted'
33782
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33784
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33785
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33786
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33787
'just inserted' FROM t0_template
33788
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33789
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33791
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33792
f_charbig = 'updated by trigger'
33793
WHERE f_int1 = new.f_int1;
33795
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33796
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33798
# check trigger-3 success: 1
33799
DROP TRIGGER trg_1;
33800
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33801
f_int2 = CAST(f_char1 AS SIGNED INT),
33802
f_charbig = 'just inserted'
33803
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33805
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33806
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33807
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33808
'just inserted' FROM t0_template
33809
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33810
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33812
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33813
f_charbig = 'updated by trigger'
33814
WHERE f_int1 = - old.f_int1;
33816
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33817
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33819
# check trigger-4 success: 1
33820
DROP TRIGGER trg_1;
33821
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33822
f_int2 = CAST(f_char1 AS SIGNED INT),
33823
f_charbig = 'just inserted'
33824
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33826
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33827
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33828
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33829
'just inserted' FROM t0_template
33830
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33831
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33833
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33834
f_charbig = 'updated by trigger'
33835
WHERE f_int1 = new.f_int1;
33837
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33838
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33840
# check trigger-5 success: 1
33841
DROP TRIGGER trg_1;
33842
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33843
f_int2 = CAST(f_char1 AS SIGNED INT),
33844
f_charbig = 'just inserted'
33845
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33847
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33848
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33849
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33850
'just inserted' FROM t0_template
33851
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33852
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33854
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33855
f_charbig = 'updated by trigger'
33856
WHERE f_int1 = - old.f_int1;
33858
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33859
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33861
# check trigger-6 success: 1
33862
DROP TRIGGER trg_1;
33863
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33864
f_int2 = CAST(f_char1 AS SIGNED INT),
33865
f_charbig = 'just inserted'
33866
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33868
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33869
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33870
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33871
'just inserted' FROM t0_template
33872
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33873
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
33875
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33876
f_charbig = 'updated by trigger'
33877
WHERE f_int1 = - old.f_int1;
33880
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33882
# check trigger-7 success: 1
33883
DROP TRIGGER trg_1;
33884
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33885
f_int2 = CAST(f_char1 AS SIGNED INT),
33886
f_charbig = 'just inserted'
33887
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33889
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33890
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33891
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33892
'just inserted' FROM t0_template
33893
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33894
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33896
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33897
f_charbig = 'updated by trigger'
33898
WHERE f_int1 = - old.f_int1;
33901
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33903
# check trigger-8 success: 1
33904
DROP TRIGGER trg_1;
33905
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33906
f_int2 = CAST(f_char1 AS SIGNED INT),
33907
f_charbig = 'just inserted'
33908
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33910
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33912
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33913
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33915
SET new.f_int1 = old.f_int1 + @max_row,
33916
new.f_int2 = old.f_int2 - @max_row,
33917
new.f_charbig = '####updated per update trigger####';
33920
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33921
f_charbig = '####updated per update statement itself####';
33923
# check trigger-9 success: 1
33924
DROP TRIGGER trg_2;
33925
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33926
f_int2 = CAST(f_char1 AS SIGNED INT),
33927
f_charbig = CONCAT('===',f_char1,'===');
33928
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33930
SET new.f_int1 = new.f_int1 + @max_row,
33931
new.f_int2 = new.f_int2 - @max_row,
33932
new.f_charbig = '####updated per update trigger####';
33935
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33936
f_charbig = '####updated per update statement itself####';
33938
# check trigger-10 success: 1
33939
DROP TRIGGER trg_2;
33940
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33941
f_int2 = CAST(f_char1 AS SIGNED INT),
33942
f_charbig = CONCAT('===',f_char1,'===');
33943
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33945
SET new.f_int1 = @my_max1 + @counter,
33946
new.f_int2 = @my_min2 - @counter,
33947
new.f_charbig = '####updated per insert trigger####';
33948
SET @counter = @counter + 1;
33951
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33952
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33953
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33954
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33955
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33957
DROP TRIGGER trg_3;
33959
# check trigger-11 success: 1
33961
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33962
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33963
AND f_charbig = '####updated per insert trigger####';
33964
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33966
SET new.f_int1 = @my_max1 + @counter,
33967
new.f_int2 = @my_min2 - @counter,
33968
new.f_charbig = '####updated per insert trigger####';
33969
SET @counter = @counter + 1;
33972
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33973
INSERT INTO t1 (f_char1, f_char2, f_charbig)
33974
SELECT CAST(f_int1 AS CHAR),
33975
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33976
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33978
DROP TRIGGER trg_3;
33980
# check trigger-12 success: 1
33982
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33983
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33984
AND f_charbig = '####updated per insert trigger####';
33986
Table Op Msg_type Msg_text
33987
test.t1 analyze status OK
33988
CHECK TABLE t1 EXTENDED;
33989
Table Op Msg_type Msg_text
33990
test.t1 check status OK
33991
CHECKSUM TABLE t1 EXTENDED;
33993
test.t1 <some_value>
33995
Table Op Msg_type Msg_text
33996
test.t1 optimize status OK
33997
# check layout success: 1
33998
REPAIR TABLE t1 EXTENDED;
33999
Table Op Msg_type Msg_text
34000
test.t1 repair note The storage engine for the table doesn't support repair
34001
# check layout success: 1
34004
# check TRUNCATE success: 1
34005
# check layout success: 1
34006
# End usability test (inc/partition_check.inc)
34013
f_charbig VARCHAR(1000)
34016
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
34017
(PARTITION part_1 VALUES IN (0)
34018
(SUBPARTITION sp11, SUBPARTITION sp12),
34019
PARTITION part_2 VALUES IN (1)
34020
(SUBPARTITION sp21, SUBPARTITION sp22),
34021
PARTITION part_3 VALUES IN (2)
34022
(SUBPARTITION sp31, SUBPARTITION sp32),
34023
PARTITION part_4 VALUES IN (NULL)
34024
(SUBPARTITION sp41, SUBPARTITION sp42));
34025
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34026
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34027
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34028
ALTER TABLE t1 REMOVE PARTITIONING;
34029
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34030
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34031
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34032
# Start usability test (inc/partition_check.inc)
34034
SHOW CREATE TABLE t1;
34036
t1 CREATE TABLE `t1` (
34037
`f_int1` int(11) DEFAULT NULL,
34038
`f_int2` int(11) DEFAULT NULL,
34039
`f_char1` char(20) DEFAULT NULL,
34040
`f_char2` char(20) DEFAULT NULL,
34041
`f_charbig` varchar(1000) DEFAULT NULL
34042
) ENGINE=InnoDB DEFAULT CHARSET=latin1
34044
# check prerequisites-1 success: 1
34045
# check COUNT(*) success: 1
34046
# check MIN/MAX(f_int1) success: 1
34047
# check MIN/MAX(f_int2) success: 1
34048
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34049
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34050
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34051
WHERE f_int1 IN (2,3);
34052
# check prerequisites-3 success: 1
34053
DELETE FROM t1 WHERE f_charbig = 'delete me';
34054
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
34055
# check read via f_int1 success: 1
34056
# check read via f_int2 success: 1
34058
# check multiple-1 success: 1
34059
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34061
# check multiple-2 success: 1
34062
INSERT INTO t1 SELECT * FROM t0_template
34063
WHERE MOD(f_int1,3) = 0;
34065
# check multiple-3 success: 1
34066
UPDATE t1 SET f_int1 = f_int1 + @max_row
34067
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
34068
AND @max_row_div2 + @max_row_div4;
34070
# check multiple-4 success: 1
34072
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
34073
AND @max_row_div2 + @max_row_div4 + @max_row;
34075
# check multiple-5 success: 1
34076
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
34078
SET f_int1 = @cur_value , f_int2 = @cur_value,
34079
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34080
f_charbig = '#SINGLE#';
34082
# check single-1 success: 1
34083
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
34085
SET f_int1 = @cur_value , f_int2 = @cur_value,
34086
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34087
f_charbig = '#SINGLE#';
34089
# check single-2 success: 1
34090
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
34091
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
34092
UPDATE t1 SET f_int1 = @cur_value2
34093
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
34095
# check single-3 success: 1
34096
SET @cur_value1= -1;
34097
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
34098
UPDATE t1 SET f_int1 = @cur_value1
34099
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
34101
# check single-4 success: 1
34102
SELECT MAX(f_int1) INTO @cur_value FROM t1;
34103
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
34105
# check single-5 success: 1
34106
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
34108
# check single-6 success: 1
34109
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
34111
# check single-7 success: 1
34112
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
34113
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
34114
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
34115
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
34116
f_charbig = '#NULL#';
34118
SET f_int1 = NULL , f_int2 = -@max_row,
34119
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
34120
f_charbig = '#NULL#';
34121
# check null success: 1
34123
# check null-1 success: 1
34124
UPDATE t1 SET f_int1 = -@max_row
34125
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34126
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34128
# check null-2 success: 1
34129
UPDATE t1 SET f_int1 = NULL
34130
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34131
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34133
# check null-3 success: 1
34135
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34136
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34138
# check null-4 success: 1
34140
WHERE f_int1 = 0 AND f_int2 = 0
34141
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
34142
AND f_charbig = '#NULL#';
34144
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34145
SELECT f_int1, f_int1, '', '', 'was inserted'
34146
FROM t0_template source_tab
34147
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34149
# check transactions-1 success: 1
34152
# check transactions-2 success: 1
34155
# check transactions-3 success: 1
34156
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34160
# check transactions-4 success: 1
34161
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34162
SELECT f_int1, f_int1, '', '', 'was inserted'
34163
FROM t0_template source_tab
34164
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34166
# check transactions-5 success: 1
34169
# check transactions-6 success: 1
34170
# INFO: Storage engine used for t1 seems to be transactional.
34173
# check transactions-7 success: 1
34174
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34176
SET @@session.sql_mode = 'traditional';
34177
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
34178
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34179
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
34180
'', '', 'was inserted' FROM t0_template
34181
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34182
ERROR 22012: Division by 0
34185
# check transactions-8 success: 1
34186
# INFO: Storage engine used for t1 seems to be able to revert
34187
# changes made by the failing statement.
34188
SET @@session.sql_mode = '';
34190
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34192
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
34194
# check special-1 success: 1
34195
UPDATE t1 SET f_charbig = '';
34197
# check special-2 success: 1
34198
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
34199
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34200
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
34201
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34202
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34203
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34204
'just inserted' FROM t0_template
34205
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34206
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
34208
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34209
f_charbig = 'updated by trigger'
34210
WHERE f_int1 = new.f_int1;
34212
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34213
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34216
# check trigger-1 success: 1
34217
DROP TRIGGER trg_1;
34218
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34219
f_int2 = CAST(f_char1 AS SIGNED INT),
34220
f_charbig = 'just inserted'
34221
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34223
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34224
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34225
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34226
'just inserted' FROM t0_template
34227
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34228
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
34230
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34231
f_charbig = 'updated by trigger'
34232
WHERE f_int1 = new.f_int1;
34234
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34235
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34236
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34238
# check trigger-2 success: 1
34239
DROP TRIGGER trg_1;
34240
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34241
f_int2 = CAST(f_char1 AS SIGNED INT),
34242
f_charbig = 'just inserted'
34243
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34245
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34246
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34247
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34248
'just inserted' FROM t0_template
34249
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34250
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34252
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34253
f_charbig = 'updated by trigger'
34254
WHERE f_int1 = new.f_int1;
34256
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34257
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34259
# check trigger-3 success: 1
34260
DROP TRIGGER trg_1;
34261
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34262
f_int2 = CAST(f_char1 AS SIGNED INT),
34263
f_charbig = 'just inserted'
34264
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34266
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34267
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34268
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34269
'just inserted' FROM t0_template
34270
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34271
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34273
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34274
f_charbig = 'updated by trigger'
34275
WHERE f_int1 = - old.f_int1;
34277
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34278
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34280
# check trigger-4 success: 1
34281
DROP TRIGGER trg_1;
34282
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34283
f_int2 = CAST(f_char1 AS SIGNED INT),
34284
f_charbig = 'just inserted'
34285
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34287
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34288
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34289
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34290
'just inserted' FROM t0_template
34291
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34292
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34294
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34295
f_charbig = 'updated by trigger'
34296
WHERE f_int1 = new.f_int1;
34298
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34299
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34301
# check trigger-5 success: 1
34302
DROP TRIGGER trg_1;
34303
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34304
f_int2 = CAST(f_char1 AS SIGNED INT),
34305
f_charbig = 'just inserted'
34306
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34308
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34309
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34310
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34311
'just inserted' FROM t0_template
34312
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34313
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34315
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34316
f_charbig = 'updated by trigger'
34317
WHERE f_int1 = - old.f_int1;
34319
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34320
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34322
# check trigger-6 success: 1
34323
DROP TRIGGER trg_1;
34324
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34325
f_int2 = CAST(f_char1 AS SIGNED INT),
34326
f_charbig = 'just inserted'
34327
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34329
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34330
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34331
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34332
'just inserted' FROM t0_template
34333
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34334
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34336
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34337
f_charbig = 'updated by trigger'
34338
WHERE f_int1 = - old.f_int1;
34341
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34343
# check trigger-7 success: 1
34344
DROP TRIGGER trg_1;
34345
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34346
f_int2 = CAST(f_char1 AS SIGNED INT),
34347
f_charbig = 'just inserted'
34348
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34350
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34351
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34352
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34353
'just inserted' FROM t0_template
34354
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34355
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
34357
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34358
f_charbig = 'updated by trigger'
34359
WHERE f_int1 = - old.f_int1;
34362
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34364
# check trigger-8 success: 1
34365
DROP TRIGGER trg_1;
34366
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34367
f_int2 = CAST(f_char1 AS SIGNED INT),
34368
f_charbig = 'just inserted'
34369
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34371
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34373
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34374
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34376
SET new.f_int1 = old.f_int1 + @max_row,
34377
new.f_int2 = old.f_int2 - @max_row,
34378
new.f_charbig = '####updated per update trigger####';
34381
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34382
f_charbig = '####updated per update statement itself####';
34384
# check trigger-9 success: 1
34385
DROP TRIGGER trg_2;
34386
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34387
f_int2 = CAST(f_char1 AS SIGNED INT),
34388
f_charbig = CONCAT('===',f_char1,'===');
34389
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34391
SET new.f_int1 = new.f_int1 + @max_row,
34392
new.f_int2 = new.f_int2 - @max_row,
34393
new.f_charbig = '####updated per update trigger####';
34396
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34397
f_charbig = '####updated per update statement itself####';
34399
# check trigger-10 success: 1
34400
DROP TRIGGER trg_2;
34401
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34402
f_int2 = CAST(f_char1 AS SIGNED INT),
34403
f_charbig = CONCAT('===',f_char1,'===');
34404
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34406
SET new.f_int1 = @my_max1 + @counter,
34407
new.f_int2 = @my_min2 - @counter,
34408
new.f_charbig = '####updated per insert trigger####';
34409
SET @counter = @counter + 1;
34412
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34413
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34414
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34415
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34416
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34418
DROP TRIGGER trg_3;
34420
# check trigger-11 success: 1
34422
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34423
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34424
AND f_charbig = '####updated per insert trigger####';
34425
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34427
SET new.f_int1 = @my_max1 + @counter,
34428
new.f_int2 = @my_min2 - @counter,
34429
new.f_charbig = '####updated per insert trigger####';
34430
SET @counter = @counter + 1;
34433
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34434
INSERT INTO t1 (f_char1, f_char2, f_charbig)
34435
SELECT CAST(f_int1 AS CHAR),
34436
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34437
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34439
DROP TRIGGER trg_3;
34441
# check trigger-12 success: 1
34443
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34444
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34445
AND f_charbig = '####updated per insert trigger####';
34447
Table Op Msg_type Msg_text
34448
test.t1 analyze status OK
34449
CHECK TABLE t1 EXTENDED;
34450
Table Op Msg_type Msg_text
34451
test.t1 check status OK
34452
CHECKSUM TABLE t1 EXTENDED;
34454
test.t1 <some_value>
34456
Table Op Msg_type Msg_text
34457
test.t1 optimize status OK
34458
# check layout success: 1
34459
REPAIR TABLE t1 EXTENDED;
34460
Table Op Msg_type Msg_text
34461
test.t1 repair note The storage engine for the table doesn't support repair
34462
# check layout success: 1
34465
# check TRUNCATE success: 1
34466
# check layout success: 1
34467
# End usability test (inc/partition_check.inc)
34474
f_charbig VARCHAR(1000)
34477
PARTITION BY LIST(ABS(MOD(f_int1,2)))
34478
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
34479
(PARTITION part_1 VALUES IN (0),
34480
PARTITION part_2 VALUES IN (1),
34481
PARTITION part_3 VALUES IN (NULL));
34482
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34483
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34484
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34485
ALTER TABLE t1 REMOVE PARTITIONING;
34486
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34487
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34488
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34489
# Start usability test (inc/partition_check.inc)
34491
SHOW CREATE TABLE t1;
34493
t1 CREATE TABLE `t1` (
34494
`f_int1` int(11) DEFAULT NULL,
34495
`f_int2` int(11) DEFAULT NULL,
34496
`f_char1` char(20) DEFAULT NULL,
34497
`f_char2` char(20) DEFAULT NULL,
34498
`f_charbig` varchar(1000) DEFAULT NULL
34499
) ENGINE=InnoDB DEFAULT CHARSET=latin1
34501
# check prerequisites-1 success: 1
34502
# check COUNT(*) success: 1
34503
# check MIN/MAX(f_int1) success: 1
34504
# check MIN/MAX(f_int2) success: 1
34505
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34506
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34507
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34508
WHERE f_int1 IN (2,3);
34509
# check prerequisites-3 success: 1
34510
DELETE FROM t1 WHERE f_charbig = 'delete me';
34511
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
34512
# check read via f_int1 success: 1
34513
# check read via f_int2 success: 1
34515
# check multiple-1 success: 1
34516
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34518
# check multiple-2 success: 1
34519
INSERT INTO t1 SELECT * FROM t0_template
34520
WHERE MOD(f_int1,3) = 0;
34522
# check multiple-3 success: 1
34523
UPDATE t1 SET f_int1 = f_int1 + @max_row
34524
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
34525
AND @max_row_div2 + @max_row_div4;
34527
# check multiple-4 success: 1
34529
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
34530
AND @max_row_div2 + @max_row_div4 + @max_row;
34532
# check multiple-5 success: 1
34533
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
34535
SET f_int1 = @cur_value , f_int2 = @cur_value,
34536
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34537
f_charbig = '#SINGLE#';
34539
# check single-1 success: 1
34540
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
34542
SET f_int1 = @cur_value , f_int2 = @cur_value,
34543
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34544
f_charbig = '#SINGLE#';
34546
# check single-2 success: 1
34547
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
34548
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
34549
UPDATE t1 SET f_int1 = @cur_value2
34550
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
34552
# check single-3 success: 1
34553
SET @cur_value1= -1;
34554
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
34555
UPDATE t1 SET f_int1 = @cur_value1
34556
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
34558
# check single-4 success: 1
34559
SELECT MAX(f_int1) INTO @cur_value FROM t1;
34560
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
34562
# check single-5 success: 1
34563
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
34565
# check single-6 success: 1
34566
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
34568
# check single-7 success: 1
34569
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
34570
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
34571
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
34572
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
34573
f_charbig = '#NULL#';
34575
SET f_int1 = NULL , f_int2 = -@max_row,
34576
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
34577
f_charbig = '#NULL#';
34578
# check null success: 1
34580
# check null-1 success: 1
34581
UPDATE t1 SET f_int1 = -@max_row
34582
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34583
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34585
# check null-2 success: 1
34586
UPDATE t1 SET f_int1 = NULL
34587
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34588
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34590
# check null-3 success: 1
34592
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34593
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34595
# check null-4 success: 1
34597
WHERE f_int1 = 0 AND f_int2 = 0
34598
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
34599
AND f_charbig = '#NULL#';
34601
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34602
SELECT f_int1, f_int1, '', '', 'was inserted'
34603
FROM t0_template source_tab
34604
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34606
# check transactions-1 success: 1
34609
# check transactions-2 success: 1
34612
# check transactions-3 success: 1
34613
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34617
# check transactions-4 success: 1
34618
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34619
SELECT f_int1, f_int1, '', '', 'was inserted'
34620
FROM t0_template source_tab
34621
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34623
# check transactions-5 success: 1
34626
# check transactions-6 success: 1
34627
# INFO: Storage engine used for t1 seems to be transactional.
34630
# check transactions-7 success: 1
34631
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34633
SET @@session.sql_mode = 'traditional';
34634
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
34635
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34636
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
34637
'', '', 'was inserted' FROM t0_template
34638
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34639
ERROR 22012: Division by 0
34642
# check transactions-8 success: 1
34643
# INFO: Storage engine used for t1 seems to be able to revert
34644
# changes made by the failing statement.
34645
SET @@session.sql_mode = '';
34647
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34649
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
34651
# check special-1 success: 1
34652
UPDATE t1 SET f_charbig = '';
34654
# check special-2 success: 1
34655
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
34656
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34657
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
34658
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34659
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34660
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34661
'just inserted' FROM t0_template
34662
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34663
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
34665
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34666
f_charbig = 'updated by trigger'
34667
WHERE f_int1 = new.f_int1;
34669
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34670
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34671
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34673
# check trigger-1 success: 1
34674
DROP TRIGGER trg_1;
34675
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34676
f_int2 = CAST(f_char1 AS SIGNED INT),
34677
f_charbig = 'just inserted'
34678
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34680
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34681
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34682
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34683
'just inserted' FROM t0_template
34684
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34685
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
34687
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34688
f_charbig = 'updated by trigger'
34689
WHERE f_int1 = new.f_int1;
34691
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34692
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34693
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34695
# check trigger-2 success: 1
34696
DROP TRIGGER trg_1;
34697
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34698
f_int2 = CAST(f_char1 AS SIGNED INT),
34699
f_charbig = 'just inserted'
34700
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34702
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34703
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34704
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34705
'just inserted' FROM t0_template
34706
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34707
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34709
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34710
f_charbig = 'updated by trigger'
34711
WHERE f_int1 = new.f_int1;
34713
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34714
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34716
# check trigger-3 success: 1
34717
DROP TRIGGER trg_1;
34718
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34719
f_int2 = CAST(f_char1 AS SIGNED INT),
34720
f_charbig = 'just inserted'
34721
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34723
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34724
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34725
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34726
'just inserted' FROM t0_template
34727
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34728
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34730
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34731
f_charbig = 'updated by trigger'
34732
WHERE f_int1 = - old.f_int1;
34734
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34735
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34737
# check trigger-4 success: 1
34738
DROP TRIGGER trg_1;
34739
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34740
f_int2 = CAST(f_char1 AS SIGNED INT),
34741
f_charbig = 'just inserted'
34742
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34744
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34745
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34746
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34747
'just inserted' FROM t0_template
34748
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34749
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34751
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34752
f_charbig = 'updated by trigger'
34753
WHERE f_int1 = new.f_int1;
34755
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34756
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34758
# check trigger-5 success: 1
34759
DROP TRIGGER trg_1;
34760
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34761
f_int2 = CAST(f_char1 AS SIGNED INT),
34762
f_charbig = 'just inserted'
34763
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34765
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34766
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34767
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34768
'just inserted' FROM t0_template
34769
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34770
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34772
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34773
f_charbig = 'updated by trigger'
34774
WHERE f_int1 = - old.f_int1;
34776
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34777
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34779
# check trigger-6 success: 1
34780
DROP TRIGGER trg_1;
34781
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34782
f_int2 = CAST(f_char1 AS SIGNED INT),
34783
f_charbig = 'just inserted'
34784
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34786
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34787
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34788
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34789
'just inserted' FROM t0_template
34790
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34791
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34793
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34794
f_charbig = 'updated by trigger'
34795
WHERE f_int1 = - old.f_int1;
34798
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34800
# check trigger-7 success: 1
34801
DROP TRIGGER trg_1;
34802
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34803
f_int2 = CAST(f_char1 AS SIGNED INT),
34804
f_charbig = 'just inserted'
34805
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34807
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34808
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34809
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34810
'just inserted' FROM t0_template
34811
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34812
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
34814
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34815
f_charbig = 'updated by trigger'
34816
WHERE f_int1 = - old.f_int1;
34819
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34821
# check trigger-8 success: 1
34822
DROP TRIGGER trg_1;
34823
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34824
f_int2 = CAST(f_char1 AS SIGNED INT),
34825
f_charbig = 'just inserted'
34826
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34828
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34830
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34831
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34833
SET new.f_int1 = old.f_int1 + @max_row,
34834
new.f_int2 = old.f_int2 - @max_row,
34835
new.f_charbig = '####updated per update trigger####';
34838
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34839
f_charbig = '####updated per update statement itself####';
34841
# check trigger-9 success: 1
34842
DROP TRIGGER trg_2;
34843
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34844
f_int2 = CAST(f_char1 AS SIGNED INT),
34845
f_charbig = CONCAT('===',f_char1,'===');
34846
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34848
SET new.f_int1 = new.f_int1 + @max_row,
34849
new.f_int2 = new.f_int2 - @max_row,
34850
new.f_charbig = '####updated per update trigger####';
34853
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34854
f_charbig = '####updated per update statement itself####';
34856
# check trigger-10 success: 1
34857
DROP TRIGGER trg_2;
34858
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34859
f_int2 = CAST(f_char1 AS SIGNED INT),
34860
f_charbig = CONCAT('===',f_char1,'===');
34861
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34863
SET new.f_int1 = @my_max1 + @counter,
34864
new.f_int2 = @my_min2 - @counter,
34865
new.f_charbig = '####updated per insert trigger####';
34866
SET @counter = @counter + 1;
34869
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34870
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34871
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34872
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34873
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34875
DROP TRIGGER trg_3;
34877
# check trigger-11 success: 1
34879
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34880
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34881
AND f_charbig = '####updated per insert trigger####';
34882
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34884
SET new.f_int1 = @my_max1 + @counter,
34885
new.f_int2 = @my_min2 - @counter,
34886
new.f_charbig = '####updated per insert trigger####';
34887
SET @counter = @counter + 1;
34890
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34891
INSERT INTO t1 (f_char1, f_char2, f_charbig)
34892
SELECT CAST(f_int1 AS CHAR),
34893
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34894
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34896
DROP TRIGGER trg_3;
34898
# check trigger-12 success: 1
34900
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34901
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34902
AND f_charbig = '####updated per insert trigger####';
34904
Table Op Msg_type Msg_text
34905
test.t1 analyze status OK
34906
CHECK TABLE t1 EXTENDED;
34907
Table Op Msg_type Msg_text
34908
test.t1 check status OK
34909
CHECKSUM TABLE t1 EXTENDED;
34911
test.t1 <some_value>
34913
Table Op Msg_type Msg_text
34914
test.t1 optimize status OK
34915
# check layout success: 1
34916
REPAIR TABLE t1 EXTENDED;
34917
Table Op Msg_type Msg_text
34918
test.t1 repair note The storage engine for the table doesn't support repair
34919
# check layout success: 1
34922
# check TRUNCATE success: 1
34923
# check layout success: 1
34924
# End usability test (inc/partition_check.inc)
34926
DROP VIEW IF EXISTS v1;
34927
DROP TABLE IF EXISTS t1;
34928
DROP TABLE IF EXISTS t0_aux;
34929
DROP TABLE IF EXISTS t0_definition;
34930
DROP TABLE IF EXISTS t0_template;