2
SET @@session.storage_engine = 'InnoDB';
4
#------------------------------------------------------------------------
5
# 0. Setting of auxiliary variables + Creation of an auxiliary tables
6
# needed in many testcases
7
#------------------------------------------------------------------------
8
SELECT @max_row DIV 2 INTO @max_row_div2;
9
SELECT @max_row DIV 3 INTO @max_row_div3;
10
SELECT @max_row DIV 4 INTO @max_row_div4;
11
SET @max_int_4 = 2147483647;
12
DROP TABLE IF EXISTS t0_template;
13
CREATE TABLE t0_template (
18
f_charbig VARCHAR(1000) ,
21
# Logging of <max_row> INSERTs into t0_template suppressed
22
DROP TABLE IF EXISTS t0_definition;
23
CREATE TABLE t0_definition (
25
create_command VARBINARY(5000),
26
file_list VARBINARY(10000),
29
DROP TABLE IF EXISTS t0_aux;
30
CREATE TABLE t0_aux ( f_int1 INTEGER,
34
f_charbig VARCHAR(1000) )
37
SET @@session.sql_mode= '';
38
# End of basic preparations needed for all tests
39
#-----------------------------------------------
41
#========================================================================
42
# 2 DROP PRIMARY KEY or UNIQUE INDEX
43
#========================================================================
44
#------------------------------------------------------------------------
45
# 2.1 Partitioning function contains one column(f_int1)
46
#------------------------------------------------------------------------
47
# 2.1.5 DROP PRIMARY KEY + UNIQUE INDEX consisting of two columns
48
DROP TABLE IF EXISTS t1;
54
f_charbig VARCHAR(1000)
55
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
57
PARTITION BY HASH(f_int1) PARTITIONS 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 DROP PRIMARY KEY, DROP INDEX uidx1;
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) NOT NULL DEFAULT '0',
71
`f_int2` int(11) NOT NULL DEFAULT '0',
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) PARTITIONS 2 */
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
ERROR 23000: Column 'f_int1' cannot be null
155
# check null success: 1
157
WHERE f_int1 = 0 AND f_int2 = 0
158
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
159
AND f_charbig = '#NULL#';
161
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
162
SELECT f_int1, f_int1, '', '', 'was inserted'
163
FROM t0_template source_tab
164
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
166
# check transactions-1 success: 1
169
# check transactions-2 success: 1
172
# check transactions-3 success: 1
173
DELETE FROM t1 WHERE f_charbig = 'was inserted';
177
# check transactions-4 success: 1
178
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
179
SELECT f_int1, f_int1, '', '', 'was inserted'
180
FROM t0_template source_tab
181
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
183
# check transactions-5 success: 1
186
# check transactions-6 success: 1
187
# INFO: Storage engine used for t1 seems to be transactional.
190
# check transactions-7 success: 1
191
DELETE FROM t1 WHERE f_charbig = 'was inserted';
193
SET @@session.sql_mode = 'traditional';
194
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
195
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
196
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
197
'', '', 'was inserted' FROM t0_template
198
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
199
ERROR 22012: Division by 0
202
# check transactions-8 success: 1
203
# INFO: Storage engine used for t1 seems to be able to revert
204
# changes made by the failing statement.
205
SET @@session.sql_mode = '';
207
DELETE FROM t1 WHERE f_charbig = 'was inserted';
209
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
211
# check special-1 success: 1
212
UPDATE t1 SET f_charbig = '';
214
# check special-2 success: 1
215
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
216
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
217
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
219
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
220
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
221
'just inserted' FROM t0_template
222
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
223
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
225
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
226
f_charbig = 'updated by trigger'
227
WHERE f_int1 = new.f_int1;
229
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
230
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
231
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
233
# check trigger-1 success: 1
235
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
236
f_int2 = CAST(f_char1 AS SIGNED INT),
237
f_charbig = 'just inserted'
238
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
240
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
241
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
242
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
243
'just inserted' FROM t0_template
244
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
245
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
247
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
248
f_charbig = 'updated by trigger'
249
WHERE f_int1 = new.f_int1;
251
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
252
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
253
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
255
# check trigger-2 success: 1
257
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
258
f_int2 = CAST(f_char1 AS SIGNED INT),
259
f_charbig = 'just inserted'
260
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
262
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
263
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
264
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
265
'just inserted' FROM t0_template
266
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
267
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
269
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
270
f_charbig = 'updated by trigger'
271
WHERE f_int1 = new.f_int1;
273
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
274
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
276
# check trigger-3 success: 1
278
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
279
f_int2 = CAST(f_char1 AS SIGNED INT),
280
f_charbig = 'just inserted'
281
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
283
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
284
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
285
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
286
'just inserted' FROM t0_template
287
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
288
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
290
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
291
f_charbig = 'updated by trigger'
292
WHERE f_int1 = - old.f_int1;
294
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
295
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
297
# check trigger-4 success: 1
299
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
300
f_int2 = CAST(f_char1 AS SIGNED INT),
301
f_charbig = 'just inserted'
302
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
304
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
305
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
306
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
307
'just inserted' FROM t0_template
308
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
309
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
311
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
312
f_charbig = 'updated by trigger'
313
WHERE f_int1 = new.f_int1;
315
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
316
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
318
# check trigger-5 success: 1
320
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
321
f_int2 = CAST(f_char1 AS SIGNED INT),
322
f_charbig = 'just inserted'
323
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
325
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
326
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
327
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
328
'just inserted' FROM t0_template
329
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
330
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
332
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
333
f_charbig = 'updated by trigger'
334
WHERE f_int1 = - old.f_int1;
336
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
337
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
339
# check trigger-6 success: 1
341
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
342
f_int2 = CAST(f_char1 AS SIGNED INT),
343
f_charbig = 'just inserted'
344
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
346
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
347
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
348
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
349
'just inserted' FROM t0_template
350
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
351
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
353
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
354
f_charbig = 'updated by trigger'
355
WHERE f_int1 = - old.f_int1;
358
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
360
# check trigger-7 success: 1
362
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
363
f_int2 = CAST(f_char1 AS SIGNED INT),
364
f_charbig = 'just inserted'
365
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
367
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
368
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
369
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
370
'just inserted' FROM t0_template
371
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
372
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
374
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
375
f_charbig = 'updated by trigger'
376
WHERE f_int1 = - old.f_int1;
379
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
381
# check trigger-8 success: 1
383
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
384
f_int2 = CAST(f_char1 AS SIGNED INT),
385
f_charbig = 'just inserted'
386
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
388
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
390
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
391
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
393
SET new.f_int1 = old.f_int1 + @max_row,
394
new.f_int2 = old.f_int2 - @max_row,
395
new.f_charbig = '####updated per update trigger####';
398
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
399
f_charbig = '####updated per update statement itself####';
401
# check trigger-9 success: 1
403
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
404
f_int2 = CAST(f_char1 AS SIGNED INT),
405
f_charbig = CONCAT('===',f_char1,'===');
406
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
408
SET new.f_int1 = new.f_int1 + @max_row,
409
new.f_int2 = new.f_int2 - @max_row,
410
new.f_charbig = '####updated per update trigger####';
413
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
414
f_charbig = '####updated per update statement itself####';
416
# check trigger-10 success: 1
418
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
419
f_int2 = CAST(f_char1 AS SIGNED INT),
420
f_charbig = CONCAT('===',f_char1,'===');
421
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
423
SET new.f_int1 = @my_max1 + @counter,
424
new.f_int2 = @my_min2 - @counter,
425
new.f_charbig = '####updated per insert trigger####';
426
SET @counter = @counter + 1;
429
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
430
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
431
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
432
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
433
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
437
# check trigger-11 success: 1
439
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
440
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
441
AND f_charbig = '####updated per insert trigger####';
442
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
444
SET new.f_int1 = @my_max1 + @counter,
445
new.f_int2 = @my_min2 - @counter,
446
new.f_charbig = '####updated per insert trigger####';
447
SET @counter = @counter + 1;
450
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
451
INSERT INTO t1 (f_char1, f_char2, f_charbig)
452
SELECT CAST(f_int1 AS CHAR),
453
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
454
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
458
# check trigger-12 success: 1
460
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
461
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
462
AND f_charbig = '####updated per insert trigger####';
464
Table Op Msg_type Msg_text
465
test.t1 analyze note The storage engine for the table doesn't support analyze
466
CHECK TABLE t1 EXTENDED;
467
Table Op Msg_type Msg_text
468
test.t1 check note The storage engine for the table doesn't support check
469
CHECKSUM TABLE t1 EXTENDED;
473
Table Op Msg_type Msg_text
474
test.t1 optimize note The storage engine for the table doesn't support optimize
475
# check layout success: 1
476
REPAIR TABLE t1 EXTENDED;
477
Table Op Msg_type Msg_text
478
test.t1 repair note The storage engine for the table doesn't support repair
479
# check layout success: 1
482
# check TRUNCATE success: 1
483
# check layout success: 1
484
# End usability test (inc/partition_check.inc)
491
f_charbig VARCHAR(1000)
492
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
494
PARTITION BY KEY(f_int1) PARTITIONS 5;
495
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
496
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
497
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
498
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
499
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
500
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
501
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
502
# Start usability test (inc/partition_check.inc)
504
SHOW CREATE TABLE t1;
506
t1 CREATE TABLE `t1` (
507
`f_int1` int(11) NOT NULL DEFAULT '0',
508
`f_int2` int(11) NOT NULL DEFAULT '0',
509
`f_char1` char(20) DEFAULT NULL,
510
`f_char2` char(20) DEFAULT NULL,
511
`f_charbig` varchar(1000) DEFAULT NULL
512
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) PARTITIONS 5 */
514
# check prerequisites-1 success: 1
515
# check COUNT(*) success: 1
516
# check MIN/MAX(f_int1) success: 1
517
# check MIN/MAX(f_int2) success: 1
518
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
519
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
520
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
521
WHERE f_int1 IN (2,3);
522
# check prerequisites-3 success: 1
523
DELETE FROM t1 WHERE f_charbig = 'delete me';
524
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
525
# check read via f_int1 success: 1
526
# check read via f_int2 success: 1
528
# check multiple-1 success: 1
529
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
531
# check multiple-2 success: 1
532
INSERT INTO t1 SELECT * FROM t0_template
533
WHERE MOD(f_int1,3) = 0;
535
# check multiple-3 success: 1
536
UPDATE t1 SET f_int1 = f_int1 + @max_row
537
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
538
AND @max_row_div2 + @max_row_div4;
540
# check multiple-4 success: 1
542
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
543
AND @max_row_div2 + @max_row_div4 + @max_row;
545
# check multiple-5 success: 1
546
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
548
SET f_int1 = @cur_value , f_int2 = @cur_value,
549
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
550
f_charbig = '#SINGLE#';
552
# check single-1 success: 1
553
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
555
SET f_int1 = @cur_value , f_int2 = @cur_value,
556
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
557
f_charbig = '#SINGLE#';
559
# check single-2 success: 1
560
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
561
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
562
UPDATE t1 SET f_int1 = @cur_value2
563
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
565
# check single-3 success: 1
567
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
568
UPDATE t1 SET f_int1 = @cur_value1
569
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
571
# check single-4 success: 1
572
SELECT MAX(f_int1) INTO @cur_value FROM t1;
573
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
575
# check single-5 success: 1
576
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
578
# check single-6 success: 1
579
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
581
# check single-7 success: 1
582
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
583
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
584
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
585
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
586
f_charbig = '#NULL#';
588
SET f_int1 = NULL , f_int2 = -@max_row,
589
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
590
f_charbig = '#NULL#';
591
ERROR 23000: Column 'f_int1' cannot be null
592
# check null success: 1
594
WHERE f_int1 = 0 AND f_int2 = 0
595
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
596
AND f_charbig = '#NULL#';
598
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
599
SELECT f_int1, f_int1, '', '', 'was inserted'
600
FROM t0_template source_tab
601
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
603
# check transactions-1 success: 1
606
# check transactions-2 success: 1
609
# check transactions-3 success: 1
610
DELETE FROM t1 WHERE f_charbig = 'was inserted';
614
# check transactions-4 success: 1
615
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
616
SELECT f_int1, f_int1, '', '', 'was inserted'
617
FROM t0_template source_tab
618
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
620
# check transactions-5 success: 1
623
# check transactions-6 success: 1
624
# INFO: Storage engine used for t1 seems to be transactional.
627
# check transactions-7 success: 1
628
DELETE FROM t1 WHERE f_charbig = 'was inserted';
630
SET @@session.sql_mode = 'traditional';
631
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
632
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
633
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
634
'', '', 'was inserted' FROM t0_template
635
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
636
ERROR 22012: Division by 0
639
# check transactions-8 success: 1
640
# INFO: Storage engine used for t1 seems to be able to revert
641
# changes made by the failing statement.
642
SET @@session.sql_mode = '';
644
DELETE FROM t1 WHERE f_charbig = 'was inserted';
646
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
648
# check special-1 success: 1
649
UPDATE t1 SET f_charbig = '';
651
# check special-2 success: 1
652
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
653
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
654
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
655
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
656
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
657
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
658
'just inserted' FROM t0_template
659
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
660
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
662
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
663
f_charbig = 'updated by trigger'
664
WHERE f_int1 = new.f_int1;
666
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
667
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
668
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
670
# check trigger-1 success: 1
672
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
673
f_int2 = CAST(f_char1 AS SIGNED INT),
674
f_charbig = 'just inserted'
675
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
677
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
678
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
679
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
680
'just inserted' FROM t0_template
681
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
682
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
684
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
685
f_charbig = 'updated by trigger'
686
WHERE f_int1 = new.f_int1;
688
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
689
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
690
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
692
# check trigger-2 success: 1
694
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
695
f_int2 = CAST(f_char1 AS SIGNED INT),
696
f_charbig = 'just inserted'
697
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
699
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
702
'just inserted' FROM t0_template
703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
704
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
707
f_charbig = 'updated by trigger'
708
WHERE f_int1 = new.f_int1;
710
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
711
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
713
# check trigger-3 success: 1
715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
716
f_int2 = CAST(f_char1 AS SIGNED INT),
717
f_charbig = 'just inserted'
718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
723
'just inserted' FROM t0_template
724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
725
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
728
f_charbig = 'updated by trigger'
729
WHERE f_int1 = - old.f_int1;
731
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
734
# check trigger-4 success: 1
736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
737
f_int2 = CAST(f_char1 AS SIGNED INT),
738
f_charbig = 'just inserted'
739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
742
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
743
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
744
'just inserted' FROM t0_template
745
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
746
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
748
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
749
f_charbig = 'updated by trigger'
750
WHERE f_int1 = new.f_int1;
752
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
753
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
755
# check trigger-5 success: 1
757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
758
f_int2 = CAST(f_char1 AS SIGNED INT),
759
f_charbig = 'just inserted'
760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
765
'just inserted' FROM t0_template
766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
767
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
770
f_charbig = 'updated by trigger'
771
WHERE f_int1 = - old.f_int1;
773
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
774
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
776
# check trigger-6 success: 1
778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
779
f_int2 = CAST(f_char1 AS SIGNED INT),
780
f_charbig = 'just inserted'
781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
783
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
785
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
786
'just inserted' FROM t0_template
787
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
788
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
790
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
791
f_charbig = 'updated by trigger'
792
WHERE f_int1 = - old.f_int1;
795
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
797
# check trigger-7 success: 1
799
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
800
f_int2 = CAST(f_char1 AS SIGNED INT),
801
f_charbig = 'just inserted'
802
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
804
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
805
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
806
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
807
'just inserted' FROM t0_template
808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
809
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
811
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
812
f_charbig = 'updated by trigger'
813
WHERE f_int1 = - old.f_int1;
816
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
818
# check trigger-8 success: 1
820
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
821
f_int2 = CAST(f_char1 AS SIGNED INT),
822
f_charbig = 'just inserted'
823
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
825
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
827
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
828
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
830
SET new.f_int1 = old.f_int1 + @max_row,
831
new.f_int2 = old.f_int2 - @max_row,
832
new.f_charbig = '####updated per update trigger####';
835
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
836
f_charbig = '####updated per update statement itself####';
838
# check trigger-9 success: 1
840
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
841
f_int2 = CAST(f_char1 AS SIGNED INT),
842
f_charbig = CONCAT('===',f_char1,'===');
843
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
845
SET new.f_int1 = new.f_int1 + @max_row,
846
new.f_int2 = new.f_int2 - @max_row,
847
new.f_charbig = '####updated per update trigger####';
850
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
851
f_charbig = '####updated per update statement itself####';
853
# check trigger-10 success: 1
855
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
856
f_int2 = CAST(f_char1 AS SIGNED INT),
857
f_charbig = CONCAT('===',f_char1,'===');
858
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
860
SET new.f_int1 = @my_max1 + @counter,
861
new.f_int2 = @my_min2 - @counter,
862
new.f_charbig = '####updated per insert trigger####';
863
SET @counter = @counter + 1;
866
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
867
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
868
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
869
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
870
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
874
# check trigger-11 success: 1
876
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
877
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
878
AND f_charbig = '####updated per insert trigger####';
879
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
881
SET new.f_int1 = @my_max1 + @counter,
882
new.f_int2 = @my_min2 - @counter,
883
new.f_charbig = '####updated per insert trigger####';
884
SET @counter = @counter + 1;
887
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
888
INSERT INTO t1 (f_char1, f_char2, f_charbig)
889
SELECT CAST(f_int1 AS CHAR),
890
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
891
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
895
# check trigger-12 success: 1
897
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
898
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
899
AND f_charbig = '####updated per insert trigger####';
901
Table Op Msg_type Msg_text
902
test.t1 analyze note The storage engine for the table doesn't support analyze
903
CHECK TABLE t1 EXTENDED;
904
Table Op Msg_type Msg_text
905
test.t1 check note The storage engine for the table doesn't support check
906
CHECKSUM TABLE t1 EXTENDED;
910
Table Op Msg_type Msg_text
911
test.t1 optimize note The storage engine for the table doesn't support optimize
912
# check layout success: 1
913
REPAIR TABLE t1 EXTENDED;
914
Table Op Msg_type Msg_text
915
test.t1 repair note The storage engine for the table doesn't support repair
916
# check layout success: 1
919
# check TRUNCATE success: 1
920
# check layout success: 1
921
# End usability test (inc/partition_check.inc)
928
f_charbig VARCHAR(1000)
929
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
931
PARTITION BY LIST(MOD(f_int1,4))
932
(PARTITION part_3 VALUES IN (-3),
933
PARTITION part_2 VALUES IN (-2),
934
PARTITION part_1 VALUES IN (-1),
935
PARTITION part_N VALUES IN (NULL),
936
PARTITION part0 VALUES IN (0),
937
PARTITION part1 VALUES IN (1),
938
PARTITION part2 VALUES IN (2),
939
PARTITION part3 VALUES IN (3));
940
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
941
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
942
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
943
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
944
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
945
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
946
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
947
# Start usability test (inc/partition_check.inc)
949
SHOW CREATE TABLE t1;
951
t1 CREATE TABLE `t1` (
952
`f_int1` int(11) NOT NULL DEFAULT '0',
953
`f_int2` int(11) NOT NULL DEFAULT '0',
954
`f_char1` char(20) DEFAULT NULL,
955
`f_char2` char(20) DEFAULT NULL,
956
`f_charbig` varchar(1000) DEFAULT NULL
957
) 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) */
959
# check prerequisites-1 success: 1
960
# check COUNT(*) success: 1
961
# check MIN/MAX(f_int1) success: 1
962
# check MIN/MAX(f_int2) success: 1
963
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
964
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
965
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
966
WHERE f_int1 IN (2,3);
967
# check prerequisites-3 success: 1
968
DELETE FROM t1 WHERE f_charbig = 'delete me';
969
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
970
# check read via f_int1 success: 1
971
# check read via f_int2 success: 1
973
# check multiple-1 success: 1
974
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
976
# check multiple-2 success: 1
977
INSERT INTO t1 SELECT * FROM t0_template
978
WHERE MOD(f_int1,3) = 0;
980
# check multiple-3 success: 1
981
UPDATE t1 SET f_int1 = f_int1 + @max_row
982
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
983
AND @max_row_div2 + @max_row_div4;
985
# check multiple-4 success: 1
987
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
988
AND @max_row_div2 + @max_row_div4 + @max_row;
990
# check multiple-5 success: 1
991
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
993
SET f_int1 = @cur_value , f_int2 = @cur_value,
994
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
995
f_charbig = '#SINGLE#';
997
# check single-1 success: 1
998
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1000
SET f_int1 = @cur_value , f_int2 = @cur_value,
1001
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1002
f_charbig = '#SINGLE#';
1004
# check single-2 success: 1
1005
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1006
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1007
UPDATE t1 SET f_int1 = @cur_value2
1008
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1010
# check single-3 success: 1
1011
SET @cur_value1= -1;
1012
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1013
UPDATE t1 SET f_int1 = @cur_value1
1014
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1016
# check single-4 success: 1
1017
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1018
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1020
# check single-5 success: 1
1021
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1023
# check single-6 success: 1
1024
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1026
# check single-7 success: 1
1027
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1028
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1029
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1030
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1031
f_charbig = '#NULL#';
1033
SET f_int1 = NULL , f_int2 = -@max_row,
1034
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1035
f_charbig = '#NULL#';
1036
ERROR 23000: Column 'f_int1' cannot be null
1037
# check null success: 1
1039
WHERE f_int1 = 0 AND f_int2 = 0
1040
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1041
AND f_charbig = '#NULL#';
1043
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1044
SELECT f_int1, f_int1, '', '', 'was inserted'
1045
FROM t0_template source_tab
1046
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1048
# check transactions-1 success: 1
1051
# check transactions-2 success: 1
1054
# check transactions-3 success: 1
1055
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1059
# check transactions-4 success: 1
1060
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1061
SELECT f_int1, f_int1, '', '', 'was inserted'
1062
FROM t0_template source_tab
1063
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1065
# check transactions-5 success: 1
1068
# check transactions-6 success: 1
1069
# INFO: Storage engine used for t1 seems to be transactional.
1072
# check transactions-7 success: 1
1073
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1075
SET @@session.sql_mode = 'traditional';
1076
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1077
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1078
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1079
'', '', 'was inserted' FROM t0_template
1080
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1081
ERROR 22012: Division by 0
1084
# check transactions-8 success: 1
1085
# INFO: Storage engine used for t1 seems to be able to revert
1086
# changes made by the failing statement.
1087
SET @@session.sql_mode = '';
1089
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1091
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1093
# check special-1 success: 1
1094
UPDATE t1 SET f_charbig = '';
1096
# check special-2 success: 1
1097
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1098
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1099
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1100
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1101
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1102
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1103
'just inserted' FROM t0_template
1104
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1105
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1107
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1108
f_charbig = 'updated by trigger'
1109
WHERE f_int1 = new.f_int1;
1111
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1112
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1113
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1115
# check trigger-1 success: 1
1117
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1118
f_int2 = CAST(f_char1 AS SIGNED INT),
1119
f_charbig = 'just inserted'
1120
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1122
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1123
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1124
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1125
'just inserted' FROM t0_template
1126
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1127
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1129
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1130
f_charbig = 'updated by trigger'
1131
WHERE f_int1 = new.f_int1;
1133
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1134
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1135
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1137
# check trigger-2 success: 1
1139
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1140
f_int2 = CAST(f_char1 AS SIGNED INT),
1141
f_charbig = 'just inserted'
1142
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1144
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1145
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1146
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1147
'just inserted' FROM t0_template
1148
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1149
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1151
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1152
f_charbig = 'updated by trigger'
1153
WHERE f_int1 = new.f_int1;
1155
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1156
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1158
# check trigger-3 success: 1
1160
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1161
f_int2 = CAST(f_char1 AS SIGNED INT),
1162
f_charbig = 'just inserted'
1163
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1165
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1166
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1167
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1168
'just inserted' FROM t0_template
1169
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1170
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1172
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1173
f_charbig = 'updated by trigger'
1174
WHERE f_int1 = - old.f_int1;
1176
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1177
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1179
# check trigger-4 success: 1
1181
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1182
f_int2 = CAST(f_char1 AS SIGNED INT),
1183
f_charbig = 'just inserted'
1184
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1186
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1187
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1188
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1189
'just inserted' FROM t0_template
1190
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1191
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1193
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1194
f_charbig = 'updated by trigger'
1195
WHERE f_int1 = new.f_int1;
1197
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1198
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1200
# check trigger-5 success: 1
1202
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1203
f_int2 = CAST(f_char1 AS SIGNED INT),
1204
f_charbig = 'just inserted'
1205
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1207
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1208
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1209
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1210
'just inserted' FROM t0_template
1211
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1212
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1214
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1215
f_charbig = 'updated by trigger'
1216
WHERE f_int1 = - old.f_int1;
1218
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1219
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1221
# check trigger-6 success: 1
1223
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1224
f_int2 = CAST(f_char1 AS SIGNED INT),
1225
f_charbig = 'just inserted'
1226
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1228
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1229
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1230
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1231
'just inserted' FROM t0_template
1232
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1233
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1235
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1236
f_charbig = 'updated by trigger'
1237
WHERE f_int1 = - old.f_int1;
1240
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1242
# check trigger-7 success: 1
1244
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1245
f_int2 = CAST(f_char1 AS SIGNED INT),
1246
f_charbig = 'just inserted'
1247
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1249
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1250
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1251
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1252
'just inserted' FROM t0_template
1253
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1254
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1256
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1257
f_charbig = 'updated by trigger'
1258
WHERE f_int1 = - old.f_int1;
1261
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1263
# check trigger-8 success: 1
1265
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1266
f_int2 = CAST(f_char1 AS SIGNED INT),
1267
f_charbig = 'just inserted'
1268
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1270
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1272
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1273
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1275
SET new.f_int1 = old.f_int1 + @max_row,
1276
new.f_int2 = old.f_int2 - @max_row,
1277
new.f_charbig = '####updated per update trigger####';
1280
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1281
f_charbig = '####updated per update statement itself####';
1283
# check trigger-9 success: 1
1285
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1286
f_int2 = CAST(f_char1 AS SIGNED INT),
1287
f_charbig = CONCAT('===',f_char1,'===');
1288
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1290
SET new.f_int1 = new.f_int1 + @max_row,
1291
new.f_int2 = new.f_int2 - @max_row,
1292
new.f_charbig = '####updated per update trigger####';
1295
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1296
f_charbig = '####updated per update statement itself####';
1298
# check trigger-10 success: 1
1300
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1301
f_int2 = CAST(f_char1 AS SIGNED INT),
1302
f_charbig = CONCAT('===',f_char1,'===');
1303
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1305
SET new.f_int1 = @my_max1 + @counter,
1306
new.f_int2 = @my_min2 - @counter,
1307
new.f_charbig = '####updated per insert trigger####';
1308
SET @counter = @counter + 1;
1311
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1312
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1313
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1314
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1315
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1319
# check trigger-11 success: 1
1321
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1322
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1323
AND f_charbig = '####updated per insert trigger####';
1324
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1326
SET new.f_int1 = @my_max1 + @counter,
1327
new.f_int2 = @my_min2 - @counter,
1328
new.f_charbig = '####updated per insert trigger####';
1329
SET @counter = @counter + 1;
1332
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1333
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1334
SELECT CAST(f_int1 AS CHAR),
1335
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1336
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1340
# check trigger-12 success: 1
1342
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1343
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1344
AND f_charbig = '####updated per insert trigger####';
1346
Table Op Msg_type Msg_text
1347
test.t1 analyze note The storage engine for the table doesn't support analyze
1348
CHECK TABLE t1 EXTENDED;
1349
Table Op Msg_type Msg_text
1350
test.t1 check note The storage engine for the table doesn't support check
1351
CHECKSUM TABLE t1 EXTENDED;
1353
test.t1 <some_value>
1355
Table Op Msg_type Msg_text
1356
test.t1 optimize note The storage engine for the table doesn't support optimize
1357
# check layout success: 1
1358
REPAIR TABLE t1 EXTENDED;
1359
Table Op Msg_type Msg_text
1360
test.t1 repair note The storage engine for the table doesn't support repair
1361
# check layout success: 1
1364
# check TRUNCATE success: 1
1365
# check layout success: 1
1366
# End usability test (inc/partition_check.inc)
1373
f_charbig VARCHAR(1000)
1374
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
1376
PARTITION BY RANGE(f_int1)
1377
(PARTITION parta VALUES LESS THAN (0),
1378
PARTITION partb VALUES LESS THAN (5),
1379
PARTITION partc VALUES LESS THAN (10),
1380
PARTITION partd VALUES LESS THAN (10 + 5),
1381
PARTITION parte VALUES LESS THAN (20),
1382
PARTITION partf VALUES LESS THAN (2147483646));
1383
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1384
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1385
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1386
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
1387
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1388
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1389
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1390
# Start usability test (inc/partition_check.inc)
1392
SHOW CREATE TABLE t1;
1394
t1 CREATE TABLE `t1` (
1395
`f_int1` int(11) NOT NULL DEFAULT '0',
1396
`f_int2` int(11) NOT NULL DEFAULT '0',
1397
`f_char1` char(20) DEFAULT NULL,
1398
`f_char2` char(20) DEFAULT NULL,
1399
`f_charbig` varchar(1000) DEFAULT NULL
1400
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
1402
# check prerequisites-1 success: 1
1403
# check COUNT(*) success: 1
1404
# check MIN/MAX(f_int1) success: 1
1405
# check MIN/MAX(f_int2) success: 1
1406
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1407
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1408
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1409
WHERE f_int1 IN (2,3);
1410
# check prerequisites-3 success: 1
1411
DELETE FROM t1 WHERE f_charbig = 'delete me';
1412
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1413
# check read via f_int1 success: 1
1414
# check read via f_int2 success: 1
1416
# check multiple-1 success: 1
1417
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1419
# check multiple-2 success: 1
1420
INSERT INTO t1 SELECT * FROM t0_template
1421
WHERE MOD(f_int1,3) = 0;
1423
# check multiple-3 success: 1
1424
UPDATE t1 SET f_int1 = f_int1 + @max_row
1425
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1426
AND @max_row_div2 + @max_row_div4;
1428
# check multiple-4 success: 1
1430
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1431
AND @max_row_div2 + @max_row_div4 + @max_row;
1433
# check multiple-5 success: 1
1434
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1436
SET f_int1 = @cur_value , f_int2 = @cur_value,
1437
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1438
f_charbig = '#SINGLE#';
1440
# check single-1 success: 1
1441
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1443
SET f_int1 = @cur_value , f_int2 = @cur_value,
1444
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1445
f_charbig = '#SINGLE#';
1447
# check single-2 success: 1
1448
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1449
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1450
UPDATE t1 SET f_int1 = @cur_value2
1451
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1453
# check single-3 success: 1
1454
SET @cur_value1= -1;
1455
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1456
UPDATE t1 SET f_int1 = @cur_value1
1457
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1459
# check single-4 success: 1
1460
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1461
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1463
# check single-5 success: 1
1464
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1466
# check single-6 success: 1
1467
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1468
ERROR HY000: Table has no partition for value 2147483647
1469
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1470
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1471
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1472
f_charbig = '#NULL#';
1474
SET f_int1 = NULL , f_int2 = -@max_row,
1475
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1476
f_charbig = '#NULL#';
1477
ERROR 23000: Column 'f_int1' cannot be null
1478
# check null success: 1
1480
WHERE f_int1 = 0 AND f_int2 = 0
1481
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1482
AND f_charbig = '#NULL#';
1484
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1485
SELECT f_int1, f_int1, '', '', 'was inserted'
1486
FROM t0_template source_tab
1487
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1489
# check transactions-1 success: 1
1492
# check transactions-2 success: 1
1495
# check transactions-3 success: 1
1496
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1500
# check transactions-4 success: 1
1501
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1502
SELECT f_int1, f_int1, '', '', 'was inserted'
1503
FROM t0_template source_tab
1504
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1506
# check transactions-5 success: 1
1509
# check transactions-6 success: 1
1510
# INFO: Storage engine used for t1 seems to be transactional.
1513
# check transactions-7 success: 1
1514
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1516
SET @@session.sql_mode = 'traditional';
1517
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1518
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1519
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1520
'', '', 'was inserted' FROM t0_template
1521
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1522
ERROR 22012: Division by 0
1525
# check transactions-8 success: 1
1526
# INFO: Storage engine used for t1 seems to be able to revert
1527
# changes made by the failing statement.
1528
SET @@session.sql_mode = '';
1530
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1532
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1534
# check special-1 success: 1
1535
UPDATE t1 SET f_charbig = '';
1537
# check special-2 success: 1
1538
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1539
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1540
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1541
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1542
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1543
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1544
'just inserted' FROM t0_template
1545
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1546
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1548
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1549
f_charbig = 'updated by trigger'
1550
WHERE f_int1 = new.f_int1;
1552
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1553
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1554
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1556
# check trigger-1 success: 1
1558
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1559
f_int2 = CAST(f_char1 AS SIGNED INT),
1560
f_charbig = 'just inserted'
1561
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1563
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1564
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1565
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1566
'just inserted' FROM t0_template
1567
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1568
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1570
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1571
f_charbig = 'updated by trigger'
1572
WHERE f_int1 = new.f_int1;
1574
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1575
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1576
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1578
# check trigger-2 success: 1
1580
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1581
f_int2 = CAST(f_char1 AS SIGNED INT),
1582
f_charbig = 'just inserted'
1583
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1585
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1586
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1587
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1588
'just inserted' FROM t0_template
1589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1590
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1592
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1593
f_charbig = 'updated by trigger'
1594
WHERE f_int1 = new.f_int1;
1596
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1597
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1599
# check trigger-3 success: 1
1601
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1602
f_int2 = CAST(f_char1 AS SIGNED INT),
1603
f_charbig = 'just inserted'
1604
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1606
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1607
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1608
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1609
'just inserted' FROM t0_template
1610
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1611
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1613
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1614
f_charbig = 'updated by trigger'
1615
WHERE f_int1 = - old.f_int1;
1617
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1618
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1620
# check trigger-4 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 UPDATE 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
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1639
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1641
# check trigger-5 success: 1
1643
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1644
f_int2 = CAST(f_char1 AS SIGNED INT),
1645
f_charbig = 'just inserted'
1646
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1648
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1649
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1650
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1651
'just inserted' FROM t0_template
1652
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1653
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1655
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1656
f_charbig = 'updated by trigger'
1657
WHERE f_int1 = - old.f_int1;
1659
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1660
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1662
# check trigger-6 success: 1
1664
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1665
f_int2 = CAST(f_char1 AS SIGNED INT),
1666
f_charbig = 'just inserted'
1667
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1669
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1670
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1671
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1672
'just inserted' FROM t0_template
1673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1674
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1676
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1677
f_charbig = 'updated by trigger'
1678
WHERE f_int1 = - old.f_int1;
1681
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1683
# check trigger-7 success: 1
1685
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1686
f_int2 = CAST(f_char1 AS SIGNED INT),
1687
f_charbig = 'just inserted'
1688
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1690
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1691
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1692
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1693
'just inserted' FROM t0_template
1694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1695
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1697
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1698
f_charbig = 'updated by trigger'
1699
WHERE f_int1 = - old.f_int1;
1702
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1704
# check trigger-8 success: 1
1706
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1707
f_int2 = CAST(f_char1 AS SIGNED INT),
1708
f_charbig = 'just inserted'
1709
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1711
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1713
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1714
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1716
SET new.f_int1 = old.f_int1 + @max_row,
1717
new.f_int2 = old.f_int2 - @max_row,
1718
new.f_charbig = '####updated per update trigger####';
1721
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1722
f_charbig = '####updated per update statement itself####';
1724
# check trigger-9 success: 1
1726
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1727
f_int2 = CAST(f_char1 AS SIGNED INT),
1728
f_charbig = CONCAT('===',f_char1,'===');
1729
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1731
SET new.f_int1 = new.f_int1 + @max_row,
1732
new.f_int2 = new.f_int2 - @max_row,
1733
new.f_charbig = '####updated per update trigger####';
1736
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1737
f_charbig = '####updated per update statement itself####';
1739
# check trigger-10 success: 1
1741
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1742
f_int2 = CAST(f_char1 AS SIGNED INT),
1743
f_charbig = CONCAT('===',f_char1,'===');
1744
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1746
SET new.f_int1 = @my_max1 + @counter,
1747
new.f_int2 = @my_min2 - @counter,
1748
new.f_charbig = '####updated per insert trigger####';
1749
SET @counter = @counter + 1;
1752
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1753
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1754
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1755
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1756
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1760
# check trigger-11 success: 1
1762
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1763
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1764
AND f_charbig = '####updated per insert trigger####';
1765
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1767
SET new.f_int1 = @my_max1 + @counter,
1768
new.f_int2 = @my_min2 - @counter,
1769
new.f_charbig = '####updated per insert trigger####';
1770
SET @counter = @counter + 1;
1773
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1774
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1775
SELECT CAST(f_int1 AS CHAR),
1776
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1781
# check trigger-12 success: 1
1783
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1784
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1785
AND f_charbig = '####updated per insert trigger####';
1787
Table Op Msg_type Msg_text
1788
test.t1 analyze note The storage engine for the table doesn't support analyze
1789
CHECK TABLE t1 EXTENDED;
1790
Table Op Msg_type Msg_text
1791
test.t1 check note The storage engine for the table doesn't support check
1792
CHECKSUM TABLE t1 EXTENDED;
1794
test.t1 <some_value>
1796
Table Op Msg_type Msg_text
1797
test.t1 optimize note The storage engine for the table doesn't support optimize
1798
# check layout success: 1
1799
REPAIR TABLE t1 EXTENDED;
1800
Table Op Msg_type Msg_text
1801
test.t1 repair note The storage engine for the table doesn't support repair
1802
# check layout success: 1
1805
# check TRUNCATE success: 1
1806
# check layout success: 1
1807
# End usability test (inc/partition_check.inc)
1814
f_charbig VARCHAR(1000)
1815
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
1817
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
1818
(PARTITION parta VALUES LESS THAN (0),
1819
PARTITION partb VALUES LESS THAN (5),
1820
PARTITION partc VALUES LESS THAN (10),
1821
PARTITION partd VALUES LESS THAN (2147483646));
1822
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1823
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1824
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1825
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
1826
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1827
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1828
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1829
# Start usability test (inc/partition_check.inc)
1831
SHOW CREATE TABLE t1;
1833
t1 CREATE TABLE `t1` (
1834
`f_int1` int(11) NOT NULL DEFAULT '0',
1835
`f_int2` int(11) NOT NULL DEFAULT '0',
1836
`f_char1` char(20) DEFAULT NULL,
1837
`f_char2` char(20) DEFAULT NULL,
1838
`f_charbig` varchar(1000) DEFAULT NULL
1839
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
1841
# check prerequisites-1 success: 1
1842
# check COUNT(*) success: 1
1843
# check MIN/MAX(f_int1) success: 1
1844
# check MIN/MAX(f_int2) success: 1
1845
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1846
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1847
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1848
WHERE f_int1 IN (2,3);
1849
# check prerequisites-3 success: 1
1850
DELETE FROM t1 WHERE f_charbig = 'delete me';
1851
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1852
# check read via f_int1 success: 1
1853
# check read via f_int2 success: 1
1855
# check multiple-1 success: 1
1856
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1858
# check multiple-2 success: 1
1859
INSERT INTO t1 SELECT * FROM t0_template
1860
WHERE MOD(f_int1,3) = 0;
1862
# check multiple-3 success: 1
1863
UPDATE t1 SET f_int1 = f_int1 + @max_row
1864
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1865
AND @max_row_div2 + @max_row_div4;
1867
# check multiple-4 success: 1
1869
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1870
AND @max_row_div2 + @max_row_div4 + @max_row;
1872
# check multiple-5 success: 1
1873
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1875
SET f_int1 = @cur_value , f_int2 = @cur_value,
1876
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1877
f_charbig = '#SINGLE#';
1879
# check single-1 success: 1
1880
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1882
SET f_int1 = @cur_value , f_int2 = @cur_value,
1883
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1884
f_charbig = '#SINGLE#';
1886
# check single-2 success: 1
1887
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1888
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1889
UPDATE t1 SET f_int1 = @cur_value2
1890
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1892
# check single-3 success: 1
1893
SET @cur_value1= -1;
1894
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1895
UPDATE t1 SET f_int1 = @cur_value1
1896
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1898
# check single-4 success: 1
1899
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1900
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1902
# check single-5 success: 1
1903
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1905
# check single-6 success: 1
1906
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1908
# check single-7 success: 1
1909
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1910
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1911
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1912
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1913
f_charbig = '#NULL#';
1915
SET f_int1 = NULL , f_int2 = -@max_row,
1916
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1917
f_charbig = '#NULL#';
1918
ERROR 23000: Column 'f_int1' cannot be null
1919
# check null success: 1
1921
WHERE f_int1 = 0 AND f_int2 = 0
1922
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1923
AND f_charbig = '#NULL#';
1925
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1926
SELECT f_int1, f_int1, '', '', 'was inserted'
1927
FROM t0_template source_tab
1928
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1930
# check transactions-1 success: 1
1933
# check transactions-2 success: 1
1936
# check transactions-3 success: 1
1937
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1941
# check transactions-4 success: 1
1942
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1943
SELECT f_int1, f_int1, '', '', 'was inserted'
1944
FROM t0_template source_tab
1945
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1947
# check transactions-5 success: 1
1950
# check transactions-6 success: 1
1951
# INFO: Storage engine used for t1 seems to be transactional.
1954
# check transactions-7 success: 1
1955
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1957
SET @@session.sql_mode = 'traditional';
1958
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1959
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1960
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1961
'', '', 'was inserted' FROM t0_template
1962
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1963
ERROR 22012: Division by 0
1966
# check transactions-8 success: 1
1967
# INFO: Storage engine used for t1 seems to be able to revert
1968
# changes made by the failing statement.
1969
SET @@session.sql_mode = '';
1971
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1973
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1975
# check special-1 success: 1
1976
UPDATE t1 SET f_charbig = '';
1978
# check special-2 success: 1
1979
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1980
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1981
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1982
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1983
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1984
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1985
'just inserted' FROM t0_template
1986
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1987
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1989
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1990
f_charbig = 'updated by trigger'
1991
WHERE f_int1 = new.f_int1;
1993
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1994
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1995
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1997
# check trigger-1 success: 1
1999
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2000
f_int2 = CAST(f_char1 AS SIGNED INT),
2001
f_charbig = 'just inserted'
2002
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2004
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2005
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2006
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2007
'just inserted' FROM t0_template
2008
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2009
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2011
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2012
f_charbig = 'updated by trigger'
2013
WHERE f_int1 = new.f_int1;
2015
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2016
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2017
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2019
# check trigger-2 success: 1
2021
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2022
f_int2 = CAST(f_char1 AS SIGNED INT),
2023
f_charbig = 'just inserted'
2024
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2026
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2027
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2028
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2029
'just inserted' FROM t0_template
2030
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2031
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2033
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2034
f_charbig = 'updated by trigger'
2035
WHERE f_int1 = new.f_int1;
2037
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2038
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2040
# check trigger-3 success: 1
2042
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2043
f_int2 = CAST(f_char1 AS SIGNED INT),
2044
f_charbig = 'just inserted'
2045
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2047
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2048
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2049
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2050
'just inserted' FROM t0_template
2051
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2052
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2054
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2055
f_charbig = 'updated by trigger'
2056
WHERE f_int1 = - old.f_int1;
2058
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2059
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2061
# check trigger-4 success: 1
2063
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2064
f_int2 = CAST(f_char1 AS SIGNED INT),
2065
f_charbig = 'just inserted'
2066
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2068
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2069
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2070
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2071
'just inserted' FROM t0_template
2072
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2073
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2075
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2076
f_charbig = 'updated by trigger'
2077
WHERE f_int1 = new.f_int1;
2079
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2080
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2082
# check trigger-5 success: 1
2084
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2085
f_int2 = CAST(f_char1 AS SIGNED INT),
2086
f_charbig = 'just inserted'
2087
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2089
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2090
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2091
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2092
'just inserted' FROM t0_template
2093
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2094
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2096
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2097
f_charbig = 'updated by trigger'
2098
WHERE f_int1 = - old.f_int1;
2100
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2101
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2103
# check trigger-6 success: 1
2105
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2106
f_int2 = CAST(f_char1 AS SIGNED INT),
2107
f_charbig = 'just inserted'
2108
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2110
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2111
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2112
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2113
'just inserted' FROM t0_template
2114
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2115
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2117
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2118
f_charbig = 'updated by trigger'
2119
WHERE f_int1 = - old.f_int1;
2122
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2124
# check trigger-7 success: 1
2126
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2127
f_int2 = CAST(f_char1 AS SIGNED INT),
2128
f_charbig = 'just inserted'
2129
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2131
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2132
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2133
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2134
'just inserted' FROM t0_template
2135
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2136
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2138
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2139
f_charbig = 'updated by trigger'
2140
WHERE f_int1 = - old.f_int1;
2143
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2145
# check trigger-8 success: 1
2147
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2148
f_int2 = CAST(f_char1 AS SIGNED INT),
2149
f_charbig = 'just inserted'
2150
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2152
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2154
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2155
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2157
SET new.f_int1 = old.f_int1 + @max_row,
2158
new.f_int2 = old.f_int2 - @max_row,
2159
new.f_charbig = '####updated per update trigger####';
2162
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2163
f_charbig = '####updated per update statement itself####';
2165
# check trigger-9 success: 1
2167
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2168
f_int2 = CAST(f_char1 AS SIGNED INT),
2169
f_charbig = CONCAT('===',f_char1,'===');
2170
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2172
SET new.f_int1 = new.f_int1 + @max_row,
2173
new.f_int2 = new.f_int2 - @max_row,
2174
new.f_charbig = '####updated per update trigger####';
2177
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2178
f_charbig = '####updated per update statement itself####';
2180
# check trigger-10 success: 1
2182
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2183
f_int2 = CAST(f_char1 AS SIGNED INT),
2184
f_charbig = CONCAT('===',f_char1,'===');
2185
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2187
SET new.f_int1 = @my_max1 + @counter,
2188
new.f_int2 = @my_min2 - @counter,
2189
new.f_charbig = '####updated per insert trigger####';
2190
SET @counter = @counter + 1;
2193
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2194
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2195
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2196
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2197
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2201
# check trigger-11 success: 1
2203
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2204
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2205
AND f_charbig = '####updated per insert trigger####';
2206
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2208
SET new.f_int1 = @my_max1 + @counter,
2209
new.f_int2 = @my_min2 - @counter,
2210
new.f_charbig = '####updated per insert trigger####';
2211
SET @counter = @counter + 1;
2214
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2215
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2216
SELECT CAST(f_int1 AS CHAR),
2217
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2222
# check trigger-12 success: 1
2224
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2225
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2226
AND f_charbig = '####updated per insert trigger####';
2228
Table Op Msg_type Msg_text
2229
test.t1 analyze note The storage engine for the table doesn't support analyze
2230
CHECK TABLE t1 EXTENDED;
2231
Table Op Msg_type Msg_text
2232
test.t1 check note The storage engine for the table doesn't support check
2233
CHECKSUM TABLE t1 EXTENDED;
2235
test.t1 <some_value>
2237
Table Op Msg_type Msg_text
2238
test.t1 optimize note The storage engine for the table doesn't support optimize
2239
# check layout success: 1
2240
REPAIR TABLE t1 EXTENDED;
2241
Table Op Msg_type Msg_text
2242
test.t1 repair note The storage engine for the table doesn't support repair
2243
# check layout success: 1
2246
# check TRUNCATE success: 1
2247
# check layout success: 1
2248
# End usability test (inc/partition_check.inc)
2255
f_charbig VARCHAR(1000)
2256
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
2258
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
2259
(PARTITION part1 VALUES LESS THAN (0)
2260
(SUBPARTITION subpart11, SUBPARTITION subpart12),
2261
PARTITION part2 VALUES LESS THAN (5)
2262
(SUBPARTITION subpart21, SUBPARTITION subpart22),
2263
PARTITION part3 VALUES LESS THAN (10)
2264
(SUBPARTITION subpart31, SUBPARTITION subpart32),
2265
PARTITION part4 VALUES LESS THAN (2147483646)
2266
(SUBPARTITION subpart41, SUBPARTITION subpart42));
2267
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2268
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2269
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2270
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
2271
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2272
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2273
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2274
# Start usability test (inc/partition_check.inc)
2276
SHOW CREATE TABLE t1;
2278
t1 CREATE TABLE `t1` (
2279
`f_int1` int(11) NOT NULL DEFAULT '0',
2280
`f_int2` int(11) NOT NULL DEFAULT '0',
2281
`f_char1` char(20) DEFAULT NULL,
2282
`f_char2` char(20) DEFAULT NULL,
2283
`f_charbig` varchar(1000) DEFAULT NULL
2284
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
2286
# check prerequisites-1 success: 1
2287
# check COUNT(*) success: 1
2288
# check MIN/MAX(f_int1) success: 1
2289
# check MIN/MAX(f_int2) success: 1
2290
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2291
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2292
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2293
WHERE f_int1 IN (2,3);
2294
# check prerequisites-3 success: 1
2295
DELETE FROM t1 WHERE f_charbig = 'delete me';
2296
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2297
# check read via f_int1 success: 1
2298
# check read via f_int2 success: 1
2300
# check multiple-1 success: 1
2301
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2303
# check multiple-2 success: 1
2304
INSERT INTO t1 SELECT * FROM t0_template
2305
WHERE MOD(f_int1,3) = 0;
2307
# check multiple-3 success: 1
2308
UPDATE t1 SET f_int1 = f_int1 + @max_row
2309
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2310
AND @max_row_div2 + @max_row_div4;
2312
# check multiple-4 success: 1
2314
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2315
AND @max_row_div2 + @max_row_div4 + @max_row;
2317
# check multiple-5 success: 1
2318
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2320
SET f_int1 = @cur_value , f_int2 = @cur_value,
2321
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2322
f_charbig = '#SINGLE#';
2324
# check single-1 success: 1
2325
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2327
SET f_int1 = @cur_value , f_int2 = @cur_value,
2328
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2329
f_charbig = '#SINGLE#';
2331
# check single-2 success: 1
2332
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2333
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2334
UPDATE t1 SET f_int1 = @cur_value2
2335
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2337
# check single-3 success: 1
2338
SET @cur_value1= -1;
2339
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2340
UPDATE t1 SET f_int1 = @cur_value1
2341
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2343
# check single-4 success: 1
2344
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2345
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2347
# check single-5 success: 1
2348
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2350
# check single-6 success: 1
2351
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2352
ERROR HY000: Table has no partition for value 2147483647
2353
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2354
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2355
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2356
f_charbig = '#NULL#';
2358
SET f_int1 = NULL , f_int2 = -@max_row,
2359
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2360
f_charbig = '#NULL#';
2361
ERROR 23000: Column 'f_int1' cannot be null
2362
# check null success: 1
2364
WHERE f_int1 = 0 AND f_int2 = 0
2365
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2366
AND f_charbig = '#NULL#';
2368
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2369
SELECT f_int1, f_int1, '', '', 'was inserted'
2370
FROM t0_template source_tab
2371
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2373
# check transactions-1 success: 1
2376
# check transactions-2 success: 1
2379
# check transactions-3 success: 1
2380
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2384
# check transactions-4 success: 1
2385
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2386
SELECT f_int1, f_int1, '', '', 'was inserted'
2387
FROM t0_template source_tab
2388
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2390
# check transactions-5 success: 1
2393
# check transactions-6 success: 1
2394
# INFO: Storage engine used for t1 seems to be transactional.
2397
# check transactions-7 success: 1
2398
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2400
SET @@session.sql_mode = 'traditional';
2401
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2402
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2403
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2404
'', '', 'was inserted' FROM t0_template
2405
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2406
ERROR 22012: Division by 0
2409
# check transactions-8 success: 1
2410
# INFO: Storage engine used for t1 seems to be able to revert
2411
# changes made by the failing statement.
2412
SET @@session.sql_mode = '';
2414
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2416
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2418
# check special-1 success: 1
2419
UPDATE t1 SET f_charbig = '';
2421
# check special-2 success: 1
2422
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2423
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2424
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2425
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2426
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2427
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2428
'just inserted' FROM t0_template
2429
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2430
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2432
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2433
f_charbig = 'updated by trigger'
2434
WHERE f_int1 = new.f_int1;
2436
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2437
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2438
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2440
# check trigger-1 success: 1
2442
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2443
f_int2 = CAST(f_char1 AS SIGNED INT),
2444
f_charbig = 'just inserted'
2445
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2447
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2448
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2449
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2450
'just inserted' FROM t0_template
2451
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2452
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2454
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2455
f_charbig = 'updated by trigger'
2456
WHERE f_int1 = new.f_int1;
2458
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2459
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2460
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2462
# check trigger-2 success: 1
2464
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2465
f_int2 = CAST(f_char1 AS SIGNED INT),
2466
f_charbig = 'just inserted'
2467
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2469
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2470
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2471
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2472
'just inserted' FROM t0_template
2473
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2474
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2476
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2477
f_charbig = 'updated by trigger'
2478
WHERE f_int1 = new.f_int1;
2480
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2481
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2483
# check trigger-3 success: 1
2485
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2486
f_int2 = CAST(f_char1 AS SIGNED INT),
2487
f_charbig = 'just inserted'
2488
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2490
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2491
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2492
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2493
'just inserted' FROM t0_template
2494
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2495
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2497
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2498
f_charbig = 'updated by trigger'
2499
WHERE f_int1 = - old.f_int1;
2501
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2502
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2504
# check trigger-4 success: 1
2506
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2507
f_int2 = CAST(f_char1 AS SIGNED INT),
2508
f_charbig = 'just inserted'
2509
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2511
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2512
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2513
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2514
'just inserted' FROM t0_template
2515
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2516
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2518
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2519
f_charbig = 'updated by trigger'
2520
WHERE f_int1 = new.f_int1;
2522
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2523
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2525
# check trigger-5 success: 1
2527
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2528
f_int2 = CAST(f_char1 AS SIGNED INT),
2529
f_charbig = 'just inserted'
2530
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2532
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2533
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2534
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2535
'just inserted' FROM t0_template
2536
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2537
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2539
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2540
f_charbig = 'updated by trigger'
2541
WHERE f_int1 = - old.f_int1;
2543
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2544
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2546
# check trigger-6 success: 1
2548
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2549
f_int2 = CAST(f_char1 AS SIGNED INT),
2550
f_charbig = 'just inserted'
2551
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2553
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2554
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2555
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2556
'just inserted' FROM t0_template
2557
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2558
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2560
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2561
f_charbig = 'updated by trigger'
2562
WHERE f_int1 = - old.f_int1;
2565
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2567
# check trigger-7 success: 1
2569
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2570
f_int2 = CAST(f_char1 AS SIGNED INT),
2571
f_charbig = 'just inserted'
2572
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2574
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2575
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2576
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2577
'just inserted' FROM t0_template
2578
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2579
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2581
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2582
f_charbig = 'updated by trigger'
2583
WHERE f_int1 = - old.f_int1;
2586
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2588
# check trigger-8 success: 1
2590
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2591
f_int2 = CAST(f_char1 AS SIGNED INT),
2592
f_charbig = 'just inserted'
2593
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2595
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2597
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2598
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2600
SET new.f_int1 = old.f_int1 + @max_row,
2601
new.f_int2 = old.f_int2 - @max_row,
2602
new.f_charbig = '####updated per update trigger####';
2605
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2606
f_charbig = '####updated per update statement itself####';
2608
# check trigger-9 success: 1
2610
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2611
f_int2 = CAST(f_char1 AS SIGNED INT),
2612
f_charbig = CONCAT('===',f_char1,'===');
2613
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2615
SET new.f_int1 = new.f_int1 + @max_row,
2616
new.f_int2 = new.f_int2 - @max_row,
2617
new.f_charbig = '####updated per update trigger####';
2620
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2621
f_charbig = '####updated per update statement itself####';
2623
# check trigger-10 success: 1
2625
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2626
f_int2 = CAST(f_char1 AS SIGNED INT),
2627
f_charbig = CONCAT('===',f_char1,'===');
2628
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2630
SET new.f_int1 = @my_max1 + @counter,
2631
new.f_int2 = @my_min2 - @counter,
2632
new.f_charbig = '####updated per insert trigger####';
2633
SET @counter = @counter + 1;
2636
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2637
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2638
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2639
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2640
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2644
# check trigger-11 success: 1
2646
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2647
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2648
AND f_charbig = '####updated per insert trigger####';
2649
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2651
SET new.f_int1 = @my_max1 + @counter,
2652
new.f_int2 = @my_min2 - @counter,
2653
new.f_charbig = '####updated per insert trigger####';
2654
SET @counter = @counter + 1;
2657
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2658
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2659
SELECT CAST(f_int1 AS CHAR),
2660
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2661
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2665
# check trigger-12 success: 1
2667
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2668
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2669
AND f_charbig = '####updated per insert trigger####';
2671
Table Op Msg_type Msg_text
2672
test.t1 analyze note The storage engine for the table doesn't support analyze
2673
CHECK TABLE t1 EXTENDED;
2674
Table Op Msg_type Msg_text
2675
test.t1 check note The storage engine for the table doesn't support check
2676
CHECKSUM TABLE t1 EXTENDED;
2678
test.t1 <some_value>
2680
Table Op Msg_type Msg_text
2681
test.t1 optimize note The storage engine for the table doesn't support optimize
2682
# check layout success: 1
2683
REPAIR TABLE t1 EXTENDED;
2684
Table Op Msg_type Msg_text
2685
test.t1 repair note The storage engine for the table doesn't support repair
2686
# check layout success: 1
2689
# check TRUNCATE success: 1
2690
# check layout success: 1
2691
# End usability test (inc/partition_check.inc)
2698
f_charbig VARCHAR(1000)
2699
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
2701
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
2702
(PARTITION part1 VALUES IN (0)
2703
(SUBPARTITION sp11, SUBPARTITION sp12),
2704
PARTITION part2 VALUES IN (1)
2705
(SUBPARTITION sp21, SUBPARTITION sp22),
2706
PARTITION part3 VALUES IN (2)
2707
(SUBPARTITION sp31, SUBPARTITION sp32),
2708
PARTITION part4 VALUES IN (NULL)
2709
(SUBPARTITION sp41, SUBPARTITION sp42));
2710
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2711
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2712
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2713
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
2714
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2715
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2716
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2717
# Start usability test (inc/partition_check.inc)
2719
SHOW CREATE TABLE t1;
2721
t1 CREATE TABLE `t1` (
2722
`f_int1` int(11) NOT NULL DEFAULT '0',
2723
`f_int2` int(11) NOT NULL DEFAULT '0',
2724
`f_char1` char(20) DEFAULT NULL,
2725
`f_char2` char(20) DEFAULT NULL,
2726
`f_charbig` varchar(1000) DEFAULT NULL
2727
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
2729
# check prerequisites-1 success: 1
2730
# check COUNT(*) success: 1
2731
# check MIN/MAX(f_int1) success: 1
2732
# check MIN/MAX(f_int2) success: 1
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), 'delete me' FROM t0_template
2736
WHERE f_int1 IN (2,3);
2737
# check prerequisites-3 success: 1
2738
DELETE FROM t1 WHERE f_charbig = 'delete me';
2739
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2740
# check read via f_int1 success: 1
2741
# check read via f_int2 success: 1
2743
# check multiple-1 success: 1
2744
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2746
# check multiple-2 success: 1
2747
INSERT INTO t1 SELECT * FROM t0_template
2748
WHERE MOD(f_int1,3) = 0;
2750
# check multiple-3 success: 1
2751
UPDATE t1 SET f_int1 = f_int1 + @max_row
2752
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2753
AND @max_row_div2 + @max_row_div4;
2755
# check multiple-4 success: 1
2757
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2758
AND @max_row_div2 + @max_row_div4 + @max_row;
2760
# check multiple-5 success: 1
2761
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2763
SET f_int1 = @cur_value , f_int2 = @cur_value,
2764
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2765
f_charbig = '#SINGLE#';
2767
# check single-1 success: 1
2768
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2770
SET f_int1 = @cur_value , f_int2 = @cur_value,
2771
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2772
f_charbig = '#SINGLE#';
2774
# check single-2 success: 1
2775
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2776
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2777
UPDATE t1 SET f_int1 = @cur_value2
2778
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2780
# check single-3 success: 1
2781
SET @cur_value1= -1;
2782
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2783
UPDATE t1 SET f_int1 = @cur_value1
2784
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2786
# check single-4 success: 1
2787
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2788
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2790
# check single-5 success: 1
2791
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2793
# check single-6 success: 1
2794
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2796
# check single-7 success: 1
2797
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2798
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2799
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2800
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2801
f_charbig = '#NULL#';
2803
SET f_int1 = NULL , f_int2 = -@max_row,
2804
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2805
f_charbig = '#NULL#';
2806
ERROR 23000: Column 'f_int1' cannot be null
2807
# check null success: 1
2809
WHERE f_int1 = 0 AND f_int2 = 0
2810
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2811
AND f_charbig = '#NULL#';
2813
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2814
SELECT f_int1, f_int1, '', '', 'was inserted'
2815
FROM t0_template source_tab
2816
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2818
# check transactions-1 success: 1
2821
# check transactions-2 success: 1
2824
# check transactions-3 success: 1
2825
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2829
# check transactions-4 success: 1
2830
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2831
SELECT f_int1, f_int1, '', '', 'was inserted'
2832
FROM t0_template source_tab
2833
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2835
# check transactions-5 success: 1
2838
# check transactions-6 success: 1
2839
# INFO: Storage engine used for t1 seems to be transactional.
2842
# check transactions-7 success: 1
2843
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2845
SET @@session.sql_mode = 'traditional';
2846
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2847
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2848
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2849
'', '', 'was inserted' FROM t0_template
2850
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2851
ERROR 22012: Division by 0
2854
# check transactions-8 success: 1
2855
# INFO: Storage engine used for t1 seems to be able to revert
2856
# changes made by the failing statement.
2857
SET @@session.sql_mode = '';
2859
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2861
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2863
# check special-1 success: 1
2864
UPDATE t1 SET f_charbig = '';
2866
# check special-2 success: 1
2867
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2868
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2869
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2870
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2871
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2872
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2873
'just inserted' FROM t0_template
2874
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2875
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2877
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2878
f_charbig = 'updated by trigger'
2879
WHERE f_int1 = new.f_int1;
2881
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2882
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2883
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2885
# check trigger-1 success: 1
2887
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2888
f_int2 = CAST(f_char1 AS SIGNED INT),
2889
f_charbig = 'just inserted'
2890
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2892
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2893
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2894
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2895
'just inserted' FROM t0_template
2896
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2897
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2899
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2900
f_charbig = 'updated by trigger'
2901
WHERE f_int1 = new.f_int1;
2903
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2904
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2905
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2907
# check trigger-2 success: 1
2909
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2910
f_int2 = CAST(f_char1 AS SIGNED INT),
2911
f_charbig = 'just inserted'
2912
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2914
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2915
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2916
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2917
'just inserted' FROM t0_template
2918
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2919
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2921
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2922
f_charbig = 'updated by trigger'
2923
WHERE f_int1 = new.f_int1;
2925
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2926
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2928
# check trigger-3 success: 1
2930
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2931
f_int2 = CAST(f_char1 AS SIGNED INT),
2932
f_charbig = 'just inserted'
2933
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2935
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2936
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2937
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2938
'just inserted' FROM t0_template
2939
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2940
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2942
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2943
f_charbig = 'updated by trigger'
2944
WHERE f_int1 = - old.f_int1;
2946
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2947
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2949
# check trigger-4 success: 1
2951
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2952
f_int2 = CAST(f_char1 AS SIGNED INT),
2953
f_charbig = 'just inserted'
2954
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2956
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2957
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2958
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2959
'just inserted' FROM t0_template
2960
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2961
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2963
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2964
f_charbig = 'updated by trigger'
2965
WHERE f_int1 = new.f_int1;
2967
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2968
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2970
# check trigger-5 success: 1
2972
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2973
f_int2 = CAST(f_char1 AS SIGNED INT),
2974
f_charbig = 'just inserted'
2975
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2977
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2978
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2979
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2980
'just inserted' FROM t0_template
2981
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2982
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2984
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2985
f_charbig = 'updated by trigger'
2986
WHERE f_int1 = - old.f_int1;
2988
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2989
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2991
# check trigger-6 success: 1
2993
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2994
f_int2 = CAST(f_char1 AS SIGNED INT),
2995
f_charbig = 'just inserted'
2996
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2998
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2999
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3000
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3001
'just inserted' FROM t0_template
3002
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3003
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3005
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3006
f_charbig = 'updated by trigger'
3007
WHERE f_int1 = - old.f_int1;
3010
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3012
# check trigger-7 success: 1
3014
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3015
f_int2 = CAST(f_char1 AS SIGNED INT),
3016
f_charbig = 'just inserted'
3017
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3019
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3020
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3021
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3022
'just inserted' FROM t0_template
3023
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3024
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3026
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3027
f_charbig = 'updated by trigger'
3028
WHERE f_int1 = - old.f_int1;
3031
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3033
# check trigger-8 success: 1
3035
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3036
f_int2 = CAST(f_char1 AS SIGNED INT),
3037
f_charbig = 'just inserted'
3038
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3040
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3042
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3043
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3045
SET new.f_int1 = old.f_int1 + @max_row,
3046
new.f_int2 = old.f_int2 - @max_row,
3047
new.f_charbig = '####updated per update trigger####';
3050
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3051
f_charbig = '####updated per update statement itself####';
3053
# check trigger-9 success: 1
3055
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3056
f_int2 = CAST(f_char1 AS SIGNED INT),
3057
f_charbig = CONCAT('===',f_char1,'===');
3058
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3060
SET new.f_int1 = new.f_int1 + @max_row,
3061
new.f_int2 = new.f_int2 - @max_row,
3062
new.f_charbig = '####updated per update trigger####';
3065
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3066
f_charbig = '####updated per update statement itself####';
3068
# check trigger-10 success: 1
3070
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3071
f_int2 = CAST(f_char1 AS SIGNED INT),
3072
f_charbig = CONCAT('===',f_char1,'===');
3073
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3075
SET new.f_int1 = @my_max1 + @counter,
3076
new.f_int2 = @my_min2 - @counter,
3077
new.f_charbig = '####updated per insert trigger####';
3078
SET @counter = @counter + 1;
3081
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3082
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3083
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3084
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3085
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3089
# check trigger-11 success: 1
3091
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3092
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3093
AND f_charbig = '####updated per insert trigger####';
3094
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3096
SET new.f_int1 = @my_max1 + @counter,
3097
new.f_int2 = @my_min2 - @counter,
3098
new.f_charbig = '####updated per insert trigger####';
3099
SET @counter = @counter + 1;
3102
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3103
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3104
SELECT CAST(f_int1 AS CHAR),
3105
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3106
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3110
# check trigger-12 success: 1
3112
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3113
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3114
AND f_charbig = '####updated per insert trigger####';
3116
Table Op Msg_type Msg_text
3117
test.t1 analyze note The storage engine for the table doesn't support analyze
3118
CHECK TABLE t1 EXTENDED;
3119
Table Op Msg_type Msg_text
3120
test.t1 check note The storage engine for the table doesn't support check
3121
CHECKSUM TABLE t1 EXTENDED;
3123
test.t1 <some_value>
3125
Table Op Msg_type Msg_text
3126
test.t1 optimize note The storage engine for the table doesn't support optimize
3127
# check layout success: 1
3128
REPAIR TABLE t1 EXTENDED;
3129
Table Op Msg_type Msg_text
3130
test.t1 repair note The storage engine for the table doesn't support repair
3131
# check layout success: 1
3134
# check TRUNCATE success: 1
3135
# check layout success: 1
3136
# End usability test (inc/partition_check.inc)
3143
f_charbig VARCHAR(1000)
3144
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
3146
PARTITION BY LIST(ABS(MOD(f_int1,2)))
3147
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
3148
(PARTITION part1 VALUES IN (0),
3149
PARTITION part2 VALUES IN (1),
3150
PARTITION part3 VALUES IN (NULL));
3151
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3152
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3153
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3154
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
3155
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3156
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3157
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3158
# Start usability test (inc/partition_check.inc)
3160
SHOW CREATE TABLE t1;
3162
t1 CREATE TABLE `t1` (
3163
`f_int1` int(11) NOT NULL DEFAULT '0',
3164
`f_int2` int(11) NOT NULL DEFAULT '0',
3165
`f_char1` char(20) DEFAULT NULL,
3166
`f_char2` char(20) DEFAULT NULL,
3167
`f_charbig` varchar(1000) DEFAULT NULL
3168
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
3170
# check prerequisites-1 success: 1
3171
# check COUNT(*) success: 1
3172
# check MIN/MAX(f_int1) success: 1
3173
# check MIN/MAX(f_int2) success: 1
3174
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3175
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3176
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3177
WHERE f_int1 IN (2,3);
3178
# check prerequisites-3 success: 1
3179
DELETE FROM t1 WHERE f_charbig = 'delete me';
3180
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3181
# check read via f_int1 success: 1
3182
# check read via f_int2 success: 1
3184
# check multiple-1 success: 1
3185
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3187
# check multiple-2 success: 1
3188
INSERT INTO t1 SELECT * FROM t0_template
3189
WHERE MOD(f_int1,3) = 0;
3191
# check multiple-3 success: 1
3192
UPDATE t1 SET f_int1 = f_int1 + @max_row
3193
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3194
AND @max_row_div2 + @max_row_div4;
3196
# check multiple-4 success: 1
3198
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3199
AND @max_row_div2 + @max_row_div4 + @max_row;
3201
# check multiple-5 success: 1
3202
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3204
SET f_int1 = @cur_value , f_int2 = @cur_value,
3205
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3206
f_charbig = '#SINGLE#';
3208
# check single-1 success: 1
3209
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3211
SET f_int1 = @cur_value , f_int2 = @cur_value,
3212
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3213
f_charbig = '#SINGLE#';
3215
# check single-2 success: 1
3216
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3217
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3218
UPDATE t1 SET f_int1 = @cur_value2
3219
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3221
# check single-3 success: 1
3222
SET @cur_value1= -1;
3223
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3224
UPDATE t1 SET f_int1 = @cur_value1
3225
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3227
# check single-4 success: 1
3228
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3229
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3231
# check single-5 success: 1
3232
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3234
# check single-6 success: 1
3235
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3237
# check single-7 success: 1
3238
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3239
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3240
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3241
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3242
f_charbig = '#NULL#';
3244
SET f_int1 = NULL , f_int2 = -@max_row,
3245
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3246
f_charbig = '#NULL#';
3247
ERROR 23000: Column 'f_int1' cannot be null
3248
# check null success: 1
3250
WHERE f_int1 = 0 AND f_int2 = 0
3251
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3252
AND f_charbig = '#NULL#';
3254
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3255
SELECT f_int1, f_int1, '', '', 'was inserted'
3256
FROM t0_template source_tab
3257
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3259
# check transactions-1 success: 1
3262
# check transactions-2 success: 1
3265
# check transactions-3 success: 1
3266
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3270
# check transactions-4 success: 1
3271
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3272
SELECT f_int1, f_int1, '', '', 'was inserted'
3273
FROM t0_template source_tab
3274
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3276
# check transactions-5 success: 1
3279
# check transactions-6 success: 1
3280
# INFO: Storage engine used for t1 seems to be transactional.
3283
# check transactions-7 success: 1
3284
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3286
SET @@session.sql_mode = 'traditional';
3287
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3288
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3289
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3290
'', '', 'was inserted' FROM t0_template
3291
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3292
ERROR 22012: Division by 0
3295
# check transactions-8 success: 1
3296
# INFO: Storage engine used for t1 seems to be able to revert
3297
# changes made by the failing statement.
3298
SET @@session.sql_mode = '';
3300
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3302
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3304
# check special-1 success: 1
3305
UPDATE t1 SET f_charbig = '';
3307
# check special-2 success: 1
3308
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3309
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3310
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3311
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3312
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3313
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3314
'just inserted' FROM t0_template
3315
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3316
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3318
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3319
f_charbig = 'updated by trigger'
3320
WHERE f_int1 = new.f_int1;
3322
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3323
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3324
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3326
# check trigger-1 success: 1
3328
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3329
f_int2 = CAST(f_char1 AS SIGNED INT),
3330
f_charbig = 'just inserted'
3331
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3333
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3334
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3335
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3336
'just inserted' FROM t0_template
3337
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3338
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3340
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3341
f_charbig = 'updated by trigger'
3342
WHERE f_int1 = new.f_int1;
3344
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3345
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3346
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3348
# check trigger-2 success: 1
3350
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3351
f_int2 = CAST(f_char1 AS SIGNED INT),
3352
f_charbig = 'just inserted'
3353
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3355
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3356
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3357
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3358
'just inserted' FROM t0_template
3359
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3360
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3362
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3363
f_charbig = 'updated by trigger'
3364
WHERE f_int1 = new.f_int1;
3366
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3367
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3369
# check trigger-3 success: 1
3371
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3372
f_int2 = CAST(f_char1 AS SIGNED INT),
3373
f_charbig = 'just inserted'
3374
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3376
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3377
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3378
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3379
'just inserted' FROM t0_template
3380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3381
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3383
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3384
f_charbig = 'updated by trigger'
3385
WHERE f_int1 = - old.f_int1;
3387
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3388
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3390
# check trigger-4 success: 1
3392
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3393
f_int2 = CAST(f_char1 AS SIGNED INT),
3394
f_charbig = 'just inserted'
3395
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3397
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3398
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3399
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3400
'just inserted' FROM t0_template
3401
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3402
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3404
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3405
f_charbig = 'updated by trigger'
3406
WHERE f_int1 = new.f_int1;
3408
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3409
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3411
# check trigger-5 success: 1
3413
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3414
f_int2 = CAST(f_char1 AS SIGNED INT),
3415
f_charbig = 'just inserted'
3416
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3418
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3419
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3420
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3421
'just inserted' FROM t0_template
3422
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3423
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3425
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3426
f_charbig = 'updated by trigger'
3427
WHERE f_int1 = - old.f_int1;
3429
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3430
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3432
# check trigger-6 success: 1
3434
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3435
f_int2 = CAST(f_char1 AS SIGNED INT),
3436
f_charbig = 'just inserted'
3437
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3439
WHERE ABS(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 DELETE 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 = - old.f_int1;
3451
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3453
# check trigger-7 success: 1
3455
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3456
f_int2 = CAST(f_char1 AS SIGNED INT),
3457
f_charbig = 'just inserted'
3458
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3460
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3461
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3462
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3463
'just inserted' FROM t0_template
3464
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3465
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3467
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3468
f_charbig = 'updated by trigger'
3469
WHERE f_int1 = - old.f_int1;
3472
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3474
# check trigger-8 success: 1
3476
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3477
f_int2 = CAST(f_char1 AS SIGNED INT),
3478
f_charbig = 'just inserted'
3479
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3481
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3483
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3484
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3486
SET new.f_int1 = old.f_int1 + @max_row,
3487
new.f_int2 = old.f_int2 - @max_row,
3488
new.f_charbig = '####updated per update trigger####';
3491
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3492
f_charbig = '####updated per update statement itself####';
3494
# check trigger-9 success: 1
3496
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3497
f_int2 = CAST(f_char1 AS SIGNED INT),
3498
f_charbig = CONCAT('===',f_char1,'===');
3499
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3501
SET new.f_int1 = new.f_int1 + @max_row,
3502
new.f_int2 = new.f_int2 - @max_row,
3503
new.f_charbig = '####updated per update trigger####';
3506
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3507
f_charbig = '####updated per update statement itself####';
3509
# check trigger-10 success: 1
3511
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3512
f_int2 = CAST(f_char1 AS SIGNED INT),
3513
f_charbig = CONCAT('===',f_char1,'===');
3514
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3516
SET new.f_int1 = @my_max1 + @counter,
3517
new.f_int2 = @my_min2 - @counter,
3518
new.f_charbig = '####updated per insert trigger####';
3519
SET @counter = @counter + 1;
3522
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3523
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3524
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3525
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3526
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3530
# check trigger-11 success: 1
3532
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3533
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3534
AND f_charbig = '####updated per insert trigger####';
3535
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3537
SET new.f_int1 = @my_max1 + @counter,
3538
new.f_int2 = @my_min2 - @counter,
3539
new.f_charbig = '####updated per insert trigger####';
3540
SET @counter = @counter + 1;
3543
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3544
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3545
SELECT CAST(f_int1 AS CHAR),
3546
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3547
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3551
# check trigger-12 success: 1
3553
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3554
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3555
AND f_charbig = '####updated per insert trigger####';
3557
Table Op Msg_type Msg_text
3558
test.t1 analyze note The storage engine for the table doesn't support analyze
3559
CHECK TABLE t1 EXTENDED;
3560
Table Op Msg_type Msg_text
3561
test.t1 check note The storage engine for the table doesn't support check
3562
CHECKSUM TABLE t1 EXTENDED;
3564
test.t1 <some_value>
3566
Table Op Msg_type Msg_text
3567
test.t1 optimize note The storage engine for the table doesn't support optimize
3568
# check layout success: 1
3569
REPAIR TABLE t1 EXTENDED;
3570
Table Op Msg_type Msg_text
3571
test.t1 repair note The storage engine for the table doesn't support repair
3572
# check layout success: 1
3575
# check TRUNCATE success: 1
3576
# check layout success: 1
3577
# End usability test (inc/partition_check.inc)
3579
DROP TABLE IF EXISTS t1;
3585
f_charbig VARCHAR(1000)
3586
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
3588
PARTITION BY HASH(f_int1) PARTITIONS 2;
3589
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3590
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3591
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3592
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
3593
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3594
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3595
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3596
# Start usability test (inc/partition_check.inc)
3598
SHOW CREATE TABLE t1;
3600
t1 CREATE TABLE `t1` (
3601
`f_int1` int(11) NOT NULL DEFAULT '0',
3602
`f_int2` int(11) NOT NULL DEFAULT '0',
3603
`f_char1` char(20) DEFAULT NULL,
3604
`f_char2` char(20) DEFAULT NULL,
3605
`f_charbig` varchar(1000) DEFAULT NULL
3606
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) PARTITIONS 2 */
3608
# check prerequisites-1 success: 1
3609
# check COUNT(*) success: 1
3610
# check MIN/MAX(f_int1) success: 1
3611
# check MIN/MAX(f_int2) success: 1
3612
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3613
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3614
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3615
WHERE f_int1 IN (2,3);
3616
# check prerequisites-3 success: 1
3617
DELETE FROM t1 WHERE f_charbig = 'delete me';
3618
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3619
# check read via f_int1 success: 1
3620
# check read via f_int2 success: 1
3622
# check multiple-1 success: 1
3623
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3625
# check multiple-2 success: 1
3626
INSERT INTO t1 SELECT * FROM t0_template
3627
WHERE MOD(f_int1,3) = 0;
3629
# check multiple-3 success: 1
3630
UPDATE t1 SET f_int1 = f_int1 + @max_row
3631
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3632
AND @max_row_div2 + @max_row_div4;
3634
# check multiple-4 success: 1
3636
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3637
AND @max_row_div2 + @max_row_div4 + @max_row;
3639
# check multiple-5 success: 1
3640
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3642
SET f_int1 = @cur_value , f_int2 = @cur_value,
3643
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3644
f_charbig = '#SINGLE#';
3646
# check single-1 success: 1
3647
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3649
SET f_int1 = @cur_value , f_int2 = @cur_value,
3650
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3651
f_charbig = '#SINGLE#';
3653
# check single-2 success: 1
3654
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3655
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3656
UPDATE t1 SET f_int1 = @cur_value2
3657
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3659
# check single-3 success: 1
3660
SET @cur_value1= -1;
3661
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3662
UPDATE t1 SET f_int1 = @cur_value1
3663
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3665
# check single-4 success: 1
3666
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3667
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3669
# check single-5 success: 1
3670
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3672
# check single-6 success: 1
3673
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3675
# check single-7 success: 1
3676
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3677
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3678
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3679
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3680
f_charbig = '#NULL#';
3682
SET f_int1 = NULL , f_int2 = -@max_row,
3683
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3684
f_charbig = '#NULL#';
3685
ERROR 23000: Column 'f_int1' cannot be null
3686
# check null success: 1
3688
WHERE f_int1 = 0 AND f_int2 = 0
3689
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3690
AND f_charbig = '#NULL#';
3692
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3693
SELECT f_int1, f_int1, '', '', 'was inserted'
3694
FROM t0_template source_tab
3695
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3697
# check transactions-1 success: 1
3700
# check transactions-2 success: 1
3703
# check transactions-3 success: 1
3704
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3708
# check transactions-4 success: 1
3709
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3710
SELECT f_int1, f_int1, '', '', 'was inserted'
3711
FROM t0_template source_tab
3712
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3714
# check transactions-5 success: 1
3717
# check transactions-6 success: 1
3718
# INFO: Storage engine used for t1 seems to be transactional.
3721
# check transactions-7 success: 1
3722
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3724
SET @@session.sql_mode = 'traditional';
3725
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3726
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3727
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3728
'', '', 'was inserted' FROM t0_template
3729
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3730
ERROR 22012: Division by 0
3733
# check transactions-8 success: 1
3734
# INFO: Storage engine used for t1 seems to be able to revert
3735
# changes made by the failing statement.
3736
SET @@session.sql_mode = '';
3738
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3740
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3742
# check special-1 success: 1
3743
UPDATE t1 SET f_charbig = '';
3745
# check special-2 success: 1
3746
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3747
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3748
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3749
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3750
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3751
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3752
'just inserted' FROM t0_template
3753
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3754
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3756
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3757
f_charbig = 'updated by trigger'
3758
WHERE f_int1 = new.f_int1;
3760
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3761
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3762
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3764
# check trigger-1 success: 1
3766
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3767
f_int2 = CAST(f_char1 AS SIGNED INT),
3768
f_charbig = 'just inserted'
3769
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3771
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3772
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3773
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3774
'just inserted' FROM t0_template
3775
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3776
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3778
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3779
f_charbig = 'updated by trigger'
3780
WHERE f_int1 = new.f_int1;
3782
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3783
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3784
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3786
# check trigger-2 success: 1
3788
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3789
f_int2 = CAST(f_char1 AS SIGNED INT),
3790
f_charbig = 'just inserted'
3791
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3793
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3794
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3795
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3796
'just inserted' FROM t0_template
3797
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3798
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3800
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3801
f_charbig = 'updated by trigger'
3802
WHERE f_int1 = new.f_int1;
3804
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3805
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3807
# check trigger-3 success: 1
3809
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3810
f_int2 = CAST(f_char1 AS SIGNED INT),
3811
f_charbig = 'just inserted'
3812
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3814
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3815
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3816
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3817
'just inserted' FROM t0_template
3818
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3819
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3821
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3822
f_charbig = 'updated by trigger'
3823
WHERE f_int1 = - old.f_int1;
3825
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3826
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3828
# check trigger-4 success: 1
3830
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3831
f_int2 = CAST(f_char1 AS SIGNED INT),
3832
f_charbig = 'just inserted'
3833
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3835
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3836
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3837
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3838
'just inserted' FROM t0_template
3839
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3840
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3842
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3843
f_charbig = 'updated by trigger'
3844
WHERE f_int1 = new.f_int1;
3846
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3847
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3849
# check trigger-5 success: 1
3851
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3852
f_int2 = CAST(f_char1 AS SIGNED INT),
3853
f_charbig = 'just inserted'
3854
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3856
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3857
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3858
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3859
'just inserted' FROM t0_template
3860
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3861
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3863
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3864
f_charbig = 'updated by trigger'
3865
WHERE f_int1 = - old.f_int1;
3867
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3868
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3870
# check trigger-6 success: 1
3872
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3873
f_int2 = CAST(f_char1 AS SIGNED INT),
3874
f_charbig = 'just inserted'
3875
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3877
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3878
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3879
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3880
'just inserted' FROM t0_template
3881
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3882
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3884
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3885
f_charbig = 'updated by trigger'
3886
WHERE f_int1 = - old.f_int1;
3889
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3891
# check trigger-7 success: 1
3893
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3894
f_int2 = CAST(f_char1 AS SIGNED INT),
3895
f_charbig = 'just inserted'
3896
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3898
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3899
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3900
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3901
'just inserted' FROM t0_template
3902
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3903
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3905
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3906
f_charbig = 'updated by trigger'
3907
WHERE f_int1 = - old.f_int1;
3910
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3912
# check trigger-8 success: 1
3914
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3915
f_int2 = CAST(f_char1 AS SIGNED INT),
3916
f_charbig = 'just inserted'
3917
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3919
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3921
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3922
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3924
SET new.f_int1 = old.f_int1 + @max_row,
3925
new.f_int2 = old.f_int2 - @max_row,
3926
new.f_charbig = '####updated per update trigger####';
3929
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3930
f_charbig = '####updated per update statement itself####';
3932
# check trigger-9 success: 1
3934
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3935
f_int2 = CAST(f_char1 AS SIGNED INT),
3936
f_charbig = CONCAT('===',f_char1,'===');
3937
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3939
SET new.f_int1 = new.f_int1 + @max_row,
3940
new.f_int2 = new.f_int2 - @max_row,
3941
new.f_charbig = '####updated per update trigger####';
3944
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3945
f_charbig = '####updated per update statement itself####';
3947
# check trigger-10 success: 1
3949
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3950
f_int2 = CAST(f_char1 AS SIGNED INT),
3951
f_charbig = CONCAT('===',f_char1,'===');
3952
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3954
SET new.f_int1 = @my_max1 + @counter,
3955
new.f_int2 = @my_min2 - @counter,
3956
new.f_charbig = '####updated per insert trigger####';
3957
SET @counter = @counter + 1;
3960
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3961
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3962
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3963
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3964
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3968
# check trigger-11 success: 1
3970
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3971
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3972
AND f_charbig = '####updated per insert trigger####';
3973
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3975
SET new.f_int1 = @my_max1 + @counter,
3976
new.f_int2 = @my_min2 - @counter,
3977
new.f_charbig = '####updated per insert trigger####';
3978
SET @counter = @counter + 1;
3981
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3982
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3983
SELECT CAST(f_int1 AS CHAR),
3984
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3985
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3989
# check trigger-12 success: 1
3991
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3992
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3993
AND f_charbig = '####updated per insert trigger####';
3995
Table Op Msg_type Msg_text
3996
test.t1 analyze note The storage engine for the table doesn't support analyze
3997
CHECK TABLE t1 EXTENDED;
3998
Table Op Msg_type Msg_text
3999
test.t1 check note The storage engine for the table doesn't support check
4000
CHECKSUM TABLE t1 EXTENDED;
4002
test.t1 <some_value>
4004
Table Op Msg_type Msg_text
4005
test.t1 optimize note The storage engine for the table doesn't support optimize
4006
# check layout success: 1
4007
REPAIR TABLE t1 EXTENDED;
4008
Table Op Msg_type Msg_text
4009
test.t1 repair note The storage engine for the table doesn't support repair
4010
# check layout success: 1
4013
# check TRUNCATE success: 1
4014
# check layout success: 1
4015
# End usability test (inc/partition_check.inc)
4022
f_charbig VARCHAR(1000)
4023
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
4025
PARTITION BY KEY(f_int1) PARTITIONS 5;
4026
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4027
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4028
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4029
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
4030
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4031
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4032
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4033
# Start usability test (inc/partition_check.inc)
4035
SHOW CREATE TABLE t1;
4037
t1 CREATE TABLE `t1` (
4038
`f_int1` int(11) NOT NULL DEFAULT '0',
4039
`f_int2` int(11) NOT NULL DEFAULT '0',
4040
`f_char1` char(20) DEFAULT NULL,
4041
`f_char2` char(20) DEFAULT NULL,
4042
`f_charbig` varchar(1000) DEFAULT NULL
4043
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) PARTITIONS 5 */
4045
# check prerequisites-1 success: 1
4046
# check COUNT(*) success: 1
4047
# check MIN/MAX(f_int1) success: 1
4048
# check MIN/MAX(f_int2) success: 1
4049
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4050
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4051
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4052
WHERE f_int1 IN (2,3);
4053
# check prerequisites-3 success: 1
4054
DELETE FROM t1 WHERE f_charbig = 'delete me';
4055
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4056
# check read via f_int1 success: 1
4057
# check read via f_int2 success: 1
4059
# check multiple-1 success: 1
4060
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4062
# check multiple-2 success: 1
4063
INSERT INTO t1 SELECT * FROM t0_template
4064
WHERE MOD(f_int1,3) = 0;
4066
# check multiple-3 success: 1
4067
UPDATE t1 SET f_int1 = f_int1 + @max_row
4068
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4069
AND @max_row_div2 + @max_row_div4;
4071
# check multiple-4 success: 1
4073
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4074
AND @max_row_div2 + @max_row_div4 + @max_row;
4076
# check multiple-5 success: 1
4077
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4079
SET f_int1 = @cur_value , f_int2 = @cur_value,
4080
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4081
f_charbig = '#SINGLE#';
4083
# check single-1 success: 1
4084
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4086
SET f_int1 = @cur_value , f_int2 = @cur_value,
4087
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4088
f_charbig = '#SINGLE#';
4090
# check single-2 success: 1
4091
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4092
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4093
UPDATE t1 SET f_int1 = @cur_value2
4094
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4096
# check single-3 success: 1
4097
SET @cur_value1= -1;
4098
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4099
UPDATE t1 SET f_int1 = @cur_value1
4100
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4102
# check single-4 success: 1
4103
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4104
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4106
# check single-5 success: 1
4107
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4109
# check single-6 success: 1
4110
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4112
# check single-7 success: 1
4113
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4114
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4115
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4116
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4117
f_charbig = '#NULL#';
4119
SET f_int1 = NULL , f_int2 = -@max_row,
4120
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4121
f_charbig = '#NULL#';
4122
ERROR 23000: Column 'f_int1' cannot be null
4123
# check null success: 1
4125
WHERE f_int1 = 0 AND f_int2 = 0
4126
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4127
AND f_charbig = '#NULL#';
4129
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4130
SELECT f_int1, f_int1, '', '', 'was inserted'
4131
FROM t0_template source_tab
4132
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4134
# check transactions-1 success: 1
4137
# check transactions-2 success: 1
4140
# check transactions-3 success: 1
4141
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4145
# check transactions-4 success: 1
4146
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4147
SELECT f_int1, f_int1, '', '', 'was inserted'
4148
FROM t0_template source_tab
4149
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4151
# check transactions-5 success: 1
4154
# check transactions-6 success: 1
4155
# INFO: Storage engine used for t1 seems to be transactional.
4158
# check transactions-7 success: 1
4159
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4161
SET @@session.sql_mode = 'traditional';
4162
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4163
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4164
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4165
'', '', 'was inserted' FROM t0_template
4166
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4167
ERROR 22012: Division by 0
4170
# check transactions-8 success: 1
4171
# INFO: Storage engine used for t1 seems to be able to revert
4172
# changes made by the failing statement.
4173
SET @@session.sql_mode = '';
4175
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4177
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4179
# check special-1 success: 1
4180
UPDATE t1 SET f_charbig = '';
4182
# check special-2 success: 1
4183
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4184
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4185
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4186
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4187
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4188
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4189
'just inserted' FROM t0_template
4190
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4191
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4193
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4194
f_charbig = 'updated by trigger'
4195
WHERE f_int1 = new.f_int1;
4197
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4198
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4199
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4201
# check trigger-1 success: 1
4203
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4204
f_int2 = CAST(f_char1 AS SIGNED INT),
4205
f_charbig = 'just inserted'
4206
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4208
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4209
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4210
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4211
'just inserted' FROM t0_template
4212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4213
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4215
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4216
f_charbig = 'updated by trigger'
4217
WHERE f_int1 = new.f_int1;
4219
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4220
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4221
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4223
# check trigger-2 success: 1
4225
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4226
f_int2 = CAST(f_char1 AS SIGNED INT),
4227
f_charbig = 'just inserted'
4228
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4230
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4231
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4232
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4233
'just inserted' FROM t0_template
4234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4235
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4237
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4238
f_charbig = 'updated by trigger'
4239
WHERE f_int1 = new.f_int1;
4241
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4242
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4244
# check trigger-3 success: 1
4246
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4247
f_int2 = CAST(f_char1 AS SIGNED INT),
4248
f_charbig = 'just inserted'
4249
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4251
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4252
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4253
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4254
'just inserted' FROM t0_template
4255
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4256
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4258
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4259
f_charbig = 'updated by trigger'
4260
WHERE f_int1 = - old.f_int1;
4262
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4263
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4265
# check trigger-4 success: 1
4267
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4268
f_int2 = CAST(f_char1 AS SIGNED INT),
4269
f_charbig = 'just inserted'
4270
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4272
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4273
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4274
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4275
'just inserted' FROM t0_template
4276
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4277
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4279
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4280
f_charbig = 'updated by trigger'
4281
WHERE f_int1 = new.f_int1;
4283
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4284
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4286
# check trigger-5 success: 1
4288
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4289
f_int2 = CAST(f_char1 AS SIGNED INT),
4290
f_charbig = 'just inserted'
4291
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4293
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4294
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4295
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4296
'just inserted' FROM t0_template
4297
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4298
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4300
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4301
f_charbig = 'updated by trigger'
4302
WHERE f_int1 = - old.f_int1;
4304
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4305
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4307
# check trigger-6 success: 1
4309
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4310
f_int2 = CAST(f_char1 AS SIGNED INT),
4311
f_charbig = 'just inserted'
4312
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4314
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4315
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4316
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4317
'just inserted' FROM t0_template
4318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4319
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4321
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4322
f_charbig = 'updated by trigger'
4323
WHERE f_int1 = - old.f_int1;
4326
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4328
# check trigger-7 success: 1
4330
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4331
f_int2 = CAST(f_char1 AS SIGNED INT),
4332
f_charbig = 'just inserted'
4333
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4335
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4336
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4337
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4338
'just inserted' FROM t0_template
4339
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4340
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4342
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4343
f_charbig = 'updated by trigger'
4344
WHERE f_int1 = - old.f_int1;
4347
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4349
# check trigger-8 success: 1
4351
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4352
f_int2 = CAST(f_char1 AS SIGNED INT),
4353
f_charbig = 'just inserted'
4354
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4356
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4358
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4359
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4361
SET new.f_int1 = old.f_int1 + @max_row,
4362
new.f_int2 = old.f_int2 - @max_row,
4363
new.f_charbig = '####updated per update trigger####';
4366
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4367
f_charbig = '####updated per update statement itself####';
4369
# check trigger-9 success: 1
4371
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4372
f_int2 = CAST(f_char1 AS SIGNED INT),
4373
f_charbig = CONCAT('===',f_char1,'===');
4374
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4376
SET new.f_int1 = new.f_int1 + @max_row,
4377
new.f_int2 = new.f_int2 - @max_row,
4378
new.f_charbig = '####updated per update trigger####';
4381
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4382
f_charbig = '####updated per update statement itself####';
4384
# check trigger-10 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 = CONCAT('===',f_char1,'===');
4389
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4391
SET new.f_int1 = @my_max1 + @counter,
4392
new.f_int2 = @my_min2 - @counter,
4393
new.f_charbig = '####updated per insert trigger####';
4394
SET @counter = @counter + 1;
4397
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4398
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4399
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4400
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4401
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4405
# check trigger-11 success: 1
4407
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4408
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4409
AND f_charbig = '####updated per insert trigger####';
4410
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4412
SET new.f_int1 = @my_max1 + @counter,
4413
new.f_int2 = @my_min2 - @counter,
4414
new.f_charbig = '####updated per insert trigger####';
4415
SET @counter = @counter + 1;
4418
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4419
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4420
SELECT CAST(f_int1 AS CHAR),
4421
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4422
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4426
# check trigger-12 success: 1
4428
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4429
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4430
AND f_charbig = '####updated per insert trigger####';
4432
Table Op Msg_type Msg_text
4433
test.t1 analyze note The storage engine for the table doesn't support analyze
4434
CHECK TABLE t1 EXTENDED;
4435
Table Op Msg_type Msg_text
4436
test.t1 check note The storage engine for the table doesn't support check
4437
CHECKSUM TABLE t1 EXTENDED;
4439
test.t1 <some_value>
4441
Table Op Msg_type Msg_text
4442
test.t1 optimize note The storage engine for the table doesn't support optimize
4443
# check layout success: 1
4444
REPAIR TABLE t1 EXTENDED;
4445
Table Op Msg_type Msg_text
4446
test.t1 repair note The storage engine for the table doesn't support repair
4447
# check layout success: 1
4450
# check TRUNCATE success: 1
4451
# check layout success: 1
4452
# End usability test (inc/partition_check.inc)
4459
f_charbig VARCHAR(1000)
4460
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
4462
PARTITION BY LIST(MOD(f_int1,4))
4463
(PARTITION part_3 VALUES IN (-3),
4464
PARTITION part_2 VALUES IN (-2),
4465
PARTITION part_1 VALUES IN (-1),
4466
PARTITION part_N VALUES IN (NULL),
4467
PARTITION part0 VALUES IN (0),
4468
PARTITION part1 VALUES IN (1),
4469
PARTITION part2 VALUES IN (2),
4470
PARTITION part3 VALUES IN (3));
4471
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4472
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4473
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4474
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
4475
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4476
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4477
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4478
# Start usability test (inc/partition_check.inc)
4480
SHOW CREATE TABLE t1;
4482
t1 CREATE TABLE `t1` (
4483
`f_int1` int(11) NOT NULL DEFAULT '0',
4484
`f_int2` int(11) NOT NULL DEFAULT '0',
4485
`f_char1` char(20) DEFAULT NULL,
4486
`f_char2` char(20) DEFAULT NULL,
4487
`f_charbig` varchar(1000) DEFAULT NULL
4488
) 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) */
4490
# check prerequisites-1 success: 1
4491
# check COUNT(*) success: 1
4492
# check MIN/MAX(f_int1) success: 1
4493
# check MIN/MAX(f_int2) success: 1
4494
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4495
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4496
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4497
WHERE f_int1 IN (2,3);
4498
# check prerequisites-3 success: 1
4499
DELETE FROM t1 WHERE f_charbig = 'delete me';
4500
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4501
# check read via f_int1 success: 1
4502
# check read via f_int2 success: 1
4504
# check multiple-1 success: 1
4505
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4507
# check multiple-2 success: 1
4508
INSERT INTO t1 SELECT * FROM t0_template
4509
WHERE MOD(f_int1,3) = 0;
4511
# check multiple-3 success: 1
4512
UPDATE t1 SET f_int1 = f_int1 + @max_row
4513
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4514
AND @max_row_div2 + @max_row_div4;
4516
# check multiple-4 success: 1
4518
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4519
AND @max_row_div2 + @max_row_div4 + @max_row;
4521
# check multiple-5 success: 1
4522
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4524
SET f_int1 = @cur_value , f_int2 = @cur_value,
4525
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4526
f_charbig = '#SINGLE#';
4528
# check single-1 success: 1
4529
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4531
SET f_int1 = @cur_value , f_int2 = @cur_value,
4532
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4533
f_charbig = '#SINGLE#';
4535
# check single-2 success: 1
4536
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4537
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4538
UPDATE t1 SET f_int1 = @cur_value2
4539
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4541
# check single-3 success: 1
4542
SET @cur_value1= -1;
4543
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4544
UPDATE t1 SET f_int1 = @cur_value1
4545
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4547
# check single-4 success: 1
4548
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4549
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4551
# check single-5 success: 1
4552
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4554
# check single-6 success: 1
4555
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4557
# check single-7 success: 1
4558
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4559
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4560
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4561
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4562
f_charbig = '#NULL#';
4564
SET f_int1 = NULL , f_int2 = -@max_row,
4565
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4566
f_charbig = '#NULL#';
4567
ERROR 23000: Column 'f_int1' cannot be null
4568
# check null success: 1
4570
WHERE f_int1 = 0 AND f_int2 = 0
4571
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4572
AND f_charbig = '#NULL#';
4574
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4575
SELECT f_int1, f_int1, '', '', 'was inserted'
4576
FROM t0_template source_tab
4577
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4579
# check transactions-1 success: 1
4582
# check transactions-2 success: 1
4585
# check transactions-3 success: 1
4586
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4590
# check transactions-4 success: 1
4591
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4592
SELECT f_int1, f_int1, '', '', 'was inserted'
4593
FROM t0_template source_tab
4594
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4596
# check transactions-5 success: 1
4599
# check transactions-6 success: 1
4600
# INFO: Storage engine used for t1 seems to be transactional.
4603
# check transactions-7 success: 1
4604
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4606
SET @@session.sql_mode = 'traditional';
4607
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4608
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4609
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4610
'', '', 'was inserted' FROM t0_template
4611
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4612
ERROR 22012: Division by 0
4615
# check transactions-8 success: 1
4616
# INFO: Storage engine used for t1 seems to be able to revert
4617
# changes made by the failing statement.
4618
SET @@session.sql_mode = '';
4620
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4622
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4624
# check special-1 success: 1
4625
UPDATE t1 SET f_charbig = '';
4627
# check special-2 success: 1
4628
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4629
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4630
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4631
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4632
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4633
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4634
'just inserted' FROM t0_template
4635
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4636
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4638
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4639
f_charbig = 'updated by trigger'
4640
WHERE f_int1 = new.f_int1;
4642
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4643
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4644
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4646
# check trigger-1 success: 1
4648
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4649
f_int2 = CAST(f_char1 AS SIGNED INT),
4650
f_charbig = 'just inserted'
4651
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4653
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4654
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4655
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4656
'just inserted' FROM t0_template
4657
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4658
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4660
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4661
f_charbig = 'updated by trigger'
4662
WHERE f_int1 = new.f_int1;
4664
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4665
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4666
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4668
# check trigger-2 success: 1
4670
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4671
f_int2 = CAST(f_char1 AS SIGNED INT),
4672
f_charbig = 'just inserted'
4673
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4675
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4676
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4677
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4678
'just inserted' FROM t0_template
4679
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4680
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4682
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4683
f_charbig = 'updated by trigger'
4684
WHERE f_int1 = new.f_int1;
4686
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4687
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4689
# check trigger-3 success: 1
4691
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4692
f_int2 = CAST(f_char1 AS SIGNED INT),
4693
f_charbig = 'just inserted'
4694
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4696
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4697
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4698
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4699
'just inserted' FROM t0_template
4700
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4701
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4703
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4704
f_charbig = 'updated by trigger'
4705
WHERE f_int1 = - old.f_int1;
4707
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4708
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4710
# check trigger-4 success: 1
4712
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4713
f_int2 = CAST(f_char1 AS SIGNED INT),
4714
f_charbig = 'just inserted'
4715
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4717
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4718
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4719
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4720
'just inserted' FROM t0_template
4721
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4722
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4724
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4725
f_charbig = 'updated by trigger'
4726
WHERE f_int1 = new.f_int1;
4728
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4729
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4731
# check trigger-5 success: 1
4733
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4734
f_int2 = CAST(f_char1 AS SIGNED INT),
4735
f_charbig = 'just inserted'
4736
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4738
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4739
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4740
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4741
'just inserted' FROM t0_template
4742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4743
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4745
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4746
f_charbig = 'updated by trigger'
4747
WHERE f_int1 = - old.f_int1;
4749
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4750
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4752
# check trigger-6 success: 1
4754
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4755
f_int2 = CAST(f_char1 AS SIGNED INT),
4756
f_charbig = 'just inserted'
4757
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4759
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4760
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4761
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4762
'just inserted' FROM t0_template
4763
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4764
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4766
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4767
f_charbig = 'updated by trigger'
4768
WHERE f_int1 = - old.f_int1;
4771
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4773
# check trigger-7 success: 1
4775
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4776
f_int2 = CAST(f_char1 AS SIGNED INT),
4777
f_charbig = 'just inserted'
4778
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4780
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4781
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4782
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4783
'just inserted' FROM t0_template
4784
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4785
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4787
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4788
f_charbig = 'updated by trigger'
4789
WHERE f_int1 = - old.f_int1;
4792
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4794
# check trigger-8 success: 1
4796
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4797
f_int2 = CAST(f_char1 AS SIGNED INT),
4798
f_charbig = 'just inserted'
4799
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4801
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4803
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4804
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4806
SET new.f_int1 = old.f_int1 + @max_row,
4807
new.f_int2 = old.f_int2 - @max_row,
4808
new.f_charbig = '####updated per update trigger####';
4811
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4812
f_charbig = '####updated per update statement itself####';
4814
# check trigger-9 success: 1
4816
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4817
f_int2 = CAST(f_char1 AS SIGNED INT),
4818
f_charbig = CONCAT('===',f_char1,'===');
4819
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4821
SET new.f_int1 = new.f_int1 + @max_row,
4822
new.f_int2 = new.f_int2 - @max_row,
4823
new.f_charbig = '####updated per update trigger####';
4826
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4827
f_charbig = '####updated per update statement itself####';
4829
# check trigger-10 success: 1
4831
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4832
f_int2 = CAST(f_char1 AS SIGNED INT),
4833
f_charbig = CONCAT('===',f_char1,'===');
4834
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4836
SET new.f_int1 = @my_max1 + @counter,
4837
new.f_int2 = @my_min2 - @counter,
4838
new.f_charbig = '####updated per insert trigger####';
4839
SET @counter = @counter + 1;
4842
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4843
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4844
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4845
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4846
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4850
# check trigger-11 success: 1
4852
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4853
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4854
AND f_charbig = '####updated per insert trigger####';
4855
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4857
SET new.f_int1 = @my_max1 + @counter,
4858
new.f_int2 = @my_min2 - @counter,
4859
new.f_charbig = '####updated per insert trigger####';
4860
SET @counter = @counter + 1;
4863
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4864
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4865
SELECT CAST(f_int1 AS CHAR),
4866
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4867
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4871
# check trigger-12 success: 1
4873
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4874
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4875
AND f_charbig = '####updated per insert trigger####';
4877
Table Op Msg_type Msg_text
4878
test.t1 analyze note The storage engine for the table doesn't support analyze
4879
CHECK TABLE t1 EXTENDED;
4880
Table Op Msg_type Msg_text
4881
test.t1 check note The storage engine for the table doesn't support check
4882
CHECKSUM TABLE t1 EXTENDED;
4884
test.t1 <some_value>
4886
Table Op Msg_type Msg_text
4887
test.t1 optimize note The storage engine for the table doesn't support optimize
4888
# check layout success: 1
4889
REPAIR TABLE t1 EXTENDED;
4890
Table Op Msg_type Msg_text
4891
test.t1 repair note The storage engine for the table doesn't support repair
4892
# check layout success: 1
4895
# check TRUNCATE success: 1
4896
# check layout success: 1
4897
# End usability test (inc/partition_check.inc)
4904
f_charbig VARCHAR(1000)
4905
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
4907
PARTITION BY RANGE(f_int1)
4908
(PARTITION parta VALUES LESS THAN (0),
4909
PARTITION partb VALUES LESS THAN (5),
4910
PARTITION partc VALUES LESS THAN (10),
4911
PARTITION partd VALUES LESS THAN (10 + 5),
4912
PARTITION parte VALUES LESS THAN (20),
4913
PARTITION partf VALUES LESS THAN (2147483646));
4914
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4915
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4916
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4917
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
4918
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4919
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4920
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4921
# Start usability test (inc/partition_check.inc)
4923
SHOW CREATE TABLE t1;
4925
t1 CREATE TABLE `t1` (
4926
`f_int1` int(11) NOT NULL DEFAULT '0',
4927
`f_int2` int(11) NOT NULL DEFAULT '0',
4928
`f_char1` char(20) DEFAULT NULL,
4929
`f_char2` char(20) DEFAULT NULL,
4930
`f_charbig` varchar(1000) DEFAULT NULL
4931
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
4933
# check prerequisites-1 success: 1
4934
# check COUNT(*) success: 1
4935
# check MIN/MAX(f_int1) success: 1
4936
# check MIN/MAX(f_int2) success: 1
4937
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4938
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4939
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4940
WHERE f_int1 IN (2,3);
4941
# check prerequisites-3 success: 1
4942
DELETE FROM t1 WHERE f_charbig = 'delete me';
4943
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4944
# check read via f_int1 success: 1
4945
# check read via f_int2 success: 1
4947
# check multiple-1 success: 1
4948
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4950
# check multiple-2 success: 1
4951
INSERT INTO t1 SELECT * FROM t0_template
4952
WHERE MOD(f_int1,3) = 0;
4954
# check multiple-3 success: 1
4955
UPDATE t1 SET f_int1 = f_int1 + @max_row
4956
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4957
AND @max_row_div2 + @max_row_div4;
4959
# check multiple-4 success: 1
4961
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4962
AND @max_row_div2 + @max_row_div4 + @max_row;
4964
# check multiple-5 success: 1
4965
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4967
SET f_int1 = @cur_value , f_int2 = @cur_value,
4968
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4969
f_charbig = '#SINGLE#';
4971
# check single-1 success: 1
4972
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4974
SET f_int1 = @cur_value , f_int2 = @cur_value,
4975
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4976
f_charbig = '#SINGLE#';
4978
# check single-2 success: 1
4979
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4980
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4981
UPDATE t1 SET f_int1 = @cur_value2
4982
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4984
# check single-3 success: 1
4985
SET @cur_value1= -1;
4986
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4987
UPDATE t1 SET f_int1 = @cur_value1
4988
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4990
# check single-4 success: 1
4991
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4992
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4994
# check single-5 success: 1
4995
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4997
# check single-6 success: 1
4998
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4999
ERROR HY000: Table has no partition for value 2147483647
5000
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5001
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5002
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5003
f_charbig = '#NULL#';
5005
SET f_int1 = NULL , f_int2 = -@max_row,
5006
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5007
f_charbig = '#NULL#';
5008
ERROR 23000: Column 'f_int1' cannot be null
5009
# check null success: 1
5011
WHERE f_int1 = 0 AND f_int2 = 0
5012
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5013
AND f_charbig = '#NULL#';
5015
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5016
SELECT f_int1, f_int1, '', '', 'was inserted'
5017
FROM t0_template source_tab
5018
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5020
# check transactions-1 success: 1
5023
# check transactions-2 success: 1
5026
# check transactions-3 success: 1
5027
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5031
# check transactions-4 success: 1
5032
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5033
SELECT f_int1, f_int1, '', '', 'was inserted'
5034
FROM t0_template source_tab
5035
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5037
# check transactions-5 success: 1
5040
# check transactions-6 success: 1
5041
# INFO: Storage engine used for t1 seems to be transactional.
5044
# check transactions-7 success: 1
5045
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5047
SET @@session.sql_mode = 'traditional';
5048
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5049
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5050
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5051
'', '', 'was inserted' FROM t0_template
5052
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5053
ERROR 22012: Division by 0
5056
# check transactions-8 success: 1
5057
# INFO: Storage engine used for t1 seems to be able to revert
5058
# changes made by the failing statement.
5059
SET @@session.sql_mode = '';
5061
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5063
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5065
# check special-1 success: 1
5066
UPDATE t1 SET f_charbig = '';
5068
# check special-2 success: 1
5069
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5070
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5071
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5072
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5073
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5074
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5075
'just inserted' FROM t0_template
5076
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5077
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5079
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5080
f_charbig = 'updated by trigger'
5081
WHERE f_int1 = new.f_int1;
5083
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5084
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5085
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5087
# check trigger-1 success: 1
5089
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5090
f_int2 = CAST(f_char1 AS SIGNED INT),
5091
f_charbig = 'just inserted'
5092
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5094
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5095
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5096
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5097
'just inserted' FROM t0_template
5098
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5099
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5101
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5102
f_charbig = 'updated by trigger'
5103
WHERE f_int1 = new.f_int1;
5105
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5106
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5107
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5109
# check trigger-2 success: 1
5111
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5112
f_int2 = CAST(f_char1 AS SIGNED INT),
5113
f_charbig = 'just inserted'
5114
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5116
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5117
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5118
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5119
'just inserted' FROM t0_template
5120
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5121
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5123
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5124
f_charbig = 'updated by trigger'
5125
WHERE f_int1 = new.f_int1;
5127
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5128
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5130
# check trigger-3 success: 1
5132
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5133
f_int2 = CAST(f_char1 AS SIGNED INT),
5134
f_charbig = 'just inserted'
5135
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5137
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5138
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5139
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5140
'just inserted' FROM t0_template
5141
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5142
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5144
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5145
f_charbig = 'updated by trigger'
5146
WHERE f_int1 = - old.f_int1;
5148
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5149
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5151
# check trigger-4 success: 1
5153
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5154
f_int2 = CAST(f_char1 AS SIGNED INT),
5155
f_charbig = 'just inserted'
5156
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5158
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5159
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5160
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5161
'just inserted' FROM t0_template
5162
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5163
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5165
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5166
f_charbig = 'updated by trigger'
5167
WHERE f_int1 = new.f_int1;
5169
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5170
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5172
# check trigger-5 success: 1
5174
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5175
f_int2 = CAST(f_char1 AS SIGNED INT),
5176
f_charbig = 'just inserted'
5177
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5179
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5180
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5181
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5182
'just inserted' FROM t0_template
5183
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5184
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5186
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5187
f_charbig = 'updated by trigger'
5188
WHERE f_int1 = - old.f_int1;
5190
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5191
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5193
# check trigger-6 success: 1
5195
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5196
f_int2 = CAST(f_char1 AS SIGNED INT),
5197
f_charbig = 'just inserted'
5198
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5200
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5201
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5202
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5203
'just inserted' FROM t0_template
5204
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5205
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5207
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5208
f_charbig = 'updated by trigger'
5209
WHERE f_int1 = - old.f_int1;
5212
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5214
# check trigger-7 success: 1
5216
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5217
f_int2 = CAST(f_char1 AS SIGNED INT),
5218
f_charbig = 'just inserted'
5219
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5221
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5222
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5223
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5224
'just inserted' FROM t0_template
5225
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5226
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5228
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5229
f_charbig = 'updated by trigger'
5230
WHERE f_int1 = - old.f_int1;
5233
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5235
# check trigger-8 success: 1
5237
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5238
f_int2 = CAST(f_char1 AS SIGNED INT),
5239
f_charbig = 'just inserted'
5240
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5242
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5244
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5245
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5247
SET new.f_int1 = old.f_int1 + @max_row,
5248
new.f_int2 = old.f_int2 - @max_row,
5249
new.f_charbig = '####updated per update trigger####';
5252
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5253
f_charbig = '####updated per update statement itself####';
5255
# check trigger-9 success: 1
5257
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5258
f_int2 = CAST(f_char1 AS SIGNED INT),
5259
f_charbig = CONCAT('===',f_char1,'===');
5260
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5262
SET new.f_int1 = new.f_int1 + @max_row,
5263
new.f_int2 = new.f_int2 - @max_row,
5264
new.f_charbig = '####updated per update trigger####';
5267
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5268
f_charbig = '####updated per update statement itself####';
5270
# check trigger-10 success: 1
5272
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5273
f_int2 = CAST(f_char1 AS SIGNED INT),
5274
f_charbig = CONCAT('===',f_char1,'===');
5275
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5277
SET new.f_int1 = @my_max1 + @counter,
5278
new.f_int2 = @my_min2 - @counter,
5279
new.f_charbig = '####updated per insert trigger####';
5280
SET @counter = @counter + 1;
5283
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5284
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5285
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5286
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5287
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5291
# check trigger-11 success: 1
5293
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5294
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5295
AND f_charbig = '####updated per insert trigger####';
5296
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5298
SET new.f_int1 = @my_max1 + @counter,
5299
new.f_int2 = @my_min2 - @counter,
5300
new.f_charbig = '####updated per insert trigger####';
5301
SET @counter = @counter + 1;
5304
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5305
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5306
SELECT CAST(f_int1 AS CHAR),
5307
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5308
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5312
# check trigger-12 success: 1
5314
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5315
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5316
AND f_charbig = '####updated per insert trigger####';
5318
Table Op Msg_type Msg_text
5319
test.t1 analyze note The storage engine for the table doesn't support analyze
5320
CHECK TABLE t1 EXTENDED;
5321
Table Op Msg_type Msg_text
5322
test.t1 check note The storage engine for the table doesn't support check
5323
CHECKSUM TABLE t1 EXTENDED;
5325
test.t1 <some_value>
5327
Table Op Msg_type Msg_text
5328
test.t1 optimize note The storage engine for the table doesn't support optimize
5329
# check layout success: 1
5330
REPAIR TABLE t1 EXTENDED;
5331
Table Op Msg_type Msg_text
5332
test.t1 repair note The storage engine for the table doesn't support repair
5333
# check layout success: 1
5336
# check TRUNCATE success: 1
5337
# check layout success: 1
5338
# End usability test (inc/partition_check.inc)
5345
f_charbig VARCHAR(1000)
5346
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
5348
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
5349
(PARTITION parta VALUES LESS THAN (0),
5350
PARTITION partb VALUES LESS THAN (5),
5351
PARTITION partc VALUES LESS THAN (10),
5352
PARTITION partd VALUES LESS THAN (2147483646));
5353
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5354
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5355
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5356
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
5357
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5358
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5359
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5360
# Start usability test (inc/partition_check.inc)
5362
SHOW CREATE TABLE t1;
5364
t1 CREATE TABLE `t1` (
5365
`f_int1` int(11) NOT NULL DEFAULT '0',
5366
`f_int2` int(11) NOT NULL DEFAULT '0',
5367
`f_char1` char(20) DEFAULT NULL,
5368
`f_char2` char(20) DEFAULT NULL,
5369
`f_charbig` varchar(1000) DEFAULT NULL
5370
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
5372
# check prerequisites-1 success: 1
5373
# check COUNT(*) success: 1
5374
# check MIN/MAX(f_int1) success: 1
5375
# check MIN/MAX(f_int2) success: 1
5376
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5377
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5378
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5379
WHERE f_int1 IN (2,3);
5380
# check prerequisites-3 success: 1
5381
DELETE FROM t1 WHERE f_charbig = 'delete me';
5382
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5383
# check read via f_int1 success: 1
5384
# check read via f_int2 success: 1
5386
# check multiple-1 success: 1
5387
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5389
# check multiple-2 success: 1
5390
INSERT INTO t1 SELECT * FROM t0_template
5391
WHERE MOD(f_int1,3) = 0;
5393
# check multiple-3 success: 1
5394
UPDATE t1 SET f_int1 = f_int1 + @max_row
5395
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5396
AND @max_row_div2 + @max_row_div4;
5398
# check multiple-4 success: 1
5400
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5401
AND @max_row_div2 + @max_row_div4 + @max_row;
5403
# check multiple-5 success: 1
5404
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5406
SET f_int1 = @cur_value , f_int2 = @cur_value,
5407
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5408
f_charbig = '#SINGLE#';
5410
# check single-1 success: 1
5411
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5413
SET f_int1 = @cur_value , f_int2 = @cur_value,
5414
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5415
f_charbig = '#SINGLE#';
5417
# check single-2 success: 1
5418
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5419
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5420
UPDATE t1 SET f_int1 = @cur_value2
5421
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5423
# check single-3 success: 1
5424
SET @cur_value1= -1;
5425
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5426
UPDATE t1 SET f_int1 = @cur_value1
5427
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5429
# check single-4 success: 1
5430
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5431
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5433
# check single-5 success: 1
5434
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5436
# check single-6 success: 1
5437
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5439
# check single-7 success: 1
5440
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
5441
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5442
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5443
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5444
f_charbig = '#NULL#';
5446
SET f_int1 = NULL , f_int2 = -@max_row,
5447
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5448
f_charbig = '#NULL#';
5449
ERROR 23000: Column 'f_int1' cannot be null
5450
# check null success: 1
5452
WHERE f_int1 = 0 AND f_int2 = 0
5453
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5454
AND f_charbig = '#NULL#';
5456
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5457
SELECT f_int1, f_int1, '', '', 'was inserted'
5458
FROM t0_template source_tab
5459
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5461
# check transactions-1 success: 1
5464
# check transactions-2 success: 1
5467
# check transactions-3 success: 1
5468
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5472
# check transactions-4 success: 1
5473
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5474
SELECT f_int1, f_int1, '', '', 'was inserted'
5475
FROM t0_template source_tab
5476
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5478
# check transactions-5 success: 1
5481
# check transactions-6 success: 1
5482
# INFO: Storage engine used for t1 seems to be transactional.
5485
# check transactions-7 success: 1
5486
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5488
SET @@session.sql_mode = 'traditional';
5489
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5490
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5491
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5492
'', '', 'was inserted' FROM t0_template
5493
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5494
ERROR 22012: Division by 0
5497
# check transactions-8 success: 1
5498
# INFO: Storage engine used for t1 seems to be able to revert
5499
# changes made by the failing statement.
5500
SET @@session.sql_mode = '';
5502
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5504
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5506
# check special-1 success: 1
5507
UPDATE t1 SET f_charbig = '';
5509
# check special-2 success: 1
5510
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5511
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5512
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5513
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5514
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5515
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5516
'just inserted' FROM t0_template
5517
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5518
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5520
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5521
f_charbig = 'updated by trigger'
5522
WHERE f_int1 = new.f_int1;
5524
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5525
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5526
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5528
# check trigger-1 success: 1
5530
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5531
f_int2 = CAST(f_char1 AS SIGNED INT),
5532
f_charbig = 'just inserted'
5533
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5535
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5536
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5537
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5538
'just inserted' FROM t0_template
5539
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5540
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5542
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5543
f_charbig = 'updated by trigger'
5544
WHERE f_int1 = new.f_int1;
5546
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5547
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5548
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5550
# check trigger-2 success: 1
5552
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5553
f_int2 = CAST(f_char1 AS SIGNED INT),
5554
f_charbig = 'just inserted'
5555
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5557
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5558
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5559
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5560
'just inserted' FROM t0_template
5561
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5562
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5564
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5565
f_charbig = 'updated by trigger'
5566
WHERE f_int1 = new.f_int1;
5568
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5569
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5571
# check trigger-3 success: 1
5573
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5574
f_int2 = CAST(f_char1 AS SIGNED INT),
5575
f_charbig = 'just inserted'
5576
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5578
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5579
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5580
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5581
'just inserted' FROM t0_template
5582
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5583
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5585
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5586
f_charbig = 'updated by trigger'
5587
WHERE f_int1 = - old.f_int1;
5589
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5590
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5592
# check trigger-4 success: 1
5594
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5595
f_int2 = CAST(f_char1 AS SIGNED INT),
5596
f_charbig = 'just inserted'
5597
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5599
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5600
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5601
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5602
'just inserted' FROM t0_template
5603
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5604
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5606
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5607
f_charbig = 'updated by trigger'
5608
WHERE f_int1 = new.f_int1;
5610
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5611
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5613
# check trigger-5 success: 1
5615
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5616
f_int2 = CAST(f_char1 AS SIGNED INT),
5617
f_charbig = 'just inserted'
5618
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5620
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5621
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5622
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5623
'just inserted' FROM t0_template
5624
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5625
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5627
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5628
f_charbig = 'updated by trigger'
5629
WHERE f_int1 = - old.f_int1;
5631
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5632
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5634
# check trigger-6 success: 1
5636
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5637
f_int2 = CAST(f_char1 AS SIGNED INT),
5638
f_charbig = 'just inserted'
5639
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5641
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5642
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5643
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5644
'just inserted' FROM t0_template
5645
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5646
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5648
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5649
f_charbig = 'updated by trigger'
5650
WHERE f_int1 = - old.f_int1;
5653
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5655
# check trigger-7 success: 1
5657
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5658
f_int2 = CAST(f_char1 AS SIGNED INT),
5659
f_charbig = 'just inserted'
5660
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5662
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5663
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5664
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5665
'just inserted' FROM t0_template
5666
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5667
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5669
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5670
f_charbig = 'updated by trigger'
5671
WHERE f_int1 = - old.f_int1;
5674
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5676
# check trigger-8 success: 1
5678
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5679
f_int2 = CAST(f_char1 AS SIGNED INT),
5680
f_charbig = 'just inserted'
5681
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5683
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5685
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5686
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5688
SET new.f_int1 = old.f_int1 + @max_row,
5689
new.f_int2 = old.f_int2 - @max_row,
5690
new.f_charbig = '####updated per update trigger####';
5693
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5694
f_charbig = '####updated per update statement itself####';
5696
# check trigger-9 success: 1
5698
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5699
f_int2 = CAST(f_char1 AS SIGNED INT),
5700
f_charbig = CONCAT('===',f_char1,'===');
5701
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5703
SET new.f_int1 = new.f_int1 + @max_row,
5704
new.f_int2 = new.f_int2 - @max_row,
5705
new.f_charbig = '####updated per update trigger####';
5708
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5709
f_charbig = '####updated per update statement itself####';
5711
# check trigger-10 success: 1
5713
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5714
f_int2 = CAST(f_char1 AS SIGNED INT),
5715
f_charbig = CONCAT('===',f_char1,'===');
5716
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5718
SET new.f_int1 = @my_max1 + @counter,
5719
new.f_int2 = @my_min2 - @counter,
5720
new.f_charbig = '####updated per insert trigger####';
5721
SET @counter = @counter + 1;
5724
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5725
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5726
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5727
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5728
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5732
# check trigger-11 success: 1
5734
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5735
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5736
AND f_charbig = '####updated per insert trigger####';
5737
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5739
SET new.f_int1 = @my_max1 + @counter,
5740
new.f_int2 = @my_min2 - @counter,
5741
new.f_charbig = '####updated per insert trigger####';
5742
SET @counter = @counter + 1;
5745
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5746
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5747
SELECT CAST(f_int1 AS CHAR),
5748
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5749
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5753
# check trigger-12 success: 1
5755
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5756
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5757
AND f_charbig = '####updated per insert trigger####';
5759
Table Op Msg_type Msg_text
5760
test.t1 analyze note The storage engine for the table doesn't support analyze
5761
CHECK TABLE t1 EXTENDED;
5762
Table Op Msg_type Msg_text
5763
test.t1 check note The storage engine for the table doesn't support check
5764
CHECKSUM TABLE t1 EXTENDED;
5766
test.t1 <some_value>
5768
Table Op Msg_type Msg_text
5769
test.t1 optimize note The storage engine for the table doesn't support optimize
5770
# check layout success: 1
5771
REPAIR TABLE t1 EXTENDED;
5772
Table Op Msg_type Msg_text
5773
test.t1 repair note The storage engine for the table doesn't support repair
5774
# check layout success: 1
5777
# check TRUNCATE success: 1
5778
# check layout success: 1
5779
# End usability test (inc/partition_check.inc)
5786
f_charbig VARCHAR(1000)
5787
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
5789
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
5790
(PARTITION part1 VALUES LESS THAN (0)
5791
(SUBPARTITION subpart11, SUBPARTITION subpart12),
5792
PARTITION part2 VALUES LESS THAN (5)
5793
(SUBPARTITION subpart21, SUBPARTITION subpart22),
5794
PARTITION part3 VALUES LESS THAN (10)
5795
(SUBPARTITION subpart31, SUBPARTITION subpart32),
5796
PARTITION part4 VALUES LESS THAN (2147483646)
5797
(SUBPARTITION subpart41, SUBPARTITION subpart42));
5798
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5799
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5800
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5801
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
5802
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5803
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5804
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5805
# Start usability test (inc/partition_check.inc)
5807
SHOW CREATE TABLE t1;
5809
t1 CREATE TABLE `t1` (
5810
`f_int1` int(11) NOT NULL DEFAULT '0',
5811
`f_int2` int(11) NOT NULL DEFAULT '0',
5812
`f_char1` char(20) DEFAULT NULL,
5813
`f_char2` char(20) DEFAULT NULL,
5814
`f_charbig` varchar(1000) DEFAULT NULL
5815
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
5817
# check prerequisites-1 success: 1
5818
# check COUNT(*) success: 1
5819
# check MIN/MAX(f_int1) success: 1
5820
# check MIN/MAX(f_int2) success: 1
5821
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5822
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5823
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5824
WHERE f_int1 IN (2,3);
5825
# check prerequisites-3 success: 1
5826
DELETE FROM t1 WHERE f_charbig = 'delete me';
5827
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5828
# check read via f_int1 success: 1
5829
# check read via f_int2 success: 1
5831
# check multiple-1 success: 1
5832
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5834
# check multiple-2 success: 1
5835
INSERT INTO t1 SELECT * FROM t0_template
5836
WHERE MOD(f_int1,3) = 0;
5838
# check multiple-3 success: 1
5839
UPDATE t1 SET f_int1 = f_int1 + @max_row
5840
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5841
AND @max_row_div2 + @max_row_div4;
5843
# check multiple-4 success: 1
5845
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5846
AND @max_row_div2 + @max_row_div4 + @max_row;
5848
# check multiple-5 success: 1
5849
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5851
SET f_int1 = @cur_value , f_int2 = @cur_value,
5852
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5853
f_charbig = '#SINGLE#';
5855
# check single-1 success: 1
5856
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5858
SET f_int1 = @cur_value , f_int2 = @cur_value,
5859
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5860
f_charbig = '#SINGLE#';
5862
# check single-2 success: 1
5863
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5864
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5865
UPDATE t1 SET f_int1 = @cur_value2
5866
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5868
# check single-3 success: 1
5869
SET @cur_value1= -1;
5870
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5871
UPDATE t1 SET f_int1 = @cur_value1
5872
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5874
# check single-4 success: 1
5875
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5876
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5878
# check single-5 success: 1
5879
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5881
# check single-6 success: 1
5882
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5883
ERROR HY000: Table has no partition for value 2147483647
5884
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5885
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5886
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5887
f_charbig = '#NULL#';
5889
SET f_int1 = NULL , f_int2 = -@max_row,
5890
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5891
f_charbig = '#NULL#';
5892
ERROR 23000: Column 'f_int1' cannot be null
5893
# check null success: 1
5895
WHERE f_int1 = 0 AND f_int2 = 0
5896
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5897
AND f_charbig = '#NULL#';
5899
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5900
SELECT f_int1, f_int1, '', '', 'was inserted'
5901
FROM t0_template source_tab
5902
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5904
# check transactions-1 success: 1
5907
# check transactions-2 success: 1
5910
# check transactions-3 success: 1
5911
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5915
# check transactions-4 success: 1
5916
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5917
SELECT f_int1, f_int1, '', '', 'was inserted'
5918
FROM t0_template source_tab
5919
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5921
# check transactions-5 success: 1
5924
# check transactions-6 success: 1
5925
# INFO: Storage engine used for t1 seems to be transactional.
5928
# check transactions-7 success: 1
5929
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5931
SET @@session.sql_mode = 'traditional';
5932
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5933
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5934
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5935
'', '', 'was inserted' FROM t0_template
5936
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5937
ERROR 22012: Division by 0
5940
# check transactions-8 success: 1
5941
# INFO: Storage engine used for t1 seems to be able to revert
5942
# changes made by the failing statement.
5943
SET @@session.sql_mode = '';
5945
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5947
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5949
# check special-1 success: 1
5950
UPDATE t1 SET f_charbig = '';
5952
# check special-2 success: 1
5953
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5954
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5955
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5956
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5957
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5958
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5959
'just inserted' FROM t0_template
5960
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5961
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5963
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5964
f_charbig = 'updated by trigger'
5965
WHERE f_int1 = new.f_int1;
5967
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5968
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5969
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5971
# check trigger-1 success: 1
5973
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5974
f_int2 = CAST(f_char1 AS SIGNED INT),
5975
f_charbig = 'just inserted'
5976
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5978
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5979
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5980
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5981
'just inserted' FROM t0_template
5982
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5983
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5985
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5986
f_charbig = 'updated by trigger'
5987
WHERE f_int1 = new.f_int1;
5989
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5990
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5991
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5993
# check trigger-2 success: 1
5995
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5996
f_int2 = CAST(f_char1 AS SIGNED INT),
5997
f_charbig = 'just inserted'
5998
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6000
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6001
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6002
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6003
'just inserted' FROM t0_template
6004
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6005
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6007
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6008
f_charbig = 'updated by trigger'
6009
WHERE f_int1 = new.f_int1;
6011
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6012
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6014
# check trigger-3 success: 1
6016
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6017
f_int2 = CAST(f_char1 AS SIGNED INT),
6018
f_charbig = 'just inserted'
6019
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6021
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6022
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6023
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6024
'just inserted' FROM t0_template
6025
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6026
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6028
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6029
f_charbig = 'updated by trigger'
6030
WHERE f_int1 = - old.f_int1;
6032
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6033
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6035
# check trigger-4 success: 1
6037
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6038
f_int2 = CAST(f_char1 AS SIGNED INT),
6039
f_charbig = 'just inserted'
6040
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6042
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6043
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6044
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6045
'just inserted' FROM t0_template
6046
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6047
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6049
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6050
f_charbig = 'updated by trigger'
6051
WHERE f_int1 = new.f_int1;
6053
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6054
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6056
# check trigger-5 success: 1
6058
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6059
f_int2 = CAST(f_char1 AS SIGNED INT),
6060
f_charbig = 'just inserted'
6061
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6063
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6064
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6065
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6066
'just inserted' FROM t0_template
6067
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6068
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6070
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6071
f_charbig = 'updated by trigger'
6072
WHERE f_int1 = - old.f_int1;
6074
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6075
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6077
# check trigger-6 success: 1
6079
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6080
f_int2 = CAST(f_char1 AS SIGNED INT),
6081
f_charbig = 'just inserted'
6082
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6084
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6085
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6086
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6087
'just inserted' FROM t0_template
6088
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6089
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6091
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6092
f_charbig = 'updated by trigger'
6093
WHERE f_int1 = - old.f_int1;
6096
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6098
# check trigger-7 success: 1
6100
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6101
f_int2 = CAST(f_char1 AS SIGNED INT),
6102
f_charbig = 'just inserted'
6103
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6105
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6106
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6107
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6108
'just inserted' FROM t0_template
6109
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6110
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6112
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6113
f_charbig = 'updated by trigger'
6114
WHERE f_int1 = - old.f_int1;
6117
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6119
# check trigger-8 success: 1
6121
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6122
f_int2 = CAST(f_char1 AS SIGNED INT),
6123
f_charbig = 'just inserted'
6124
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6126
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6128
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6129
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6131
SET new.f_int1 = old.f_int1 + @max_row,
6132
new.f_int2 = old.f_int2 - @max_row,
6133
new.f_charbig = '####updated per update trigger####';
6136
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6137
f_charbig = '####updated per update statement itself####';
6139
# check trigger-9 success: 1
6141
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6142
f_int2 = CAST(f_char1 AS SIGNED INT),
6143
f_charbig = CONCAT('===',f_char1,'===');
6144
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6146
SET new.f_int1 = new.f_int1 + @max_row,
6147
new.f_int2 = new.f_int2 - @max_row,
6148
new.f_charbig = '####updated per update trigger####';
6151
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6152
f_charbig = '####updated per update statement itself####';
6154
# check trigger-10 success: 1
6156
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6157
f_int2 = CAST(f_char1 AS SIGNED INT),
6158
f_charbig = CONCAT('===',f_char1,'===');
6159
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6161
SET new.f_int1 = @my_max1 + @counter,
6162
new.f_int2 = @my_min2 - @counter,
6163
new.f_charbig = '####updated per insert trigger####';
6164
SET @counter = @counter + 1;
6167
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6168
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6169
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6170
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6175
# check trigger-11 success: 1
6177
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6178
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6179
AND f_charbig = '####updated per insert trigger####';
6180
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6182
SET new.f_int1 = @my_max1 + @counter,
6183
new.f_int2 = @my_min2 - @counter,
6184
new.f_charbig = '####updated per insert trigger####';
6185
SET @counter = @counter + 1;
6188
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6189
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6190
SELECT CAST(f_int1 AS CHAR),
6191
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6192
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6196
# check trigger-12 success: 1
6198
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6199
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6200
AND f_charbig = '####updated per insert trigger####';
6202
Table Op Msg_type Msg_text
6203
test.t1 analyze note The storage engine for the table doesn't support analyze
6204
CHECK TABLE t1 EXTENDED;
6205
Table Op Msg_type Msg_text
6206
test.t1 check note The storage engine for the table doesn't support check
6207
CHECKSUM TABLE t1 EXTENDED;
6209
test.t1 <some_value>
6211
Table Op Msg_type Msg_text
6212
test.t1 optimize note The storage engine for the table doesn't support optimize
6213
# check layout success: 1
6214
REPAIR TABLE t1 EXTENDED;
6215
Table Op Msg_type Msg_text
6216
test.t1 repair note The storage engine for the table doesn't support repair
6217
# check layout success: 1
6220
# check TRUNCATE success: 1
6221
# check layout success: 1
6222
# End usability test (inc/partition_check.inc)
6229
f_charbig VARCHAR(1000)
6230
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
6232
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
6233
(PARTITION part1 VALUES IN (0)
6234
(SUBPARTITION sp11, SUBPARTITION sp12),
6235
PARTITION part2 VALUES IN (1)
6236
(SUBPARTITION sp21, SUBPARTITION sp22),
6237
PARTITION part3 VALUES IN (2)
6238
(SUBPARTITION sp31, SUBPARTITION sp32),
6239
PARTITION part4 VALUES IN (NULL)
6240
(SUBPARTITION sp41, SUBPARTITION sp42));
6241
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6242
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6243
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6244
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
6245
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6246
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6247
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6248
# Start usability test (inc/partition_check.inc)
6250
SHOW CREATE TABLE t1;
6252
t1 CREATE TABLE `t1` (
6253
`f_int1` int(11) NOT NULL DEFAULT '0',
6254
`f_int2` int(11) NOT NULL DEFAULT '0',
6255
`f_char1` char(20) DEFAULT NULL,
6256
`f_char2` char(20) DEFAULT NULL,
6257
`f_charbig` varchar(1000) DEFAULT NULL
6258
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
6260
# check prerequisites-1 success: 1
6261
# check COUNT(*) success: 1
6262
# check MIN/MAX(f_int1) success: 1
6263
# check MIN/MAX(f_int2) success: 1
6264
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6265
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6266
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6267
WHERE f_int1 IN (2,3);
6268
# check prerequisites-3 success: 1
6269
DELETE FROM t1 WHERE f_charbig = 'delete me';
6270
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6271
# check read via f_int1 success: 1
6272
# check read via f_int2 success: 1
6274
# check multiple-1 success: 1
6275
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6277
# check multiple-2 success: 1
6278
INSERT INTO t1 SELECT * FROM t0_template
6279
WHERE MOD(f_int1,3) = 0;
6281
# check multiple-3 success: 1
6282
UPDATE t1 SET f_int1 = f_int1 + @max_row
6283
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6284
AND @max_row_div2 + @max_row_div4;
6286
# check multiple-4 success: 1
6288
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6289
AND @max_row_div2 + @max_row_div4 + @max_row;
6291
# check multiple-5 success: 1
6292
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6294
SET f_int1 = @cur_value , f_int2 = @cur_value,
6295
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6296
f_charbig = '#SINGLE#';
6298
# check single-1 success: 1
6299
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6301
SET f_int1 = @cur_value , f_int2 = @cur_value,
6302
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6303
f_charbig = '#SINGLE#';
6305
# check single-2 success: 1
6306
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6307
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6308
UPDATE t1 SET f_int1 = @cur_value2
6309
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6311
# check single-3 success: 1
6312
SET @cur_value1= -1;
6313
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6314
UPDATE t1 SET f_int1 = @cur_value1
6315
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6317
# check single-4 success: 1
6318
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6319
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6321
# check single-5 success: 1
6322
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6324
# check single-6 success: 1
6325
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6327
# check single-7 success: 1
6328
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6329
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6330
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6331
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6332
f_charbig = '#NULL#';
6334
SET f_int1 = NULL , f_int2 = -@max_row,
6335
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6336
f_charbig = '#NULL#';
6337
ERROR 23000: Column 'f_int1' cannot be null
6338
# check null success: 1
6340
WHERE f_int1 = 0 AND f_int2 = 0
6341
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6342
AND f_charbig = '#NULL#';
6344
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6345
SELECT f_int1, f_int1, '', '', 'was inserted'
6346
FROM t0_template source_tab
6347
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6349
# check transactions-1 success: 1
6352
# check transactions-2 success: 1
6355
# check transactions-3 success: 1
6356
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6360
# check transactions-4 success: 1
6361
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6362
SELECT f_int1, f_int1, '', '', 'was inserted'
6363
FROM t0_template source_tab
6364
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6366
# check transactions-5 success: 1
6369
# check transactions-6 success: 1
6370
# INFO: Storage engine used for t1 seems to be transactional.
6373
# check transactions-7 success: 1
6374
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6376
SET @@session.sql_mode = 'traditional';
6377
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6378
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6379
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6380
'', '', 'was inserted' FROM t0_template
6381
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6382
ERROR 22012: Division by 0
6385
# check transactions-8 success: 1
6386
# INFO: Storage engine used for t1 seems to be able to revert
6387
# changes made by the failing statement.
6388
SET @@session.sql_mode = '';
6390
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6392
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6394
# check special-1 success: 1
6395
UPDATE t1 SET f_charbig = '';
6397
# check special-2 success: 1
6398
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6399
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6400
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6401
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6402
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6403
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6404
'just inserted' FROM t0_template
6405
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6406
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6408
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6409
f_charbig = 'updated by trigger'
6410
WHERE f_int1 = new.f_int1;
6412
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6413
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6414
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6416
# check trigger-1 success: 1
6418
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6419
f_int2 = CAST(f_char1 AS SIGNED INT),
6420
f_charbig = 'just inserted'
6421
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6423
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6424
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6425
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6426
'just inserted' FROM t0_template
6427
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6428
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6430
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6431
f_charbig = 'updated by trigger'
6432
WHERE f_int1 = new.f_int1;
6434
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6435
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6436
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6438
# check trigger-2 success: 1
6440
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6441
f_int2 = CAST(f_char1 AS SIGNED INT),
6442
f_charbig = 'just inserted'
6443
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6445
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6446
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6447
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6448
'just inserted' FROM t0_template
6449
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6450
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6452
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6453
f_charbig = 'updated by trigger'
6454
WHERE f_int1 = new.f_int1;
6456
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6457
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6459
# check trigger-3 success: 1
6461
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6462
f_int2 = CAST(f_char1 AS SIGNED INT),
6463
f_charbig = 'just inserted'
6464
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6466
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6467
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6468
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6469
'just inserted' FROM t0_template
6470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6471
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6473
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6474
f_charbig = 'updated by trigger'
6475
WHERE f_int1 = - old.f_int1;
6477
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6478
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6480
# check trigger-4 success: 1
6482
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6483
f_int2 = CAST(f_char1 AS SIGNED INT),
6484
f_charbig = 'just inserted'
6485
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6487
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6488
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6489
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6490
'just inserted' FROM t0_template
6491
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6492
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6494
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6495
f_charbig = 'updated by trigger'
6496
WHERE f_int1 = new.f_int1;
6498
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6499
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6501
# check trigger-5 success: 1
6503
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6504
f_int2 = CAST(f_char1 AS SIGNED INT),
6505
f_charbig = 'just inserted'
6506
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6508
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6509
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6510
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6511
'just inserted' FROM t0_template
6512
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6513
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6515
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6516
f_charbig = 'updated by trigger'
6517
WHERE f_int1 = - old.f_int1;
6519
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6520
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6522
# check trigger-6 success: 1
6524
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6525
f_int2 = CAST(f_char1 AS SIGNED INT),
6526
f_charbig = 'just inserted'
6527
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6529
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6530
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6531
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6532
'just inserted' FROM t0_template
6533
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6534
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6536
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6537
f_charbig = 'updated by trigger'
6538
WHERE f_int1 = - old.f_int1;
6541
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6543
# check trigger-7 success: 1
6545
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6546
f_int2 = CAST(f_char1 AS SIGNED INT),
6547
f_charbig = 'just inserted'
6548
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6550
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6551
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6552
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6553
'just inserted' FROM t0_template
6554
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6555
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6557
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6558
f_charbig = 'updated by trigger'
6559
WHERE f_int1 = - old.f_int1;
6562
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6564
# check trigger-8 success: 1
6566
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6567
f_int2 = CAST(f_char1 AS SIGNED INT),
6568
f_charbig = 'just inserted'
6569
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6571
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6573
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6574
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6576
SET new.f_int1 = old.f_int1 + @max_row,
6577
new.f_int2 = old.f_int2 - @max_row,
6578
new.f_charbig = '####updated per update trigger####';
6581
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6582
f_charbig = '####updated per update statement itself####';
6584
# check trigger-9 success: 1
6586
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6587
f_int2 = CAST(f_char1 AS SIGNED INT),
6588
f_charbig = CONCAT('===',f_char1,'===');
6589
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6591
SET new.f_int1 = new.f_int1 + @max_row,
6592
new.f_int2 = new.f_int2 - @max_row,
6593
new.f_charbig = '####updated per update trigger####';
6596
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6597
f_charbig = '####updated per update statement itself####';
6599
# check trigger-10 success: 1
6601
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6602
f_int2 = CAST(f_char1 AS SIGNED INT),
6603
f_charbig = CONCAT('===',f_char1,'===');
6604
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6606
SET new.f_int1 = @my_max1 + @counter,
6607
new.f_int2 = @my_min2 - @counter,
6608
new.f_charbig = '####updated per insert trigger####';
6609
SET @counter = @counter + 1;
6612
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6613
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6614
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6615
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6616
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6620
# check trigger-11 success: 1
6622
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6623
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6624
AND f_charbig = '####updated per insert trigger####';
6625
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6627
SET new.f_int1 = @my_max1 + @counter,
6628
new.f_int2 = @my_min2 - @counter,
6629
new.f_charbig = '####updated per insert trigger####';
6630
SET @counter = @counter + 1;
6633
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6634
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6635
SELECT CAST(f_int1 AS CHAR),
6636
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6637
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6641
# check trigger-12 success: 1
6643
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6644
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6645
AND f_charbig = '####updated per insert trigger####';
6647
Table Op Msg_type Msg_text
6648
test.t1 analyze note The storage engine for the table doesn't support analyze
6649
CHECK TABLE t1 EXTENDED;
6650
Table Op Msg_type Msg_text
6651
test.t1 check note The storage engine for the table doesn't support check
6652
CHECKSUM TABLE t1 EXTENDED;
6654
test.t1 <some_value>
6656
Table Op Msg_type Msg_text
6657
test.t1 optimize note The storage engine for the table doesn't support optimize
6658
# check layout success: 1
6659
REPAIR TABLE t1 EXTENDED;
6660
Table Op Msg_type Msg_text
6661
test.t1 repair note The storage engine for the table doesn't support repair
6662
# check layout success: 1
6665
# check TRUNCATE success: 1
6666
# check layout success: 1
6667
# End usability test (inc/partition_check.inc)
6674
f_charbig VARCHAR(1000)
6675
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
6677
PARTITION BY LIST(ABS(MOD(f_int1,2)))
6678
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
6679
(PARTITION part1 VALUES IN (0),
6680
PARTITION part2 VALUES IN (1),
6681
PARTITION part3 VALUES IN (NULL));
6682
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6683
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6684
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6685
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
6686
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6687
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6688
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6689
# Start usability test (inc/partition_check.inc)
6691
SHOW CREATE TABLE t1;
6693
t1 CREATE TABLE `t1` (
6694
`f_int1` int(11) NOT NULL DEFAULT '0',
6695
`f_int2` int(11) NOT NULL DEFAULT '0',
6696
`f_char1` char(20) DEFAULT NULL,
6697
`f_char2` char(20) DEFAULT NULL,
6698
`f_charbig` varchar(1000) DEFAULT NULL
6699
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
6701
# check prerequisites-1 success: 1
6702
# check COUNT(*) success: 1
6703
# check MIN/MAX(f_int1) success: 1
6704
# check MIN/MAX(f_int2) success: 1
6705
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6706
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6707
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6708
WHERE f_int1 IN (2,3);
6709
# check prerequisites-3 success: 1
6710
DELETE FROM t1 WHERE f_charbig = 'delete me';
6711
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6712
# check read via f_int1 success: 1
6713
# check read via f_int2 success: 1
6715
# check multiple-1 success: 1
6716
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6718
# check multiple-2 success: 1
6719
INSERT INTO t1 SELECT * FROM t0_template
6720
WHERE MOD(f_int1,3) = 0;
6722
# check multiple-3 success: 1
6723
UPDATE t1 SET f_int1 = f_int1 + @max_row
6724
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6725
AND @max_row_div2 + @max_row_div4;
6727
# check multiple-4 success: 1
6729
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6730
AND @max_row_div2 + @max_row_div4 + @max_row;
6732
# check multiple-5 success: 1
6733
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6735
SET f_int1 = @cur_value , f_int2 = @cur_value,
6736
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6737
f_charbig = '#SINGLE#';
6739
# check single-1 success: 1
6740
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6742
SET f_int1 = @cur_value , f_int2 = @cur_value,
6743
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6744
f_charbig = '#SINGLE#';
6746
# check single-2 success: 1
6747
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6748
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6749
UPDATE t1 SET f_int1 = @cur_value2
6750
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6752
# check single-3 success: 1
6753
SET @cur_value1= -1;
6754
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6755
UPDATE t1 SET f_int1 = @cur_value1
6756
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6758
# check single-4 success: 1
6759
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6760
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6762
# check single-5 success: 1
6763
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6765
# check single-6 success: 1
6766
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6768
# check single-7 success: 1
6769
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6770
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6771
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6772
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6773
f_charbig = '#NULL#';
6775
SET f_int1 = NULL , f_int2 = -@max_row,
6776
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6777
f_charbig = '#NULL#';
6778
ERROR 23000: Column 'f_int1' cannot be null
6779
# check null success: 1
6781
WHERE f_int1 = 0 AND f_int2 = 0
6782
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6783
AND f_charbig = '#NULL#';
6785
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6786
SELECT f_int1, f_int1, '', '', 'was inserted'
6787
FROM t0_template source_tab
6788
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6790
# check transactions-1 success: 1
6793
# check transactions-2 success: 1
6796
# check transactions-3 success: 1
6797
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6801
# check transactions-4 success: 1
6802
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6803
SELECT f_int1, f_int1, '', '', 'was inserted'
6804
FROM t0_template source_tab
6805
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6807
# check transactions-5 success: 1
6810
# check transactions-6 success: 1
6811
# INFO: Storage engine used for t1 seems to be transactional.
6814
# check transactions-7 success: 1
6815
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6817
SET @@session.sql_mode = 'traditional';
6818
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6819
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6820
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6821
'', '', 'was inserted' FROM t0_template
6822
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6823
ERROR 22012: Division by 0
6826
# check transactions-8 success: 1
6827
# INFO: Storage engine used for t1 seems to be able to revert
6828
# changes made by the failing statement.
6829
SET @@session.sql_mode = '';
6831
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6833
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6835
# check special-1 success: 1
6836
UPDATE t1 SET f_charbig = '';
6838
# check special-2 success: 1
6839
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6840
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6841
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6842
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6843
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6844
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6845
'just inserted' FROM t0_template
6846
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6847
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6849
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6850
f_charbig = 'updated by trigger'
6851
WHERE f_int1 = new.f_int1;
6853
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6854
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6855
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6857
# check trigger-1 success: 1
6859
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6860
f_int2 = CAST(f_char1 AS SIGNED INT),
6861
f_charbig = 'just inserted'
6862
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6864
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6865
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6866
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6867
'just inserted' FROM t0_template
6868
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6869
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6871
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6872
f_charbig = 'updated by trigger'
6873
WHERE f_int1 = new.f_int1;
6875
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6876
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6877
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6879
# check trigger-2 success: 1
6881
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6882
f_int2 = CAST(f_char1 AS SIGNED INT),
6883
f_charbig = 'just inserted'
6884
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6886
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6887
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6888
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6889
'just inserted' FROM t0_template
6890
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6891
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6893
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6894
f_charbig = 'updated by trigger'
6895
WHERE f_int1 = new.f_int1;
6897
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6898
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6900
# check trigger-3 success: 1
6902
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6903
f_int2 = CAST(f_char1 AS SIGNED INT),
6904
f_charbig = 'just inserted'
6905
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6907
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6908
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6909
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6910
'just inserted' FROM t0_template
6911
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6912
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6914
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6915
f_charbig = 'updated by trigger'
6916
WHERE f_int1 = - old.f_int1;
6918
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6919
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6921
# check trigger-4 success: 1
6923
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6924
f_int2 = CAST(f_char1 AS SIGNED INT),
6925
f_charbig = 'just inserted'
6926
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6928
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6929
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6930
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6931
'just inserted' FROM t0_template
6932
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6933
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6935
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6936
f_charbig = 'updated by trigger'
6937
WHERE f_int1 = new.f_int1;
6939
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6940
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6942
# check trigger-5 success: 1
6944
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6945
f_int2 = CAST(f_char1 AS SIGNED INT),
6946
f_charbig = 'just inserted'
6947
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6949
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6950
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6951
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6952
'just inserted' FROM t0_template
6953
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6954
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6956
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6957
f_charbig = 'updated by trigger'
6958
WHERE f_int1 = - old.f_int1;
6960
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6961
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6963
# check trigger-6 success: 1
6965
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6966
f_int2 = CAST(f_char1 AS SIGNED INT),
6967
f_charbig = 'just inserted'
6968
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6970
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6971
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6972
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6973
'just inserted' FROM t0_template
6974
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6975
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6977
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6978
f_charbig = 'updated by trigger'
6979
WHERE f_int1 = - old.f_int1;
6982
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6984
# check trigger-7 success: 1
6986
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6987
f_int2 = CAST(f_char1 AS SIGNED INT),
6988
f_charbig = 'just inserted'
6989
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6991
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6992
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6993
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6994
'just inserted' FROM t0_template
6995
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6996
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6998
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6999
f_charbig = 'updated by trigger'
7000
WHERE f_int1 = - old.f_int1;
7003
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7005
# check trigger-8 success: 1
7007
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7008
f_int2 = CAST(f_char1 AS SIGNED INT),
7009
f_charbig = 'just inserted'
7010
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7012
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7014
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7015
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7017
SET new.f_int1 = old.f_int1 + @max_row,
7018
new.f_int2 = old.f_int2 - @max_row,
7019
new.f_charbig = '####updated per update trigger####';
7022
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7023
f_charbig = '####updated per update statement itself####';
7025
# check trigger-9 success: 1
7027
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7028
f_int2 = CAST(f_char1 AS SIGNED INT),
7029
f_charbig = CONCAT('===',f_char1,'===');
7030
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7032
SET new.f_int1 = new.f_int1 + @max_row,
7033
new.f_int2 = new.f_int2 - @max_row,
7034
new.f_charbig = '####updated per update trigger####';
7037
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7038
f_charbig = '####updated per update statement itself####';
7040
# check trigger-10 success: 1
7042
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7043
f_int2 = CAST(f_char1 AS SIGNED INT),
7044
f_charbig = CONCAT('===',f_char1,'===');
7045
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7047
SET new.f_int1 = @my_max1 + @counter,
7048
new.f_int2 = @my_min2 - @counter,
7049
new.f_charbig = '####updated per insert trigger####';
7050
SET @counter = @counter + 1;
7053
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7054
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7055
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7056
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7057
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7061
# check trigger-11 success: 1
7063
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7064
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7065
AND f_charbig = '####updated per insert trigger####';
7066
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7068
SET new.f_int1 = @my_max1 + @counter,
7069
new.f_int2 = @my_min2 - @counter,
7070
new.f_charbig = '####updated per insert trigger####';
7071
SET @counter = @counter + 1;
7074
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7075
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7076
SELECT CAST(f_int1 AS CHAR),
7077
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7078
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7082
# check trigger-12 success: 1
7084
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7085
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7086
AND f_charbig = '####updated per insert trigger####';
7088
Table Op Msg_type Msg_text
7089
test.t1 analyze note The storage engine for the table doesn't support analyze
7090
CHECK TABLE t1 EXTENDED;
7091
Table Op Msg_type Msg_text
7092
test.t1 check note The storage engine for the table doesn't support check
7093
CHECKSUM TABLE t1 EXTENDED;
7095
test.t1 <some_value>
7097
Table Op Msg_type Msg_text
7098
test.t1 optimize note The storage engine for the table doesn't support optimize
7099
# check layout success: 1
7100
REPAIR TABLE t1 EXTENDED;
7101
Table Op Msg_type Msg_text
7102
test.t1 repair note The storage engine for the table doesn't support repair
7103
# check layout success: 1
7106
# check TRUNCATE success: 1
7107
# check layout success: 1
7108
# End usability test (inc/partition_check.inc)
7110
DROP TABLE IF EXISTS t1;
7116
f_charbig VARCHAR(1000)
7117
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
7119
PARTITION BY HASH(f_int1) PARTITIONS 2;
7120
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7121
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7122
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7123
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
7124
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7125
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7126
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7127
# Start usability test (inc/partition_check.inc)
7129
SHOW CREATE TABLE t1;
7131
t1 CREATE TABLE `t1` (
7132
`f_int1` int(11) DEFAULT NULL,
7133
`f_int2` int(11) DEFAULT NULL,
7134
`f_char1` char(20) DEFAULT NULL,
7135
`f_char2` char(20) DEFAULT NULL,
7136
`f_charbig` varchar(1000) DEFAULT NULL
7137
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) PARTITIONS 2 */
7139
# check prerequisites-1 success: 1
7140
# check COUNT(*) success: 1
7141
# check MIN/MAX(f_int1) success: 1
7142
# check MIN/MAX(f_int2) success: 1
7143
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7144
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7145
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7146
WHERE f_int1 IN (2,3);
7147
# check prerequisites-3 success: 1
7148
DELETE FROM t1 WHERE f_charbig = 'delete me';
7149
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
7150
# check read via f_int1 success: 1
7151
# check read via f_int2 success: 1
7153
# check multiple-1 success: 1
7154
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7156
# check multiple-2 success: 1
7157
INSERT INTO t1 SELECT * FROM t0_template
7158
WHERE MOD(f_int1,3) = 0;
7160
# check multiple-3 success: 1
7161
UPDATE t1 SET f_int1 = f_int1 + @max_row
7162
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7163
AND @max_row_div2 + @max_row_div4;
7165
# check multiple-4 success: 1
7167
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7168
AND @max_row_div2 + @max_row_div4 + @max_row;
7170
# check multiple-5 success: 1
7171
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7173
SET f_int1 = @cur_value , f_int2 = @cur_value,
7174
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7175
f_charbig = '#SINGLE#';
7177
# check single-1 success: 1
7178
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7180
SET f_int1 = @cur_value , f_int2 = @cur_value,
7181
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7182
f_charbig = '#SINGLE#';
7184
# check single-2 success: 1
7185
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7186
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7187
UPDATE t1 SET f_int1 = @cur_value2
7188
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7190
# check single-3 success: 1
7191
SET @cur_value1= -1;
7192
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7193
UPDATE t1 SET f_int1 = @cur_value1
7194
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7196
# check single-4 success: 1
7197
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7198
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7200
# check single-5 success: 1
7201
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7203
# check single-6 success: 1
7204
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7206
# check single-7 success: 1
7207
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7208
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7209
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7210
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7211
f_charbig = '#NULL#';
7213
SET f_int1 = NULL , f_int2 = -@max_row,
7214
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7215
f_charbig = '#NULL#';
7216
# check null success: 1
7218
# check null-1 success: 1
7219
UPDATE t1 SET f_int1 = -@max_row
7220
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7221
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7223
# check null-2 success: 1
7224
UPDATE t1 SET f_int1 = NULL
7225
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7226
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7228
# check null-3 success: 1
7230
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7231
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7233
# check null-4 success: 1
7235
WHERE f_int1 = 0 AND f_int2 = 0
7236
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7237
AND f_charbig = '#NULL#';
7239
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7240
SELECT f_int1, f_int1, '', '', 'was inserted'
7241
FROM t0_template source_tab
7242
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7244
# check transactions-1 success: 1
7247
# check transactions-2 success: 1
7250
# check transactions-3 success: 1
7251
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7255
# check transactions-4 success: 1
7256
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7257
SELECT f_int1, f_int1, '', '', 'was inserted'
7258
FROM t0_template source_tab
7259
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7261
# check transactions-5 success: 1
7264
# check transactions-6 success: 1
7265
# INFO: Storage engine used for t1 seems to be transactional.
7268
# check transactions-7 success: 1
7269
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7271
SET @@session.sql_mode = 'traditional';
7272
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7273
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7274
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7275
'', '', 'was inserted' FROM t0_template
7276
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7277
ERROR 22012: Division by 0
7280
# check transactions-8 success: 1
7281
# INFO: Storage engine used for t1 seems to be able to revert
7282
# changes made by the failing statement.
7283
SET @@session.sql_mode = '';
7285
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7287
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7289
# check special-1 success: 1
7290
UPDATE t1 SET f_charbig = '';
7292
# check special-2 success: 1
7293
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7294
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7295
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7297
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7298
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7299
'just inserted' FROM t0_template
7300
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7301
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7303
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7304
f_charbig = 'updated by trigger'
7305
WHERE f_int1 = new.f_int1;
7307
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7308
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7309
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7311
# check trigger-1 success: 1
7313
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7314
f_int2 = CAST(f_char1 AS SIGNED INT),
7315
f_charbig = 'just inserted'
7316
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7318
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7319
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7320
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7321
'just inserted' FROM t0_template
7322
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7323
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7325
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7326
f_charbig = 'updated by trigger'
7327
WHERE f_int1 = new.f_int1;
7329
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7330
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7331
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7333
# check trigger-2 success: 1
7335
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7336
f_int2 = CAST(f_char1 AS SIGNED INT),
7337
f_charbig = 'just inserted'
7338
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7340
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7341
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7342
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7343
'just inserted' FROM t0_template
7344
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7345
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7347
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7348
f_charbig = 'updated by trigger'
7349
WHERE f_int1 = new.f_int1;
7351
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7352
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7354
# check trigger-3 success: 1
7356
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7357
f_int2 = CAST(f_char1 AS SIGNED INT),
7358
f_charbig = 'just inserted'
7359
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7361
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7362
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7363
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7364
'just inserted' FROM t0_template
7365
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7366
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7368
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7369
f_charbig = 'updated by trigger'
7370
WHERE f_int1 = - old.f_int1;
7372
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7373
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7375
# check trigger-4 success: 1
7377
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7378
f_int2 = CAST(f_char1 AS SIGNED INT),
7379
f_charbig = 'just inserted'
7380
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7382
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7383
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7384
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7385
'just inserted' FROM t0_template
7386
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7387
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7389
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7390
f_charbig = 'updated by trigger'
7391
WHERE f_int1 = new.f_int1;
7393
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7394
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7396
# check trigger-5 success: 1
7398
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7399
f_int2 = CAST(f_char1 AS SIGNED INT),
7400
f_charbig = 'just inserted'
7401
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7403
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7404
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7405
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7406
'just inserted' FROM t0_template
7407
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7408
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7410
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7411
f_charbig = 'updated by trigger'
7412
WHERE f_int1 = - old.f_int1;
7414
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7415
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7417
# check trigger-6 success: 1
7419
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7420
f_int2 = CAST(f_char1 AS SIGNED INT),
7421
f_charbig = 'just inserted'
7422
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7424
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7425
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7426
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7427
'just inserted' FROM t0_template
7428
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7429
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7431
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7432
f_charbig = 'updated by trigger'
7433
WHERE f_int1 = - old.f_int1;
7436
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7438
# check trigger-7 success: 1
7440
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7441
f_int2 = CAST(f_char1 AS SIGNED INT),
7442
f_charbig = 'just inserted'
7443
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7445
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7446
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7447
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7448
'just inserted' FROM t0_template
7449
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7450
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7452
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7453
f_charbig = 'updated by trigger'
7454
WHERE f_int1 = - old.f_int1;
7457
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7459
# check trigger-8 success: 1
7461
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7462
f_int2 = CAST(f_char1 AS SIGNED INT),
7463
f_charbig = 'just inserted'
7464
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7466
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7468
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7469
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7471
SET new.f_int1 = old.f_int1 + @max_row,
7472
new.f_int2 = old.f_int2 - @max_row,
7473
new.f_charbig = '####updated per update trigger####';
7476
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7477
f_charbig = '####updated per update statement itself####';
7479
# check trigger-9 success: 1
7481
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7482
f_int2 = CAST(f_char1 AS SIGNED INT),
7483
f_charbig = CONCAT('===',f_char1,'===');
7484
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7486
SET new.f_int1 = new.f_int1 + @max_row,
7487
new.f_int2 = new.f_int2 - @max_row,
7488
new.f_charbig = '####updated per update trigger####';
7491
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7492
f_charbig = '####updated per update statement itself####';
7494
# check trigger-10 success: 1
7496
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7497
f_int2 = CAST(f_char1 AS SIGNED INT),
7498
f_charbig = CONCAT('===',f_char1,'===');
7499
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7501
SET new.f_int1 = @my_max1 + @counter,
7502
new.f_int2 = @my_min2 - @counter,
7503
new.f_charbig = '####updated per insert trigger####';
7504
SET @counter = @counter + 1;
7507
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7508
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7509
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7510
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7511
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7515
# check trigger-11 success: 1
7517
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7518
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7519
AND f_charbig = '####updated per insert trigger####';
7520
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7522
SET new.f_int1 = @my_max1 + @counter,
7523
new.f_int2 = @my_min2 - @counter,
7524
new.f_charbig = '####updated per insert trigger####';
7525
SET @counter = @counter + 1;
7528
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7529
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7530
SELECT CAST(f_int1 AS CHAR),
7531
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7532
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7536
# check trigger-12 success: 1
7538
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7539
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7540
AND f_charbig = '####updated per insert trigger####';
7542
Table Op Msg_type Msg_text
7543
test.t1 analyze note The storage engine for the table doesn't support analyze
7544
CHECK TABLE t1 EXTENDED;
7545
Table Op Msg_type Msg_text
7546
test.t1 check note The storage engine for the table doesn't support check
7547
CHECKSUM TABLE t1 EXTENDED;
7549
test.t1 <some_value>
7551
Table Op Msg_type Msg_text
7552
test.t1 optimize note The storage engine for the table doesn't support optimize
7553
# check layout success: 1
7554
REPAIR TABLE t1 EXTENDED;
7555
Table Op Msg_type Msg_text
7556
test.t1 repair note The storage engine for the table doesn't support repair
7557
# check layout success: 1
7560
# check TRUNCATE success: 1
7561
# check layout success: 1
7562
# End usability test (inc/partition_check.inc)
7569
f_charbig VARCHAR(1000)
7570
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
7572
PARTITION BY KEY(f_int1) PARTITIONS 5;
7573
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7574
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7575
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7576
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
7577
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7578
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7579
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7580
# Start usability test (inc/partition_check.inc)
7582
SHOW CREATE TABLE t1;
7584
t1 CREATE TABLE `t1` (
7585
`f_int1` int(11) DEFAULT NULL,
7586
`f_int2` int(11) DEFAULT NULL,
7587
`f_char1` char(20) DEFAULT NULL,
7588
`f_char2` char(20) DEFAULT NULL,
7589
`f_charbig` varchar(1000) DEFAULT NULL
7590
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) PARTITIONS 5 */
7592
# check prerequisites-1 success: 1
7593
# check COUNT(*) success: 1
7594
# check MIN/MAX(f_int1) success: 1
7595
# check MIN/MAX(f_int2) success: 1
7596
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7597
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7598
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7599
WHERE f_int1 IN (2,3);
7600
# check prerequisites-3 success: 1
7601
DELETE FROM t1 WHERE f_charbig = 'delete me';
7602
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
7603
# check read via f_int1 success: 1
7604
# check read via f_int2 success: 1
7606
# check multiple-1 success: 1
7607
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7609
# check multiple-2 success: 1
7610
INSERT INTO t1 SELECT * FROM t0_template
7611
WHERE MOD(f_int1,3) = 0;
7613
# check multiple-3 success: 1
7614
UPDATE t1 SET f_int1 = f_int1 + @max_row
7615
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7616
AND @max_row_div2 + @max_row_div4;
7618
# check multiple-4 success: 1
7620
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7621
AND @max_row_div2 + @max_row_div4 + @max_row;
7623
# check multiple-5 success: 1
7624
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7626
SET f_int1 = @cur_value , f_int2 = @cur_value,
7627
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7628
f_charbig = '#SINGLE#';
7630
# check single-1 success: 1
7631
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7633
SET f_int1 = @cur_value , f_int2 = @cur_value,
7634
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7635
f_charbig = '#SINGLE#';
7637
# check single-2 success: 1
7638
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7639
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7640
UPDATE t1 SET f_int1 = @cur_value2
7641
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7643
# check single-3 success: 1
7644
SET @cur_value1= -1;
7645
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7646
UPDATE t1 SET f_int1 = @cur_value1
7647
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7649
# check single-4 success: 1
7650
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7651
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7653
# check single-5 success: 1
7654
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7656
# check single-6 success: 1
7657
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7659
# check single-7 success: 1
7660
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7661
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7662
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7663
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7664
f_charbig = '#NULL#';
7666
SET f_int1 = NULL , f_int2 = -@max_row,
7667
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7668
f_charbig = '#NULL#';
7669
# check null success: 1
7671
# check null-1 success: 1
7672
UPDATE t1 SET f_int1 = -@max_row
7673
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7674
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7676
# check null-2 success: 1
7677
UPDATE t1 SET f_int1 = NULL
7678
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7679
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7681
# check null-3 success: 1
7683
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7684
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7686
# check null-4 success: 1
7688
WHERE f_int1 = 0 AND f_int2 = 0
7689
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7690
AND f_charbig = '#NULL#';
7692
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7693
SELECT f_int1, f_int1, '', '', 'was inserted'
7694
FROM t0_template source_tab
7695
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7697
# check transactions-1 success: 1
7700
# check transactions-2 success: 1
7703
# check transactions-3 success: 1
7704
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7708
# check transactions-4 success: 1
7709
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7710
SELECT f_int1, f_int1, '', '', 'was inserted'
7711
FROM t0_template source_tab
7712
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7714
# check transactions-5 success: 1
7717
# check transactions-6 success: 1
7718
# INFO: Storage engine used for t1 seems to be transactional.
7721
# check transactions-7 success: 1
7722
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7724
SET @@session.sql_mode = 'traditional';
7725
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7726
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7727
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7728
'', '', 'was inserted' FROM t0_template
7729
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7730
ERROR 22012: Division by 0
7733
# check transactions-8 success: 1
7734
# INFO: Storage engine used for t1 seems to be able to revert
7735
# changes made by the failing statement.
7736
SET @@session.sql_mode = '';
7738
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7740
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7742
# check special-1 success: 1
7743
UPDATE t1 SET f_charbig = '';
7745
# check special-2 success: 1
7746
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7747
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7748
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7749
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7750
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7751
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7752
'just inserted' FROM t0_template
7753
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7754
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7756
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7757
f_charbig = 'updated by trigger'
7758
WHERE f_int1 = new.f_int1;
7760
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7761
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7762
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7764
# check trigger-1 success: 1
7766
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7767
f_int2 = CAST(f_char1 AS SIGNED INT),
7768
f_charbig = 'just inserted'
7769
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7771
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7772
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7773
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7774
'just inserted' FROM t0_template
7775
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7776
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7778
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7779
f_charbig = 'updated by trigger'
7780
WHERE f_int1 = new.f_int1;
7782
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7783
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7784
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7786
# check trigger-2 success: 1
7788
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7789
f_int2 = CAST(f_char1 AS SIGNED INT),
7790
f_charbig = 'just inserted'
7791
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7793
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7794
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7795
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7796
'just inserted' FROM t0_template
7797
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7798
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7800
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7801
f_charbig = 'updated by trigger'
7802
WHERE f_int1 = new.f_int1;
7804
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7805
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7807
# check trigger-3 success: 1
7809
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7810
f_int2 = CAST(f_char1 AS SIGNED INT),
7811
f_charbig = 'just inserted'
7812
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7814
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7815
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7816
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7817
'just inserted' FROM t0_template
7818
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7819
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7821
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7822
f_charbig = 'updated by trigger'
7823
WHERE f_int1 = - old.f_int1;
7825
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7826
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7828
# check trigger-4 success: 1
7830
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7831
f_int2 = CAST(f_char1 AS SIGNED INT),
7832
f_charbig = 'just inserted'
7833
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7835
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7836
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7837
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7838
'just inserted' FROM t0_template
7839
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7840
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7842
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7843
f_charbig = 'updated by trigger'
7844
WHERE f_int1 = new.f_int1;
7846
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7847
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7849
# check trigger-5 success: 1
7851
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7852
f_int2 = CAST(f_char1 AS SIGNED INT),
7853
f_charbig = 'just inserted'
7854
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7856
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7857
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7858
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7859
'just inserted' FROM t0_template
7860
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7861
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7863
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7864
f_charbig = 'updated by trigger'
7865
WHERE f_int1 = - old.f_int1;
7867
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7868
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7870
# check trigger-6 success: 1
7872
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7873
f_int2 = CAST(f_char1 AS SIGNED INT),
7874
f_charbig = 'just inserted'
7875
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7877
WHERE ABS(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 DELETE 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 = - old.f_int1;
7889
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7891
# check trigger-7 success: 1
7893
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7894
f_int2 = CAST(f_char1 AS SIGNED INT),
7895
f_charbig = 'just inserted'
7896
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7898
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7899
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7900
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7901
'just inserted' FROM t0_template
7902
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7903
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7905
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7906
f_charbig = 'updated by trigger'
7907
WHERE f_int1 = - old.f_int1;
7910
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7912
# check trigger-8 success: 1
7914
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7915
f_int2 = CAST(f_char1 AS SIGNED INT),
7916
f_charbig = 'just inserted'
7917
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7919
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7921
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7922
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7924
SET new.f_int1 = old.f_int1 + @max_row,
7925
new.f_int2 = old.f_int2 - @max_row,
7926
new.f_charbig = '####updated per update trigger####';
7929
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7930
f_charbig = '####updated per update statement itself####';
7932
# check trigger-9 success: 1
7934
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7935
f_int2 = CAST(f_char1 AS SIGNED INT),
7936
f_charbig = CONCAT('===',f_char1,'===');
7937
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7939
SET new.f_int1 = new.f_int1 + @max_row,
7940
new.f_int2 = new.f_int2 - @max_row,
7941
new.f_charbig = '####updated per update trigger####';
7944
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7945
f_charbig = '####updated per update statement itself####';
7947
# check trigger-10 success: 1
7949
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7950
f_int2 = CAST(f_char1 AS SIGNED INT),
7951
f_charbig = CONCAT('===',f_char1,'===');
7952
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7954
SET new.f_int1 = @my_max1 + @counter,
7955
new.f_int2 = @my_min2 - @counter,
7956
new.f_charbig = '####updated per insert trigger####';
7957
SET @counter = @counter + 1;
7960
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7961
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7962
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7963
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7964
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7968
# check trigger-11 success: 1
7970
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7971
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7972
AND f_charbig = '####updated per insert trigger####';
7973
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7975
SET new.f_int1 = @my_max1 + @counter,
7976
new.f_int2 = @my_min2 - @counter,
7977
new.f_charbig = '####updated per insert trigger####';
7978
SET @counter = @counter + 1;
7981
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7982
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7983
SELECT CAST(f_int1 AS CHAR),
7984
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7985
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7989
# check trigger-12 success: 1
7991
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7992
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7993
AND f_charbig = '####updated per insert trigger####';
7995
Table Op Msg_type Msg_text
7996
test.t1 analyze note The storage engine for the table doesn't support analyze
7997
CHECK TABLE t1 EXTENDED;
7998
Table Op Msg_type Msg_text
7999
test.t1 check note The storage engine for the table doesn't support check
8000
CHECKSUM TABLE t1 EXTENDED;
8002
test.t1 <some_value>
8004
Table Op Msg_type Msg_text
8005
test.t1 optimize note The storage engine for the table doesn't support optimize
8006
# check layout success: 1
8007
REPAIR TABLE t1 EXTENDED;
8008
Table Op Msg_type Msg_text
8009
test.t1 repair note The storage engine for the table doesn't support repair
8010
# check layout success: 1
8013
# check TRUNCATE success: 1
8014
# check layout success: 1
8015
# End usability test (inc/partition_check.inc)
8022
f_charbig VARCHAR(1000)
8023
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
8025
PARTITION BY LIST(MOD(f_int1,4))
8026
(PARTITION part_3 VALUES IN (-3),
8027
PARTITION part_2 VALUES IN (-2),
8028
PARTITION part_1 VALUES IN (-1),
8029
PARTITION part_N VALUES IN (NULL),
8030
PARTITION part0 VALUES IN (0),
8031
PARTITION part1 VALUES IN (1),
8032
PARTITION part2 VALUES IN (2),
8033
PARTITION part3 VALUES IN (3));
8034
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8035
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8036
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8037
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
8038
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8039
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8040
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8041
# Start usability test (inc/partition_check.inc)
8043
SHOW CREATE TABLE t1;
8045
t1 CREATE TABLE `t1` (
8046
`f_int1` int(11) DEFAULT NULL,
8047
`f_int2` int(11) DEFAULT NULL,
8048
`f_char1` char(20) DEFAULT NULL,
8049
`f_char2` char(20) DEFAULT NULL,
8050
`f_charbig` varchar(1000) DEFAULT NULL
8051
) 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) */
8053
# check prerequisites-1 success: 1
8054
# check COUNT(*) success: 1
8055
# check MIN/MAX(f_int1) success: 1
8056
# check MIN/MAX(f_int2) success: 1
8057
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8058
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8059
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8060
WHERE f_int1 IN (2,3);
8061
# check prerequisites-3 success: 1
8062
DELETE FROM t1 WHERE f_charbig = 'delete me';
8063
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
8064
# check read via f_int1 success: 1
8065
# check read via f_int2 success: 1
8067
# check multiple-1 success: 1
8068
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8070
# check multiple-2 success: 1
8071
INSERT INTO t1 SELECT * FROM t0_template
8072
WHERE MOD(f_int1,3) = 0;
8074
# check multiple-3 success: 1
8075
UPDATE t1 SET f_int1 = f_int1 + @max_row
8076
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8077
AND @max_row_div2 + @max_row_div4;
8079
# check multiple-4 success: 1
8081
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8082
AND @max_row_div2 + @max_row_div4 + @max_row;
8084
# check multiple-5 success: 1
8085
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8087
SET f_int1 = @cur_value , f_int2 = @cur_value,
8088
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8089
f_charbig = '#SINGLE#';
8091
# check single-1 success: 1
8092
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8094
SET f_int1 = @cur_value , f_int2 = @cur_value,
8095
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8096
f_charbig = '#SINGLE#';
8098
# check single-2 success: 1
8099
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8100
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8101
UPDATE t1 SET f_int1 = @cur_value2
8102
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8104
# check single-3 success: 1
8105
SET @cur_value1= -1;
8106
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8107
UPDATE t1 SET f_int1 = @cur_value1
8108
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8110
# check single-4 success: 1
8111
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8112
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8114
# check single-5 success: 1
8115
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8117
# check single-6 success: 1
8118
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8120
# check single-7 success: 1
8121
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8122
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8123
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8124
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8125
f_charbig = '#NULL#';
8127
SET f_int1 = NULL , f_int2 = -@max_row,
8128
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8129
f_charbig = '#NULL#';
8130
# check null success: 1
8132
# check null-1 success: 1
8133
UPDATE t1 SET f_int1 = -@max_row
8134
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8135
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8137
# check null-2 success: 1
8138
UPDATE t1 SET f_int1 = NULL
8139
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8140
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8142
# check null-3 success: 1
8144
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8145
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8147
# check null-4 success: 1
8149
WHERE f_int1 = 0 AND f_int2 = 0
8150
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8151
AND f_charbig = '#NULL#';
8153
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8154
SELECT f_int1, f_int1, '', '', 'was inserted'
8155
FROM t0_template source_tab
8156
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8158
# check transactions-1 success: 1
8161
# check transactions-2 success: 1
8164
# check transactions-3 success: 1
8165
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8169
# check transactions-4 success: 1
8170
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8171
SELECT f_int1, f_int1, '', '', 'was inserted'
8172
FROM t0_template source_tab
8173
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8175
# check transactions-5 success: 1
8178
# check transactions-6 success: 1
8179
# INFO: Storage engine used for t1 seems to be transactional.
8182
# check transactions-7 success: 1
8183
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8185
SET @@session.sql_mode = 'traditional';
8186
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8187
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8188
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8189
'', '', 'was inserted' FROM t0_template
8190
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8191
ERROR 22012: Division by 0
8194
# check transactions-8 success: 1
8195
# INFO: Storage engine used for t1 seems to be able to revert
8196
# changes made by the failing statement.
8197
SET @@session.sql_mode = '';
8199
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8201
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8203
# check special-1 success: 1
8204
UPDATE t1 SET f_charbig = '';
8206
# check special-2 success: 1
8207
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8208
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8209
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8210
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8211
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8212
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8213
'just inserted' FROM t0_template
8214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8215
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8217
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8218
f_charbig = 'updated by trigger'
8219
WHERE f_int1 = new.f_int1;
8221
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8222
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8223
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8225
# check trigger-1 success: 1
8227
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8228
f_int2 = CAST(f_char1 AS SIGNED INT),
8229
f_charbig = 'just inserted'
8230
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8232
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8233
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8234
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8235
'just inserted' FROM t0_template
8236
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8237
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8239
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8240
f_charbig = 'updated by trigger'
8241
WHERE f_int1 = new.f_int1;
8243
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8244
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8245
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8247
# check trigger-2 success: 1
8249
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8250
f_int2 = CAST(f_char1 AS SIGNED INT),
8251
f_charbig = 'just inserted'
8252
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8254
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8255
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8256
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8257
'just inserted' FROM t0_template
8258
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8259
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8261
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8262
f_charbig = 'updated by trigger'
8263
WHERE f_int1 = new.f_int1;
8265
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8266
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8268
# check trigger-3 success: 1
8270
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8271
f_int2 = CAST(f_char1 AS SIGNED INT),
8272
f_charbig = 'just inserted'
8273
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8275
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8276
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8277
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8278
'just inserted' FROM t0_template
8279
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8280
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8282
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8283
f_charbig = 'updated by trigger'
8284
WHERE f_int1 = - old.f_int1;
8286
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8287
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8289
# check trigger-4 success: 1
8291
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8292
f_int2 = CAST(f_char1 AS SIGNED INT),
8293
f_charbig = 'just inserted'
8294
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8296
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8297
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8298
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8299
'just inserted' FROM t0_template
8300
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8301
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8303
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8304
f_charbig = 'updated by trigger'
8305
WHERE f_int1 = new.f_int1;
8307
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8308
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8310
# check trigger-5 success: 1
8312
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8313
f_int2 = CAST(f_char1 AS SIGNED INT),
8314
f_charbig = 'just inserted'
8315
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8317
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8318
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8319
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8320
'just inserted' FROM t0_template
8321
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8322
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8324
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8325
f_charbig = 'updated by trigger'
8326
WHERE f_int1 = - old.f_int1;
8328
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8329
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8331
# check trigger-6 success: 1
8333
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8334
f_int2 = CAST(f_char1 AS SIGNED INT),
8335
f_charbig = 'just inserted'
8336
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8338
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8339
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8340
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8341
'just inserted' FROM t0_template
8342
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8343
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8345
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8346
f_charbig = 'updated by trigger'
8347
WHERE f_int1 = - old.f_int1;
8350
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8352
# check trigger-7 success: 1
8354
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8355
f_int2 = CAST(f_char1 AS SIGNED INT),
8356
f_charbig = 'just inserted'
8357
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8359
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8360
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8361
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8362
'just inserted' FROM t0_template
8363
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8364
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8366
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8367
f_charbig = 'updated by trigger'
8368
WHERE f_int1 = - old.f_int1;
8371
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8373
# check trigger-8 success: 1
8375
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8376
f_int2 = CAST(f_char1 AS SIGNED INT),
8377
f_charbig = 'just inserted'
8378
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8380
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8382
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8383
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8385
SET new.f_int1 = old.f_int1 + @max_row,
8386
new.f_int2 = old.f_int2 - @max_row,
8387
new.f_charbig = '####updated per update trigger####';
8390
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8391
f_charbig = '####updated per update statement itself####';
8393
# check trigger-9 success: 1
8395
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8396
f_int2 = CAST(f_char1 AS SIGNED INT),
8397
f_charbig = CONCAT('===',f_char1,'===');
8398
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8400
SET new.f_int1 = new.f_int1 + @max_row,
8401
new.f_int2 = new.f_int2 - @max_row,
8402
new.f_charbig = '####updated per update trigger####';
8405
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8406
f_charbig = '####updated per update statement itself####';
8408
# check trigger-10 success: 1
8410
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8411
f_int2 = CAST(f_char1 AS SIGNED INT),
8412
f_charbig = CONCAT('===',f_char1,'===');
8413
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8415
SET new.f_int1 = @my_max1 + @counter,
8416
new.f_int2 = @my_min2 - @counter,
8417
new.f_charbig = '####updated per insert trigger####';
8418
SET @counter = @counter + 1;
8421
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8422
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8423
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8424
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8425
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8429
# check trigger-11 success: 1
8431
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8432
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8433
AND f_charbig = '####updated per insert trigger####';
8434
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8436
SET new.f_int1 = @my_max1 + @counter,
8437
new.f_int2 = @my_min2 - @counter,
8438
new.f_charbig = '####updated per insert trigger####';
8439
SET @counter = @counter + 1;
8442
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8443
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8444
SELECT CAST(f_int1 AS CHAR),
8445
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8446
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8450
# check trigger-12 success: 1
8452
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8453
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8454
AND f_charbig = '####updated per insert trigger####';
8456
Table Op Msg_type Msg_text
8457
test.t1 analyze note The storage engine for the table doesn't support analyze
8458
CHECK TABLE t1 EXTENDED;
8459
Table Op Msg_type Msg_text
8460
test.t1 check note The storage engine for the table doesn't support check
8461
CHECKSUM TABLE t1 EXTENDED;
8463
test.t1 <some_value>
8465
Table Op Msg_type Msg_text
8466
test.t1 optimize note The storage engine for the table doesn't support optimize
8467
# check layout success: 1
8468
REPAIR TABLE t1 EXTENDED;
8469
Table Op Msg_type Msg_text
8470
test.t1 repair note The storage engine for the table doesn't support repair
8471
# check layout success: 1
8474
# check TRUNCATE success: 1
8475
# check layout success: 1
8476
# End usability test (inc/partition_check.inc)
8483
f_charbig VARCHAR(1000)
8484
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
8486
PARTITION BY RANGE(f_int1)
8487
(PARTITION parta VALUES LESS THAN (0),
8488
PARTITION partb VALUES LESS THAN (5),
8489
PARTITION partc VALUES LESS THAN (10),
8490
PARTITION partd VALUES LESS THAN (10 + 5),
8491
PARTITION parte VALUES LESS THAN (20),
8492
PARTITION partf VALUES LESS THAN (2147483646));
8493
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8494
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8495
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8496
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
8497
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8498
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8499
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8500
# Start usability test (inc/partition_check.inc)
8502
SHOW CREATE TABLE t1;
8504
t1 CREATE TABLE `t1` (
8505
`f_int1` int(11) DEFAULT NULL,
8506
`f_int2` int(11) DEFAULT NULL,
8507
`f_char1` char(20) DEFAULT NULL,
8508
`f_char2` char(20) DEFAULT NULL,
8509
`f_charbig` varchar(1000) DEFAULT NULL
8510
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
8512
# check prerequisites-1 success: 1
8513
# check COUNT(*) success: 1
8514
# check MIN/MAX(f_int1) success: 1
8515
# check MIN/MAX(f_int2) success: 1
8516
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8517
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8518
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8519
WHERE f_int1 IN (2,3);
8520
# check prerequisites-3 success: 1
8521
DELETE FROM t1 WHERE f_charbig = 'delete me';
8522
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
8523
# check read via f_int1 success: 1
8524
# check read via f_int2 success: 1
8526
# check multiple-1 success: 1
8527
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8529
# check multiple-2 success: 1
8530
INSERT INTO t1 SELECT * FROM t0_template
8531
WHERE MOD(f_int1,3) = 0;
8533
# check multiple-3 success: 1
8534
UPDATE t1 SET f_int1 = f_int1 + @max_row
8535
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8536
AND @max_row_div2 + @max_row_div4;
8538
# check multiple-4 success: 1
8540
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8541
AND @max_row_div2 + @max_row_div4 + @max_row;
8543
# check multiple-5 success: 1
8544
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8546
SET f_int1 = @cur_value , f_int2 = @cur_value,
8547
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8548
f_charbig = '#SINGLE#';
8550
# check single-1 success: 1
8551
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8553
SET f_int1 = @cur_value , f_int2 = @cur_value,
8554
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8555
f_charbig = '#SINGLE#';
8557
# check single-2 success: 1
8558
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8559
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8560
UPDATE t1 SET f_int1 = @cur_value2
8561
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8563
# check single-3 success: 1
8564
SET @cur_value1= -1;
8565
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8566
UPDATE t1 SET f_int1 = @cur_value1
8567
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8569
# check single-4 success: 1
8570
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8571
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8573
# check single-5 success: 1
8574
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8576
# check single-6 success: 1
8577
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8578
ERROR HY000: Table has no partition for value 2147483647
8579
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8580
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8581
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8582
f_charbig = '#NULL#';
8584
SET f_int1 = NULL , f_int2 = -@max_row,
8585
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8586
f_charbig = '#NULL#';
8587
# check null success: 1
8589
# check null-1 success: 1
8590
UPDATE t1 SET f_int1 = -@max_row
8591
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8592
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8594
# check null-2 success: 1
8595
UPDATE t1 SET f_int1 = NULL
8596
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8597
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8599
# check null-3 success: 1
8601
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8602
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8604
# check null-4 success: 1
8606
WHERE f_int1 = 0 AND f_int2 = 0
8607
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8608
AND f_charbig = '#NULL#';
8610
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8611
SELECT f_int1, f_int1, '', '', 'was inserted'
8612
FROM t0_template source_tab
8613
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8615
# check transactions-1 success: 1
8618
# check transactions-2 success: 1
8621
# check transactions-3 success: 1
8622
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8626
# check transactions-4 success: 1
8627
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8628
SELECT f_int1, f_int1, '', '', 'was inserted'
8629
FROM t0_template source_tab
8630
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8632
# check transactions-5 success: 1
8635
# check transactions-6 success: 1
8636
# INFO: Storage engine used for t1 seems to be transactional.
8639
# check transactions-7 success: 1
8640
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8642
SET @@session.sql_mode = 'traditional';
8643
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8644
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8645
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8646
'', '', 'was inserted' FROM t0_template
8647
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8648
ERROR 22012: Division by 0
8651
# check transactions-8 success: 1
8652
# INFO: Storage engine used for t1 seems to be able to revert
8653
# changes made by the failing statement.
8654
SET @@session.sql_mode = '';
8656
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8658
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8660
# check special-1 success: 1
8661
UPDATE t1 SET f_charbig = '';
8663
# check special-2 success: 1
8664
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8665
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8666
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8667
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8668
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8669
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8670
'just inserted' FROM t0_template
8671
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8672
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8674
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8675
f_charbig = 'updated by trigger'
8676
WHERE f_int1 = new.f_int1;
8678
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8679
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8680
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8682
# check trigger-1 success: 1
8684
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8685
f_int2 = CAST(f_char1 AS SIGNED INT),
8686
f_charbig = 'just inserted'
8687
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8689
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8690
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8691
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8692
'just inserted' FROM t0_template
8693
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8694
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8696
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8697
f_charbig = 'updated by trigger'
8698
WHERE f_int1 = new.f_int1;
8700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8701
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8702
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8704
# check trigger-2 success: 1
8706
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8707
f_int2 = CAST(f_char1 AS SIGNED INT),
8708
f_charbig = 'just inserted'
8709
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8711
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8712
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8713
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8714
'just inserted' FROM t0_template
8715
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8716
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8718
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8719
f_charbig = 'updated by trigger'
8720
WHERE f_int1 = new.f_int1;
8722
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8723
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8725
# check trigger-3 success: 1
8727
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8728
f_int2 = CAST(f_char1 AS SIGNED INT),
8729
f_charbig = 'just inserted'
8730
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8732
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8733
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8734
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8735
'just inserted' FROM t0_template
8736
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8737
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8739
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8740
f_charbig = 'updated by trigger'
8741
WHERE f_int1 = - old.f_int1;
8743
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8744
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8746
# check trigger-4 success: 1
8748
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8749
f_int2 = CAST(f_char1 AS SIGNED INT),
8750
f_charbig = 'just inserted'
8751
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8753
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8754
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8755
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8756
'just inserted' FROM t0_template
8757
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8758
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8760
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8761
f_charbig = 'updated by trigger'
8762
WHERE f_int1 = new.f_int1;
8764
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8765
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8767
# check trigger-5 success: 1
8769
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8770
f_int2 = CAST(f_char1 AS SIGNED INT),
8771
f_charbig = 'just inserted'
8772
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8774
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8775
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8776
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8777
'just inserted' FROM t0_template
8778
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8779
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8781
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8782
f_charbig = 'updated by trigger'
8783
WHERE f_int1 = - old.f_int1;
8785
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8786
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8788
# check trigger-6 success: 1
8790
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8791
f_int2 = CAST(f_char1 AS SIGNED INT),
8792
f_charbig = 'just inserted'
8793
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8795
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8796
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8797
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8798
'just inserted' FROM t0_template
8799
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8800
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8802
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8803
f_charbig = 'updated by trigger'
8804
WHERE f_int1 = - old.f_int1;
8807
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8809
# check trigger-7 success: 1
8811
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8812
f_int2 = CAST(f_char1 AS SIGNED INT),
8813
f_charbig = 'just inserted'
8814
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8816
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8817
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8818
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8819
'just inserted' FROM t0_template
8820
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8821
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8823
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8824
f_charbig = 'updated by trigger'
8825
WHERE f_int1 = - old.f_int1;
8828
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8830
# check trigger-8 success: 1
8832
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8833
f_int2 = CAST(f_char1 AS SIGNED INT),
8834
f_charbig = 'just inserted'
8835
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8837
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8839
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8840
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8842
SET new.f_int1 = old.f_int1 + @max_row,
8843
new.f_int2 = old.f_int2 - @max_row,
8844
new.f_charbig = '####updated per update trigger####';
8847
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8848
f_charbig = '####updated per update statement itself####';
8850
# check trigger-9 success: 1
8852
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8853
f_int2 = CAST(f_char1 AS SIGNED INT),
8854
f_charbig = CONCAT('===',f_char1,'===');
8855
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8857
SET new.f_int1 = new.f_int1 + @max_row,
8858
new.f_int2 = new.f_int2 - @max_row,
8859
new.f_charbig = '####updated per update trigger####';
8862
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8863
f_charbig = '####updated per update statement itself####';
8865
# check trigger-10 success: 1
8867
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8868
f_int2 = CAST(f_char1 AS SIGNED INT),
8869
f_charbig = CONCAT('===',f_char1,'===');
8870
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8872
SET new.f_int1 = @my_max1 + @counter,
8873
new.f_int2 = @my_min2 - @counter,
8874
new.f_charbig = '####updated per insert trigger####';
8875
SET @counter = @counter + 1;
8878
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8879
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8880
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8881
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8882
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8886
# check trigger-11 success: 1
8888
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8889
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8890
AND f_charbig = '####updated per insert trigger####';
8891
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8893
SET new.f_int1 = @my_max1 + @counter,
8894
new.f_int2 = @my_min2 - @counter,
8895
new.f_charbig = '####updated per insert trigger####';
8896
SET @counter = @counter + 1;
8899
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8900
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8901
SELECT CAST(f_int1 AS CHAR),
8902
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8903
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8907
# check trigger-12 success: 1
8909
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8910
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8911
AND f_charbig = '####updated per insert trigger####';
8913
Table Op Msg_type Msg_text
8914
test.t1 analyze note The storage engine for the table doesn't support analyze
8915
CHECK TABLE t1 EXTENDED;
8916
Table Op Msg_type Msg_text
8917
test.t1 check note The storage engine for the table doesn't support check
8918
CHECKSUM TABLE t1 EXTENDED;
8920
test.t1 <some_value>
8922
Table Op Msg_type Msg_text
8923
test.t1 optimize note The storage engine for the table doesn't support optimize
8924
# check layout success: 1
8925
REPAIR TABLE t1 EXTENDED;
8926
Table Op Msg_type Msg_text
8927
test.t1 repair note The storage engine for the table doesn't support repair
8928
# check layout success: 1
8931
# check TRUNCATE success: 1
8932
# check layout success: 1
8933
# End usability test (inc/partition_check.inc)
8940
f_charbig VARCHAR(1000)
8941
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
8943
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
8944
(PARTITION parta VALUES LESS THAN (0),
8945
PARTITION partb VALUES LESS THAN (5),
8946
PARTITION partc VALUES LESS THAN (10),
8947
PARTITION partd VALUES LESS THAN (2147483646));
8948
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8949
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8950
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8951
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
8952
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8953
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8954
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8955
# Start usability test (inc/partition_check.inc)
8957
SHOW CREATE TABLE t1;
8959
t1 CREATE TABLE `t1` (
8960
`f_int1` int(11) DEFAULT NULL,
8961
`f_int2` int(11) DEFAULT NULL,
8962
`f_char1` char(20) DEFAULT NULL,
8963
`f_char2` char(20) DEFAULT NULL,
8964
`f_charbig` varchar(1000) DEFAULT NULL
8965
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
8967
# check prerequisites-1 success: 1
8968
# check COUNT(*) success: 1
8969
# check MIN/MAX(f_int1) success: 1
8970
# check MIN/MAX(f_int2) success: 1
8971
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8972
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8973
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8974
WHERE f_int1 IN (2,3);
8975
# check prerequisites-3 success: 1
8976
DELETE FROM t1 WHERE f_charbig = 'delete me';
8977
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
8978
# check read via f_int1 success: 1
8979
# check read via f_int2 success: 1
8981
# check multiple-1 success: 1
8982
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8984
# check multiple-2 success: 1
8985
INSERT INTO t1 SELECT * FROM t0_template
8986
WHERE MOD(f_int1,3) = 0;
8988
# check multiple-3 success: 1
8989
UPDATE t1 SET f_int1 = f_int1 + @max_row
8990
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8991
AND @max_row_div2 + @max_row_div4;
8993
# check multiple-4 success: 1
8995
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8996
AND @max_row_div2 + @max_row_div4 + @max_row;
8998
# check multiple-5 success: 1
8999
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9001
SET f_int1 = @cur_value , f_int2 = @cur_value,
9002
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9003
f_charbig = '#SINGLE#';
9005
# check single-1 success: 1
9006
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9008
SET f_int1 = @cur_value , f_int2 = @cur_value,
9009
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9010
f_charbig = '#SINGLE#';
9012
# check single-2 success: 1
9013
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9014
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9015
UPDATE t1 SET f_int1 = @cur_value2
9016
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9018
# check single-3 success: 1
9019
SET @cur_value1= -1;
9020
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9021
UPDATE t1 SET f_int1 = @cur_value1
9022
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9024
# check single-4 success: 1
9025
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9026
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9028
# check single-5 success: 1
9029
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9031
# check single-6 success: 1
9032
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9034
# check single-7 success: 1
9035
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9036
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9037
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9038
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9039
f_charbig = '#NULL#';
9041
SET f_int1 = NULL , f_int2 = -@max_row,
9042
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9043
f_charbig = '#NULL#';
9044
# check null success: 1
9046
# check null-1 success: 1
9047
UPDATE t1 SET f_int1 = -@max_row
9048
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9049
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9051
# check null-2 success: 1
9052
UPDATE t1 SET f_int1 = NULL
9053
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9054
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9056
# check null-3 success: 1
9058
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9059
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9061
# check null-4 success: 1
9063
WHERE f_int1 = 0 AND f_int2 = 0
9064
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9065
AND f_charbig = '#NULL#';
9067
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9068
SELECT f_int1, f_int1, '', '', 'was inserted'
9069
FROM t0_template source_tab
9070
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9072
# check transactions-1 success: 1
9075
# check transactions-2 success: 1
9078
# check transactions-3 success: 1
9079
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9083
# check transactions-4 success: 1
9084
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9085
SELECT f_int1, f_int1, '', '', 'was inserted'
9086
FROM t0_template source_tab
9087
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9089
# check transactions-5 success: 1
9092
# check transactions-6 success: 1
9093
# INFO: Storage engine used for t1 seems to be transactional.
9096
# check transactions-7 success: 1
9097
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9099
SET @@session.sql_mode = 'traditional';
9100
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9101
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9102
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9103
'', '', 'was inserted' FROM t0_template
9104
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9105
ERROR 22012: Division by 0
9108
# check transactions-8 success: 1
9109
# INFO: Storage engine used for t1 seems to be able to revert
9110
# changes made by the failing statement.
9111
SET @@session.sql_mode = '';
9113
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9115
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9117
# check special-1 success: 1
9118
UPDATE t1 SET f_charbig = '';
9120
# check special-2 success: 1
9121
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9122
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9123
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9124
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9125
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9126
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9127
'just inserted' FROM t0_template
9128
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9129
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9131
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9132
f_charbig = 'updated by trigger'
9133
WHERE f_int1 = new.f_int1;
9135
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9136
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9137
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9139
# check trigger-1 success: 1
9141
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9142
f_int2 = CAST(f_char1 AS SIGNED INT),
9143
f_charbig = 'just inserted'
9144
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9146
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9147
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9148
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9149
'just inserted' FROM t0_template
9150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9151
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9153
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9154
f_charbig = 'updated by trigger'
9155
WHERE f_int1 = new.f_int1;
9157
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9158
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9159
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9161
# check trigger-2 success: 1
9163
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9164
f_int2 = CAST(f_char1 AS SIGNED INT),
9165
f_charbig = 'just inserted'
9166
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9168
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9169
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9170
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9171
'just inserted' FROM t0_template
9172
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9173
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9175
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9176
f_charbig = 'updated by trigger'
9177
WHERE f_int1 = new.f_int1;
9179
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9180
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9182
# check trigger-3 success: 1
9184
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9185
f_int2 = CAST(f_char1 AS SIGNED INT),
9186
f_charbig = 'just inserted'
9187
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9189
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9190
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9191
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9192
'just inserted' FROM t0_template
9193
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9194
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9196
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9197
f_charbig = 'updated by trigger'
9198
WHERE f_int1 = - old.f_int1;
9200
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9201
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9203
# check trigger-4 success: 1
9205
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9206
f_int2 = CAST(f_char1 AS SIGNED INT),
9207
f_charbig = 'just inserted'
9208
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9210
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9211
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9212
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9213
'just inserted' FROM t0_template
9214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9215
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9217
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9218
f_charbig = 'updated by trigger'
9219
WHERE f_int1 = new.f_int1;
9221
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9222
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9224
# check trigger-5 success: 1
9226
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9227
f_int2 = CAST(f_char1 AS SIGNED INT),
9228
f_charbig = 'just inserted'
9229
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9231
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9232
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9233
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9234
'just inserted' FROM t0_template
9235
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9236
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9238
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9239
f_charbig = 'updated by trigger'
9240
WHERE f_int1 = - old.f_int1;
9242
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9243
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9245
# check trigger-6 success: 1
9247
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9248
f_int2 = CAST(f_char1 AS SIGNED INT),
9249
f_charbig = 'just inserted'
9250
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9252
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9254
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9255
'just inserted' FROM t0_template
9256
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9257
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9259
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9260
f_charbig = 'updated by trigger'
9261
WHERE f_int1 = - old.f_int1;
9264
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9266
# check trigger-7 success: 1
9268
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9269
f_int2 = CAST(f_char1 AS SIGNED INT),
9270
f_charbig = 'just inserted'
9271
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9273
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9274
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9275
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9276
'just inserted' FROM t0_template
9277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9278
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9280
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9281
f_charbig = 'updated by trigger'
9282
WHERE f_int1 = - old.f_int1;
9285
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9287
# check trigger-8 success: 1
9289
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9290
f_int2 = CAST(f_char1 AS SIGNED INT),
9291
f_charbig = 'just inserted'
9292
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9294
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9297
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9299
SET new.f_int1 = old.f_int1 + @max_row,
9300
new.f_int2 = old.f_int2 - @max_row,
9301
new.f_charbig = '####updated per update trigger####';
9304
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9305
f_charbig = '####updated per update statement itself####';
9307
# check trigger-9 success: 1
9309
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9310
f_int2 = CAST(f_char1 AS SIGNED INT),
9311
f_charbig = CONCAT('===',f_char1,'===');
9312
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9314
SET new.f_int1 = new.f_int1 + @max_row,
9315
new.f_int2 = new.f_int2 - @max_row,
9316
new.f_charbig = '####updated per update trigger####';
9319
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9320
f_charbig = '####updated per update statement itself####';
9322
# check trigger-10 success: 1
9324
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9325
f_int2 = CAST(f_char1 AS SIGNED INT),
9326
f_charbig = CONCAT('===',f_char1,'===');
9327
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9329
SET new.f_int1 = @my_max1 + @counter,
9330
new.f_int2 = @my_min2 - @counter,
9331
new.f_charbig = '####updated per insert trigger####';
9332
SET @counter = @counter + 1;
9335
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9336
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9337
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9338
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9339
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9343
# check trigger-11 success: 1
9345
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9346
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9347
AND f_charbig = '####updated per insert trigger####';
9348
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9350
SET new.f_int1 = @my_max1 + @counter,
9351
new.f_int2 = @my_min2 - @counter,
9352
new.f_charbig = '####updated per insert trigger####';
9353
SET @counter = @counter + 1;
9356
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9357
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9358
SELECT CAST(f_int1 AS CHAR),
9359
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9360
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9364
# check trigger-12 success: 1
9366
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9367
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9368
AND f_charbig = '####updated per insert trigger####';
9370
Table Op Msg_type Msg_text
9371
test.t1 analyze note The storage engine for the table doesn't support analyze
9372
CHECK TABLE t1 EXTENDED;
9373
Table Op Msg_type Msg_text
9374
test.t1 check note The storage engine for the table doesn't support check
9375
CHECKSUM TABLE t1 EXTENDED;
9377
test.t1 <some_value>
9379
Table Op Msg_type Msg_text
9380
test.t1 optimize note The storage engine for the table doesn't support optimize
9381
# check layout success: 1
9382
REPAIR TABLE t1 EXTENDED;
9383
Table Op Msg_type Msg_text
9384
test.t1 repair note The storage engine for the table doesn't support repair
9385
# check layout success: 1
9388
# check TRUNCATE success: 1
9389
# check layout success: 1
9390
# End usability test (inc/partition_check.inc)
9397
f_charbig VARCHAR(1000)
9398
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
9400
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
9401
(PARTITION part1 VALUES LESS THAN (0)
9402
(SUBPARTITION subpart11, SUBPARTITION subpart12),
9403
PARTITION part2 VALUES LESS THAN (5)
9404
(SUBPARTITION subpart21, SUBPARTITION subpart22),
9405
PARTITION part3 VALUES LESS THAN (10)
9406
(SUBPARTITION subpart31, SUBPARTITION subpart32),
9407
PARTITION part4 VALUES LESS THAN (2147483646)
9408
(SUBPARTITION subpart41, SUBPARTITION subpart42));
9409
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9410
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9411
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9412
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
9413
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9414
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9415
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9416
# Start usability test (inc/partition_check.inc)
9418
SHOW CREATE TABLE t1;
9420
t1 CREATE TABLE `t1` (
9421
`f_int1` int(11) DEFAULT NULL,
9422
`f_int2` int(11) DEFAULT NULL,
9423
`f_char1` char(20) DEFAULT NULL,
9424
`f_char2` char(20) DEFAULT NULL,
9425
`f_charbig` varchar(1000) DEFAULT NULL
9426
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
9428
# check prerequisites-1 success: 1
9429
# check COUNT(*) success: 1
9430
# check MIN/MAX(f_int1) success: 1
9431
# check MIN/MAX(f_int2) success: 1
9432
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9433
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9434
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9435
WHERE f_int1 IN (2,3);
9436
# check prerequisites-3 success: 1
9437
DELETE FROM t1 WHERE f_charbig = 'delete me';
9438
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
9439
# check read via f_int1 success: 1
9440
# check read via f_int2 success: 1
9442
# check multiple-1 success: 1
9443
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9445
# check multiple-2 success: 1
9446
INSERT INTO t1 SELECT * FROM t0_template
9447
WHERE MOD(f_int1,3) = 0;
9449
# check multiple-3 success: 1
9450
UPDATE t1 SET f_int1 = f_int1 + @max_row
9451
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9452
AND @max_row_div2 + @max_row_div4;
9454
# check multiple-4 success: 1
9456
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9457
AND @max_row_div2 + @max_row_div4 + @max_row;
9459
# check multiple-5 success: 1
9460
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9462
SET f_int1 = @cur_value , f_int2 = @cur_value,
9463
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9464
f_charbig = '#SINGLE#';
9466
# check single-1 success: 1
9467
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9469
SET f_int1 = @cur_value , f_int2 = @cur_value,
9470
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9471
f_charbig = '#SINGLE#';
9473
# check single-2 success: 1
9474
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9475
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9476
UPDATE t1 SET f_int1 = @cur_value2
9477
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9479
# check single-3 success: 1
9480
SET @cur_value1= -1;
9481
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9482
UPDATE t1 SET f_int1 = @cur_value1
9483
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9485
# check single-4 success: 1
9486
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9487
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9489
# check single-5 success: 1
9490
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9492
# check single-6 success: 1
9493
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9494
ERROR HY000: Table has no partition for value 2147483647
9495
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9496
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9497
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9498
f_charbig = '#NULL#';
9500
SET f_int1 = NULL , f_int2 = -@max_row,
9501
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9502
f_charbig = '#NULL#';
9503
# check null success: 1
9505
# check null-1 success: 1
9506
UPDATE t1 SET f_int1 = -@max_row
9507
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9508
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9510
# check null-2 success: 1
9511
UPDATE t1 SET f_int1 = NULL
9512
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9513
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9515
# check null-3 success: 1
9517
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9518
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9520
# check null-4 success: 1
9522
WHERE f_int1 = 0 AND f_int2 = 0
9523
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9524
AND f_charbig = '#NULL#';
9526
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9527
SELECT f_int1, f_int1, '', '', 'was inserted'
9528
FROM t0_template source_tab
9529
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9531
# check transactions-1 success: 1
9534
# check transactions-2 success: 1
9537
# check transactions-3 success: 1
9538
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9542
# check transactions-4 success: 1
9543
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9544
SELECT f_int1, f_int1, '', '', 'was inserted'
9545
FROM t0_template source_tab
9546
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9548
# check transactions-5 success: 1
9551
# check transactions-6 success: 1
9552
# INFO: Storage engine used for t1 seems to be transactional.
9555
# check transactions-7 success: 1
9556
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9558
SET @@session.sql_mode = 'traditional';
9559
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9560
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9561
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9562
'', '', 'was inserted' FROM t0_template
9563
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9564
ERROR 22012: Division by 0
9567
# check transactions-8 success: 1
9568
# INFO: Storage engine used for t1 seems to be able to revert
9569
# changes made by the failing statement.
9570
SET @@session.sql_mode = '';
9572
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9574
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9576
# check special-1 success: 1
9577
UPDATE t1 SET f_charbig = '';
9579
# check special-2 success: 1
9580
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9581
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9582
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9584
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9585
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9586
'just inserted' FROM t0_template
9587
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9588
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9590
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9591
f_charbig = 'updated by trigger'
9592
WHERE f_int1 = new.f_int1;
9594
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9595
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9596
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9598
# check trigger-1 success: 1
9600
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9601
f_int2 = CAST(f_char1 AS SIGNED INT),
9602
f_charbig = 'just inserted'
9603
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9605
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9606
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9607
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9608
'just inserted' FROM t0_template
9609
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9610
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9612
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9613
f_charbig = 'updated by trigger'
9614
WHERE f_int1 = new.f_int1;
9616
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9617
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9618
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9620
# check trigger-2 success: 1
9622
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9623
f_int2 = CAST(f_char1 AS SIGNED INT),
9624
f_charbig = 'just inserted'
9625
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9627
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9628
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9629
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9630
'just inserted' FROM t0_template
9631
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9632
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9634
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9635
f_charbig = 'updated by trigger'
9636
WHERE f_int1 = new.f_int1;
9638
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9639
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9641
# check trigger-3 success: 1
9643
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9644
f_int2 = CAST(f_char1 AS SIGNED INT),
9645
f_charbig = 'just inserted'
9646
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9648
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9649
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9650
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9651
'just inserted' FROM t0_template
9652
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9653
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9655
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9656
f_charbig = 'updated by trigger'
9657
WHERE f_int1 = - old.f_int1;
9659
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9660
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9662
# check trigger-4 success: 1
9664
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9665
f_int2 = CAST(f_char1 AS SIGNED INT),
9666
f_charbig = 'just inserted'
9667
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9669
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9670
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9671
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9672
'just inserted' FROM t0_template
9673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9674
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9676
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9677
f_charbig = 'updated by trigger'
9678
WHERE f_int1 = new.f_int1;
9680
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9681
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9683
# check trigger-5 success: 1
9685
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9686
f_int2 = CAST(f_char1 AS SIGNED INT),
9687
f_charbig = 'just inserted'
9688
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9690
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9691
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9692
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9693
'just inserted' FROM t0_template
9694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9695
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9697
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9698
f_charbig = 'updated by trigger'
9699
WHERE f_int1 = - old.f_int1;
9701
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9702
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9704
# check trigger-6 success: 1
9706
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9707
f_int2 = CAST(f_char1 AS SIGNED INT),
9708
f_charbig = 'just inserted'
9709
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9711
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9712
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9713
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9714
'just inserted' FROM t0_template
9715
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9716
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9718
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9719
f_charbig = 'updated by trigger'
9720
WHERE f_int1 = - old.f_int1;
9723
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9725
# check trigger-7 success: 1
9727
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9728
f_int2 = CAST(f_char1 AS SIGNED INT),
9729
f_charbig = 'just inserted'
9730
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9732
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9733
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9734
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9735
'just inserted' FROM t0_template
9736
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9737
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9739
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9740
f_charbig = 'updated by trigger'
9741
WHERE f_int1 = - old.f_int1;
9744
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9746
# check trigger-8 success: 1
9748
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9749
f_int2 = CAST(f_char1 AS SIGNED INT),
9750
f_charbig = 'just inserted'
9751
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9753
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9755
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9756
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9758
SET new.f_int1 = old.f_int1 + @max_row,
9759
new.f_int2 = old.f_int2 - @max_row,
9760
new.f_charbig = '####updated per update trigger####';
9763
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9764
f_charbig = '####updated per update statement itself####';
9766
# check trigger-9 success: 1
9768
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9769
f_int2 = CAST(f_char1 AS SIGNED INT),
9770
f_charbig = CONCAT('===',f_char1,'===');
9771
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9773
SET new.f_int1 = new.f_int1 + @max_row,
9774
new.f_int2 = new.f_int2 - @max_row,
9775
new.f_charbig = '####updated per update trigger####';
9778
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9779
f_charbig = '####updated per update statement itself####';
9781
# check trigger-10 success: 1
9783
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9784
f_int2 = CAST(f_char1 AS SIGNED INT),
9785
f_charbig = CONCAT('===',f_char1,'===');
9786
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9788
SET new.f_int1 = @my_max1 + @counter,
9789
new.f_int2 = @my_min2 - @counter,
9790
new.f_charbig = '####updated per insert trigger####';
9791
SET @counter = @counter + 1;
9794
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9795
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9796
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9797
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9798
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9802
# check trigger-11 success: 1
9804
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9805
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9806
AND f_charbig = '####updated per insert trigger####';
9807
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9809
SET new.f_int1 = @my_max1 + @counter,
9810
new.f_int2 = @my_min2 - @counter,
9811
new.f_charbig = '####updated per insert trigger####';
9812
SET @counter = @counter + 1;
9815
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9816
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9817
SELECT CAST(f_int1 AS CHAR),
9818
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9819
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9823
# check trigger-12 success: 1
9825
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9826
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9827
AND f_charbig = '####updated per insert trigger####';
9829
Table Op Msg_type Msg_text
9830
test.t1 analyze note The storage engine for the table doesn't support analyze
9831
CHECK TABLE t1 EXTENDED;
9832
Table Op Msg_type Msg_text
9833
test.t1 check note The storage engine for the table doesn't support check
9834
CHECKSUM TABLE t1 EXTENDED;
9836
test.t1 <some_value>
9838
Table Op Msg_type Msg_text
9839
test.t1 optimize note The storage engine for the table doesn't support optimize
9840
# check layout success: 1
9841
REPAIR TABLE t1 EXTENDED;
9842
Table Op Msg_type Msg_text
9843
test.t1 repair note The storage engine for the table doesn't support repair
9844
# check layout success: 1
9847
# check TRUNCATE success: 1
9848
# check layout success: 1
9849
# End usability test (inc/partition_check.inc)
9856
f_charbig VARCHAR(1000)
9857
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
9859
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
9860
(PARTITION part1 VALUES IN (0)
9861
(SUBPARTITION sp11, SUBPARTITION sp12),
9862
PARTITION part2 VALUES IN (1)
9863
(SUBPARTITION sp21, SUBPARTITION sp22),
9864
PARTITION part3 VALUES IN (2)
9865
(SUBPARTITION sp31, SUBPARTITION sp32),
9866
PARTITION part4 VALUES IN (NULL)
9867
(SUBPARTITION sp41, SUBPARTITION sp42));
9868
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9869
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9870
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9871
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
9872
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9873
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9874
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9875
# Start usability test (inc/partition_check.inc)
9877
SHOW CREATE TABLE t1;
9879
t1 CREATE TABLE `t1` (
9880
`f_int1` int(11) DEFAULT NULL,
9881
`f_int2` int(11) DEFAULT NULL,
9882
`f_char1` char(20) DEFAULT NULL,
9883
`f_char2` char(20) DEFAULT NULL,
9884
`f_charbig` varchar(1000) DEFAULT NULL
9885
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
9887
# check prerequisites-1 success: 1
9888
# check COUNT(*) success: 1
9889
# check MIN/MAX(f_int1) success: 1
9890
# check MIN/MAX(f_int2) success: 1
9891
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9892
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9893
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9894
WHERE f_int1 IN (2,3);
9895
# check prerequisites-3 success: 1
9896
DELETE FROM t1 WHERE f_charbig = 'delete me';
9897
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
9898
# check read via f_int1 success: 1
9899
# check read via f_int2 success: 1
9901
# check multiple-1 success: 1
9902
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9904
# check multiple-2 success: 1
9905
INSERT INTO t1 SELECT * FROM t0_template
9906
WHERE MOD(f_int1,3) = 0;
9908
# check multiple-3 success: 1
9909
UPDATE t1 SET f_int1 = f_int1 + @max_row
9910
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9911
AND @max_row_div2 + @max_row_div4;
9913
# check multiple-4 success: 1
9915
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9916
AND @max_row_div2 + @max_row_div4 + @max_row;
9918
# check multiple-5 success: 1
9919
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9921
SET f_int1 = @cur_value , f_int2 = @cur_value,
9922
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9923
f_charbig = '#SINGLE#';
9925
# check single-1 success: 1
9926
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9928
SET f_int1 = @cur_value , f_int2 = @cur_value,
9929
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9930
f_charbig = '#SINGLE#';
9932
# check single-2 success: 1
9933
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9934
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9935
UPDATE t1 SET f_int1 = @cur_value2
9936
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9938
# check single-3 success: 1
9939
SET @cur_value1= -1;
9940
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9941
UPDATE t1 SET f_int1 = @cur_value1
9942
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9944
# check single-4 success: 1
9945
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9946
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9948
# check single-5 success: 1
9949
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9951
# check single-6 success: 1
9952
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9954
# check single-7 success: 1
9955
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9956
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9957
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9958
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9959
f_charbig = '#NULL#';
9961
SET f_int1 = NULL , f_int2 = -@max_row,
9962
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9963
f_charbig = '#NULL#';
9964
# check null success: 1
9966
# check null-1 success: 1
9967
UPDATE t1 SET f_int1 = -@max_row
9968
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9969
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9971
# check null-2 success: 1
9972
UPDATE t1 SET f_int1 = NULL
9973
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9974
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9976
# check null-3 success: 1
9978
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9979
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9981
# check null-4 success: 1
9983
WHERE f_int1 = 0 AND f_int2 = 0
9984
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9985
AND f_charbig = '#NULL#';
9987
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9988
SELECT f_int1, f_int1, '', '', 'was inserted'
9989
FROM t0_template source_tab
9990
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9992
# check transactions-1 success: 1
9995
# check transactions-2 success: 1
9998
# check transactions-3 success: 1
9999
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10003
# check transactions-4 success: 1
10004
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10005
SELECT f_int1, f_int1, '', '', 'was inserted'
10006
FROM t0_template source_tab
10007
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10009
# check transactions-5 success: 1
10012
# check transactions-6 success: 1
10013
# INFO: Storage engine used for t1 seems to be transactional.
10016
# check transactions-7 success: 1
10017
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10019
SET @@session.sql_mode = 'traditional';
10020
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10021
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10022
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10023
'', '', 'was inserted' FROM t0_template
10024
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10025
ERROR 22012: Division by 0
10028
# check transactions-8 success: 1
10029
# INFO: Storage engine used for t1 seems to be able to revert
10030
# changes made by the failing statement.
10031
SET @@session.sql_mode = '';
10033
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10035
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10037
# check special-1 success: 1
10038
UPDATE t1 SET f_charbig = '';
10040
# check special-2 success: 1
10041
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10042
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10043
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10044
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10045
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10046
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10047
'just inserted' FROM t0_template
10048
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10049
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10051
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10052
f_charbig = 'updated by trigger'
10053
WHERE f_int1 = new.f_int1;
10055
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10056
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10057
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10059
# check trigger-1 success: 1
10060
DROP TRIGGER trg_1;
10061
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10062
f_int2 = CAST(f_char1 AS SIGNED INT),
10063
f_charbig = 'just inserted'
10064
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10066
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10067
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10068
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10069
'just inserted' FROM t0_template
10070
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10071
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10073
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10074
f_charbig = 'updated by trigger'
10075
WHERE f_int1 = new.f_int1;
10077
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10078
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10079
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10081
# check trigger-2 success: 1
10082
DROP TRIGGER trg_1;
10083
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10084
f_int2 = CAST(f_char1 AS SIGNED INT),
10085
f_charbig = 'just inserted'
10086
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10088
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10089
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10090
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10091
'just inserted' FROM t0_template
10092
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10093
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10095
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10096
f_charbig = 'updated by trigger'
10097
WHERE f_int1 = new.f_int1;
10099
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10100
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10102
# check trigger-3 success: 1
10103
DROP TRIGGER trg_1;
10104
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10105
f_int2 = CAST(f_char1 AS SIGNED INT),
10106
f_charbig = 'just inserted'
10107
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10109
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10110
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10111
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10112
'just inserted' FROM t0_template
10113
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10114
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10116
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10117
f_charbig = 'updated by trigger'
10118
WHERE f_int1 = - old.f_int1;
10120
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10121
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10123
# check trigger-4 success: 1
10124
DROP TRIGGER trg_1;
10125
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10126
f_int2 = CAST(f_char1 AS SIGNED INT),
10127
f_charbig = 'just inserted'
10128
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10130
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10131
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10132
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10133
'just inserted' FROM t0_template
10134
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10135
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10137
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10138
f_charbig = 'updated by trigger'
10139
WHERE f_int1 = new.f_int1;
10141
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10142
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10144
# check trigger-5 success: 1
10145
DROP TRIGGER trg_1;
10146
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10147
f_int2 = CAST(f_char1 AS SIGNED INT),
10148
f_charbig = 'just inserted'
10149
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10151
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10152
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10153
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10154
'just inserted' FROM t0_template
10155
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10156
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10158
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10159
f_charbig = 'updated by trigger'
10160
WHERE f_int1 = - old.f_int1;
10162
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10163
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10165
# check trigger-6 success: 1
10166
DROP TRIGGER trg_1;
10167
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10168
f_int2 = CAST(f_char1 AS SIGNED INT),
10169
f_charbig = 'just inserted'
10170
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10172
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10173
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10174
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10175
'just inserted' FROM t0_template
10176
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10177
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10179
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10180
f_charbig = 'updated by trigger'
10181
WHERE f_int1 = - old.f_int1;
10184
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10186
# check trigger-7 success: 1
10187
DROP TRIGGER trg_1;
10188
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10189
f_int2 = CAST(f_char1 AS SIGNED INT),
10190
f_charbig = 'just inserted'
10191
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10193
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10194
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10195
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10196
'just inserted' FROM t0_template
10197
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10198
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10200
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10201
f_charbig = 'updated by trigger'
10202
WHERE f_int1 = - old.f_int1;
10205
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10207
# check trigger-8 success: 1
10208
DROP TRIGGER trg_1;
10209
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10210
f_int2 = CAST(f_char1 AS SIGNED INT),
10211
f_charbig = 'just inserted'
10212
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10214
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10216
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10217
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10219
SET new.f_int1 = old.f_int1 + @max_row,
10220
new.f_int2 = old.f_int2 - @max_row,
10221
new.f_charbig = '####updated per update trigger####';
10224
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10225
f_charbig = '####updated per update statement itself####';
10227
# check trigger-9 success: 1
10228
DROP TRIGGER trg_2;
10229
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10230
f_int2 = CAST(f_char1 AS SIGNED INT),
10231
f_charbig = CONCAT('===',f_char1,'===');
10232
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10234
SET new.f_int1 = new.f_int1 + @max_row,
10235
new.f_int2 = new.f_int2 - @max_row,
10236
new.f_charbig = '####updated per update trigger####';
10239
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10240
f_charbig = '####updated per update statement itself####';
10242
# check trigger-10 success: 1
10243
DROP TRIGGER trg_2;
10244
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10245
f_int2 = CAST(f_char1 AS SIGNED INT),
10246
f_charbig = CONCAT('===',f_char1,'===');
10247
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10249
SET new.f_int1 = @my_max1 + @counter,
10250
new.f_int2 = @my_min2 - @counter,
10251
new.f_charbig = '####updated per insert trigger####';
10252
SET @counter = @counter + 1;
10255
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10256
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10257
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10258
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10259
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10261
DROP TRIGGER trg_3;
10263
# check trigger-11 success: 1
10265
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10266
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10267
AND f_charbig = '####updated per insert trigger####';
10268
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10270
SET new.f_int1 = @my_max1 + @counter,
10271
new.f_int2 = @my_min2 - @counter,
10272
new.f_charbig = '####updated per insert trigger####';
10273
SET @counter = @counter + 1;
10276
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10277
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10278
SELECT CAST(f_int1 AS CHAR),
10279
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10280
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10282
DROP TRIGGER trg_3;
10284
# check trigger-12 success: 1
10286
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10287
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10288
AND f_charbig = '####updated per insert trigger####';
10290
Table Op Msg_type Msg_text
10291
test.t1 analyze note The storage engine for the table doesn't support analyze
10292
CHECK TABLE t1 EXTENDED;
10293
Table Op Msg_type Msg_text
10294
test.t1 check note The storage engine for the table doesn't support check
10295
CHECKSUM TABLE t1 EXTENDED;
10297
test.t1 <some_value>
10299
Table Op Msg_type Msg_text
10300
test.t1 optimize note The storage engine for the table doesn't support optimize
10301
# check layout success: 1
10302
REPAIR TABLE t1 EXTENDED;
10303
Table Op Msg_type Msg_text
10304
test.t1 repair note The storage engine for the table doesn't support repair
10305
# check layout success: 1
10308
# check TRUNCATE success: 1
10309
# check layout success: 1
10310
# End usability test (inc/partition_check.inc)
10317
f_charbig VARCHAR(1000)
10318
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
10320
PARTITION BY LIST(ABS(MOD(f_int1,2)))
10321
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
10322
(PARTITION part1 VALUES IN (0),
10323
PARTITION part2 VALUES IN (1),
10324
PARTITION part3 VALUES IN (NULL));
10325
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10326
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10327
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10328
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
10329
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10330
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10331
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10332
# Start usability test (inc/partition_check.inc)
10334
SHOW CREATE TABLE t1;
10336
t1 CREATE TABLE `t1` (
10337
`f_int1` int(11) DEFAULT NULL,
10338
`f_int2` int(11) DEFAULT NULL,
10339
`f_char1` char(20) DEFAULT NULL,
10340
`f_char2` char(20) DEFAULT NULL,
10341
`f_charbig` varchar(1000) DEFAULT NULL
10342
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
10344
# check prerequisites-1 success: 1
10345
# check COUNT(*) success: 1
10346
# check MIN/MAX(f_int1) success: 1
10347
# check MIN/MAX(f_int2) success: 1
10348
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10349
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10350
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10351
WHERE f_int1 IN (2,3);
10352
# check prerequisites-3 success: 1
10353
DELETE FROM t1 WHERE f_charbig = 'delete me';
10354
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
10355
# check read via f_int1 success: 1
10356
# check read via f_int2 success: 1
10358
# check multiple-1 success: 1
10359
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10361
# check multiple-2 success: 1
10362
INSERT INTO t1 SELECT * FROM t0_template
10363
WHERE MOD(f_int1,3) = 0;
10365
# check multiple-3 success: 1
10366
UPDATE t1 SET f_int1 = f_int1 + @max_row
10367
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10368
AND @max_row_div2 + @max_row_div4;
10370
# check multiple-4 success: 1
10372
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10373
AND @max_row_div2 + @max_row_div4 + @max_row;
10375
# check multiple-5 success: 1
10376
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10378
SET f_int1 = @cur_value , f_int2 = @cur_value,
10379
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10380
f_charbig = '#SINGLE#';
10382
# check single-1 success: 1
10383
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10385
SET f_int1 = @cur_value , f_int2 = @cur_value,
10386
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10387
f_charbig = '#SINGLE#';
10389
# check single-2 success: 1
10390
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10391
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10392
UPDATE t1 SET f_int1 = @cur_value2
10393
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10395
# check single-3 success: 1
10396
SET @cur_value1= -1;
10397
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10398
UPDATE t1 SET f_int1 = @cur_value1
10399
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10401
# check single-4 success: 1
10402
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10403
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10405
# check single-5 success: 1
10406
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10408
# check single-6 success: 1
10409
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10411
# check single-7 success: 1
10412
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10413
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10414
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10415
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10416
f_charbig = '#NULL#';
10418
SET f_int1 = NULL , f_int2 = -@max_row,
10419
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10420
f_charbig = '#NULL#';
10421
# check null success: 1
10423
# check null-1 success: 1
10424
UPDATE t1 SET f_int1 = -@max_row
10425
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10426
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10428
# check null-2 success: 1
10429
UPDATE t1 SET f_int1 = NULL
10430
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10431
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10433
# check null-3 success: 1
10435
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10436
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10438
# check null-4 success: 1
10440
WHERE f_int1 = 0 AND f_int2 = 0
10441
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10442
AND f_charbig = '#NULL#';
10444
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10445
SELECT f_int1, f_int1, '', '', 'was inserted'
10446
FROM t0_template source_tab
10447
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10449
# check transactions-1 success: 1
10452
# check transactions-2 success: 1
10455
# check transactions-3 success: 1
10456
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10460
# check transactions-4 success: 1
10461
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10462
SELECT f_int1, f_int1, '', '', 'was inserted'
10463
FROM t0_template source_tab
10464
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10466
# check transactions-5 success: 1
10469
# check transactions-6 success: 1
10470
# INFO: Storage engine used for t1 seems to be transactional.
10473
# check transactions-7 success: 1
10474
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10476
SET @@session.sql_mode = 'traditional';
10477
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10478
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10479
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10480
'', '', 'was inserted' FROM t0_template
10481
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10482
ERROR 22012: Division by 0
10485
# check transactions-8 success: 1
10486
# INFO: Storage engine used for t1 seems to be able to revert
10487
# changes made by the failing statement.
10488
SET @@session.sql_mode = '';
10490
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10492
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10494
# check special-1 success: 1
10495
UPDATE t1 SET f_charbig = '';
10497
# check special-2 success: 1
10498
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10499
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10500
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10501
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10502
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10503
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10504
'just inserted' FROM t0_template
10505
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10506
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10508
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10509
f_charbig = 'updated by trigger'
10510
WHERE f_int1 = new.f_int1;
10512
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10513
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10514
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10516
# check trigger-1 success: 1
10517
DROP TRIGGER trg_1;
10518
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10519
f_int2 = CAST(f_char1 AS SIGNED INT),
10520
f_charbig = 'just inserted'
10521
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10523
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10524
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10525
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10526
'just inserted' FROM t0_template
10527
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10528
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10530
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10531
f_charbig = 'updated by trigger'
10532
WHERE f_int1 = new.f_int1;
10534
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10535
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10536
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10538
# check trigger-2 success: 1
10539
DROP TRIGGER trg_1;
10540
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10541
f_int2 = CAST(f_char1 AS SIGNED INT),
10542
f_charbig = 'just inserted'
10543
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10545
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10546
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10547
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10548
'just inserted' FROM t0_template
10549
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10550
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10552
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10553
f_charbig = 'updated by trigger'
10554
WHERE f_int1 = new.f_int1;
10556
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10557
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10559
# check trigger-3 success: 1
10560
DROP TRIGGER trg_1;
10561
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10562
f_int2 = CAST(f_char1 AS SIGNED INT),
10563
f_charbig = 'just inserted'
10564
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10566
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10567
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10568
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10569
'just inserted' FROM t0_template
10570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10571
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10573
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10574
f_charbig = 'updated by trigger'
10575
WHERE f_int1 = - old.f_int1;
10577
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10578
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10580
# check trigger-4 success: 1
10581
DROP TRIGGER trg_1;
10582
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10583
f_int2 = CAST(f_char1 AS SIGNED INT),
10584
f_charbig = 'just inserted'
10585
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10587
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10588
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10589
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10590
'just inserted' FROM t0_template
10591
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10592
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10594
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10595
f_charbig = 'updated by trigger'
10596
WHERE f_int1 = new.f_int1;
10598
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10599
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10601
# check trigger-5 success: 1
10602
DROP TRIGGER trg_1;
10603
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10604
f_int2 = CAST(f_char1 AS SIGNED INT),
10605
f_charbig = 'just inserted'
10606
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10608
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10609
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10610
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10611
'just inserted' FROM t0_template
10612
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10613
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10615
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10616
f_charbig = 'updated by trigger'
10617
WHERE f_int1 = - old.f_int1;
10619
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10620
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10622
# check trigger-6 success: 1
10623
DROP TRIGGER trg_1;
10624
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10625
f_int2 = CAST(f_char1 AS SIGNED INT),
10626
f_charbig = 'just inserted'
10627
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10629
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10630
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10631
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10632
'just inserted' FROM t0_template
10633
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10634
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10636
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10637
f_charbig = 'updated by trigger'
10638
WHERE f_int1 = - old.f_int1;
10641
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10643
# check trigger-7 success: 1
10644
DROP TRIGGER trg_1;
10645
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10646
f_int2 = CAST(f_char1 AS SIGNED INT),
10647
f_charbig = 'just inserted'
10648
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10650
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10651
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10652
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10653
'just inserted' FROM t0_template
10654
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10655
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10657
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10658
f_charbig = 'updated by trigger'
10659
WHERE f_int1 = - old.f_int1;
10662
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10664
# check trigger-8 success: 1
10665
DROP TRIGGER trg_1;
10666
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10667
f_int2 = CAST(f_char1 AS SIGNED INT),
10668
f_charbig = 'just inserted'
10669
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10671
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10674
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10676
SET new.f_int1 = old.f_int1 + @max_row,
10677
new.f_int2 = old.f_int2 - @max_row,
10678
new.f_charbig = '####updated per update trigger####';
10681
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10682
f_charbig = '####updated per update statement itself####';
10684
# check trigger-9 success: 1
10685
DROP TRIGGER trg_2;
10686
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10687
f_int2 = CAST(f_char1 AS SIGNED INT),
10688
f_charbig = CONCAT('===',f_char1,'===');
10689
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10691
SET new.f_int1 = new.f_int1 + @max_row,
10692
new.f_int2 = new.f_int2 - @max_row,
10693
new.f_charbig = '####updated per update trigger####';
10696
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10697
f_charbig = '####updated per update statement itself####';
10699
# check trigger-10 success: 1
10700
DROP TRIGGER trg_2;
10701
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10702
f_int2 = CAST(f_char1 AS SIGNED INT),
10703
f_charbig = CONCAT('===',f_char1,'===');
10704
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10706
SET new.f_int1 = @my_max1 + @counter,
10707
new.f_int2 = @my_min2 - @counter,
10708
new.f_charbig = '####updated per insert trigger####';
10709
SET @counter = @counter + 1;
10712
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10713
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10714
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10715
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10716
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10718
DROP TRIGGER trg_3;
10720
# check trigger-11 success: 1
10722
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10723
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10724
AND f_charbig = '####updated per insert trigger####';
10725
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10727
SET new.f_int1 = @my_max1 + @counter,
10728
new.f_int2 = @my_min2 - @counter,
10729
new.f_charbig = '####updated per insert trigger####';
10730
SET @counter = @counter + 1;
10733
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10734
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10735
SELECT CAST(f_int1 AS CHAR),
10736
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10737
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10739
DROP TRIGGER trg_3;
10741
# check trigger-12 success: 1
10743
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10744
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10745
AND f_charbig = '####updated per insert trigger####';
10747
Table Op Msg_type Msg_text
10748
test.t1 analyze note The storage engine for the table doesn't support analyze
10749
CHECK TABLE t1 EXTENDED;
10750
Table Op Msg_type Msg_text
10751
test.t1 check note The storage engine for the table doesn't support check
10752
CHECKSUM TABLE t1 EXTENDED;
10754
test.t1 <some_value>
10756
Table Op Msg_type Msg_text
10757
test.t1 optimize note The storage engine for the table doesn't support optimize
10758
# check layout success: 1
10759
REPAIR TABLE t1 EXTENDED;
10760
Table Op Msg_type Msg_text
10761
test.t1 repair note The storage engine for the table doesn't support repair
10762
# check layout success: 1
10765
# check TRUNCATE success: 1
10766
# check layout success: 1
10767
# End usability test (inc/partition_check.inc)
10769
#------------------------------------------------------------------------
10770
# 2.2 Partitioning function contains two columns (f_int1,f_int2)
10771
#------------------------------------------------------------------------
10772
# 2.2.1 DROP PRIMARY KEY consisting of two columns
10773
DROP TABLE IF EXISTS t1;
10779
f_charbig VARCHAR(1000)
10780
, PRIMARY KEY(f_int1,f_int2)
10782
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
10783
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10784
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10785
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10786
ALTER TABLE t1 DROP PRIMARY KEY;
10787
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10788
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10789
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10790
# Start usability test (inc/partition_check.inc)
10792
SHOW CREATE TABLE t1;
10794
t1 CREATE TABLE `t1` (
10795
`f_int1` int(11) NOT NULL DEFAULT '0',
10796
`f_int2` int(11) NOT NULL DEFAULT '0',
10797
`f_char1` char(20) DEFAULT NULL,
10798
`f_char2` char(20) DEFAULT NULL,
10799
`f_charbig` varchar(1000) DEFAULT NULL
10800
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
10802
# check prerequisites-1 success: 1
10803
# check COUNT(*) success: 1
10804
# check MIN/MAX(f_int1) success: 1
10805
# check MIN/MAX(f_int2) success: 1
10806
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10807
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10808
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10809
WHERE f_int1 IN (2,3);
10810
# check prerequisites-3 success: 1
10811
DELETE FROM t1 WHERE f_charbig = 'delete me';
10812
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
10813
# check read via f_int1 success: 1
10814
# check read via f_int2 success: 1
10816
# check multiple-1 success: 1
10817
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10819
# check multiple-2 success: 1
10820
INSERT INTO t1 SELECT * FROM t0_template
10821
WHERE MOD(f_int1,3) = 0;
10823
# check multiple-3 success: 1
10824
UPDATE t1 SET f_int1 = f_int1 + @max_row
10825
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10826
AND @max_row_div2 + @max_row_div4;
10828
# check multiple-4 success: 1
10830
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10831
AND @max_row_div2 + @max_row_div4 + @max_row;
10833
# check multiple-5 success: 1
10834
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10836
SET f_int1 = @cur_value , f_int2 = @cur_value,
10837
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10838
f_charbig = '#SINGLE#';
10840
# check single-1 success: 1
10841
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10843
SET f_int1 = @cur_value , f_int2 = @cur_value,
10844
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10845
f_charbig = '#SINGLE#';
10847
# check single-2 success: 1
10848
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10849
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10850
UPDATE t1 SET f_int1 = @cur_value2
10851
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10853
# check single-3 success: 1
10854
SET @cur_value1= -1;
10855
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10856
UPDATE t1 SET f_int1 = @cur_value1
10857
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10859
# check single-4 success: 1
10860
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10861
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10863
# check single-5 success: 1
10864
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10866
# check single-6 success: 1
10867
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10869
# check single-7 success: 1
10870
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10871
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10872
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10873
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10874
f_charbig = '#NULL#';
10876
SET f_int1 = NULL , f_int2 = -@max_row,
10877
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10878
f_charbig = '#NULL#';
10879
ERROR 23000: Column 'f_int1' cannot be null
10880
# check null success: 1
10882
WHERE f_int1 = 0 AND f_int2 = 0
10883
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10884
AND f_charbig = '#NULL#';
10886
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10887
SELECT f_int1, f_int1, '', '', 'was inserted'
10888
FROM t0_template source_tab
10889
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10891
# check transactions-1 success: 1
10894
# check transactions-2 success: 1
10897
# check transactions-3 success: 1
10898
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10902
# check transactions-4 success: 1
10903
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10904
SELECT f_int1, f_int1, '', '', 'was inserted'
10905
FROM t0_template source_tab
10906
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10908
# check transactions-5 success: 1
10911
# check transactions-6 success: 1
10912
# INFO: Storage engine used for t1 seems to be transactional.
10915
# check transactions-7 success: 1
10916
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10918
SET @@session.sql_mode = 'traditional';
10919
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10920
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10921
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10922
'', '', 'was inserted' FROM t0_template
10923
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10924
ERROR 22012: Division by 0
10927
# check transactions-8 success: 1
10928
# INFO: Storage engine used for t1 seems to be able to revert
10929
# changes made by the failing statement.
10930
SET @@session.sql_mode = '';
10932
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10934
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10936
# check special-1 success: 1
10937
UPDATE t1 SET f_charbig = '';
10939
# check special-2 success: 1
10940
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10941
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10942
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10943
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10944
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10945
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10946
'just inserted' FROM t0_template
10947
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10948
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10950
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10951
f_charbig = 'updated by trigger'
10952
WHERE f_int1 = new.f_int1;
10954
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10955
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10956
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10958
# check trigger-1 success: 1
10959
DROP TRIGGER trg_1;
10960
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10961
f_int2 = CAST(f_char1 AS SIGNED INT),
10962
f_charbig = 'just inserted'
10963
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10965
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10966
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10967
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10968
'just inserted' FROM t0_template
10969
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10970
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10972
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10973
f_charbig = 'updated by trigger'
10974
WHERE f_int1 = new.f_int1;
10976
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10977
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10978
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10980
# check trigger-2 success: 1
10981
DROP TRIGGER trg_1;
10982
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10983
f_int2 = CAST(f_char1 AS SIGNED INT),
10984
f_charbig = 'just inserted'
10985
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10987
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10988
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10989
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10990
'just inserted' FROM t0_template
10991
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10992
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10994
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10995
f_charbig = 'updated by trigger'
10996
WHERE f_int1 = new.f_int1;
10998
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10999
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11001
# check trigger-3 success: 1
11002
DROP TRIGGER trg_1;
11003
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11004
f_int2 = CAST(f_char1 AS SIGNED INT),
11005
f_charbig = 'just inserted'
11006
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11008
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11009
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11010
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11011
'just inserted' FROM t0_template
11012
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11013
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11015
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11016
f_charbig = 'updated by trigger'
11017
WHERE f_int1 = - old.f_int1;
11019
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11020
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11022
# check trigger-4 success: 1
11023
DROP TRIGGER trg_1;
11024
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11025
f_int2 = CAST(f_char1 AS SIGNED INT),
11026
f_charbig = 'just inserted'
11027
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11029
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11030
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11031
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11032
'just inserted' FROM t0_template
11033
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11034
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11036
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11037
f_charbig = 'updated by trigger'
11038
WHERE f_int1 = new.f_int1;
11040
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11041
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11043
# check trigger-5 success: 1
11044
DROP TRIGGER trg_1;
11045
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11046
f_int2 = CAST(f_char1 AS SIGNED INT),
11047
f_charbig = 'just inserted'
11048
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11050
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11051
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11052
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11053
'just inserted' FROM t0_template
11054
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11055
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11057
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11058
f_charbig = 'updated by trigger'
11059
WHERE f_int1 = - old.f_int1;
11061
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11062
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11064
# check trigger-6 success: 1
11065
DROP TRIGGER trg_1;
11066
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11067
f_int2 = CAST(f_char1 AS SIGNED INT),
11068
f_charbig = 'just inserted'
11069
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11071
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11072
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11073
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11074
'just inserted' FROM t0_template
11075
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11076
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11078
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11079
f_charbig = 'updated by trigger'
11080
WHERE f_int1 = - old.f_int1;
11083
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11085
# check trigger-7 success: 1
11086
DROP TRIGGER trg_1;
11087
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11088
f_int2 = CAST(f_char1 AS SIGNED INT),
11089
f_charbig = 'just inserted'
11090
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11092
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11093
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11094
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11095
'just inserted' FROM t0_template
11096
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11097
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11099
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11100
f_charbig = 'updated by trigger'
11101
WHERE f_int1 = - old.f_int1;
11104
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11106
# check trigger-8 success: 1
11107
DROP TRIGGER trg_1;
11108
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11109
f_int2 = CAST(f_char1 AS SIGNED INT),
11110
f_charbig = 'just inserted'
11111
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11113
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11115
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11116
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11118
SET new.f_int1 = old.f_int1 + @max_row,
11119
new.f_int2 = old.f_int2 - @max_row,
11120
new.f_charbig = '####updated per update trigger####';
11123
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11124
f_charbig = '####updated per update statement itself####';
11126
# check trigger-9 success: 1
11127
DROP TRIGGER trg_2;
11128
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11129
f_int2 = CAST(f_char1 AS SIGNED INT),
11130
f_charbig = CONCAT('===',f_char1,'===');
11131
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11133
SET new.f_int1 = new.f_int1 + @max_row,
11134
new.f_int2 = new.f_int2 - @max_row,
11135
new.f_charbig = '####updated per update trigger####';
11138
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11139
f_charbig = '####updated per update statement itself####';
11141
# check trigger-10 success: 1
11142
DROP TRIGGER trg_2;
11143
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11144
f_int2 = CAST(f_char1 AS SIGNED INT),
11145
f_charbig = CONCAT('===',f_char1,'===');
11146
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11148
SET new.f_int1 = @my_max1 + @counter,
11149
new.f_int2 = @my_min2 - @counter,
11150
new.f_charbig = '####updated per insert trigger####';
11151
SET @counter = @counter + 1;
11154
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11155
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11156
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11157
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11158
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11160
DROP TRIGGER trg_3;
11162
# check trigger-11 success: 1
11164
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11165
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11166
AND f_charbig = '####updated per insert trigger####';
11167
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11169
SET new.f_int1 = @my_max1 + @counter,
11170
new.f_int2 = @my_min2 - @counter,
11171
new.f_charbig = '####updated per insert trigger####';
11172
SET @counter = @counter + 1;
11175
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11176
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11177
SELECT CAST(f_int1 AS CHAR),
11178
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11179
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11181
DROP TRIGGER trg_3;
11183
# check trigger-12 success: 1
11185
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11186
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11187
AND f_charbig = '####updated per insert trigger####';
11189
Table Op Msg_type Msg_text
11190
test.t1 analyze note The storage engine for the table doesn't support analyze
11191
CHECK TABLE t1 EXTENDED;
11192
Table Op Msg_type Msg_text
11193
test.t1 check note The storage engine for the table doesn't support check
11194
CHECKSUM TABLE t1 EXTENDED;
11196
test.t1 <some_value>
11198
Table Op Msg_type Msg_text
11199
test.t1 optimize note The storage engine for the table doesn't support optimize
11200
# check layout success: 1
11201
REPAIR TABLE t1 EXTENDED;
11202
Table Op Msg_type Msg_text
11203
test.t1 repair note The storage engine for the table doesn't support repair
11204
# check layout success: 1
11207
# check TRUNCATE success: 1
11208
# check layout success: 1
11209
# End usability test (inc/partition_check.inc)
11216
f_charbig VARCHAR(1000)
11217
, PRIMARY KEY(f_int1,f_int2)
11219
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
11220
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11221
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11222
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11223
ALTER TABLE t1 DROP PRIMARY KEY;
11224
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11225
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11226
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11227
# Start usability test (inc/partition_check.inc)
11229
SHOW CREATE TABLE t1;
11231
t1 CREATE TABLE `t1` (
11232
`f_int1` int(11) NOT NULL DEFAULT '0',
11233
`f_int2` int(11) NOT NULL DEFAULT '0',
11234
`f_char1` char(20) DEFAULT NULL,
11235
`f_char2` char(20) DEFAULT NULL,
11236
`f_charbig` varchar(1000) DEFAULT NULL
11237
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
11239
# check prerequisites-1 success: 1
11240
# check COUNT(*) success: 1
11241
# check MIN/MAX(f_int1) success: 1
11242
# check MIN/MAX(f_int2) success: 1
11243
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11244
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11245
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11246
WHERE f_int1 IN (2,3);
11247
# check prerequisites-3 success: 1
11248
DELETE FROM t1 WHERE f_charbig = 'delete me';
11249
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
11250
# check read via f_int1 success: 1
11251
# check read via f_int2 success: 1
11253
# check multiple-1 success: 1
11254
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11256
# check multiple-2 success: 1
11257
INSERT INTO t1 SELECT * FROM t0_template
11258
WHERE MOD(f_int1,3) = 0;
11260
# check multiple-3 success: 1
11261
UPDATE t1 SET f_int1 = f_int1 + @max_row
11262
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11263
AND @max_row_div2 + @max_row_div4;
11265
# check multiple-4 success: 1
11267
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11268
AND @max_row_div2 + @max_row_div4 + @max_row;
11270
# check multiple-5 success: 1
11271
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11273
SET f_int1 = @cur_value , f_int2 = @cur_value,
11274
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11275
f_charbig = '#SINGLE#';
11277
# check single-1 success: 1
11278
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11280
SET f_int1 = @cur_value , f_int2 = @cur_value,
11281
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11282
f_charbig = '#SINGLE#';
11284
# check single-2 success: 1
11285
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11286
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11287
UPDATE t1 SET f_int1 = @cur_value2
11288
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11290
# check single-3 success: 1
11291
SET @cur_value1= -1;
11292
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11293
UPDATE t1 SET f_int1 = @cur_value1
11294
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11296
# check single-4 success: 1
11297
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11298
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11300
# check single-5 success: 1
11301
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11303
# check single-6 success: 1
11304
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11306
# check single-7 success: 1
11307
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11308
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11309
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11310
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11311
f_charbig = '#NULL#';
11313
SET f_int1 = NULL , f_int2 = -@max_row,
11314
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11315
f_charbig = '#NULL#';
11316
ERROR 23000: Column 'f_int1' cannot be null
11317
# check null success: 1
11319
WHERE f_int1 = 0 AND f_int2 = 0
11320
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11321
AND f_charbig = '#NULL#';
11323
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11324
SELECT f_int1, f_int1, '', '', 'was inserted'
11325
FROM t0_template source_tab
11326
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11328
# check transactions-1 success: 1
11331
# check transactions-2 success: 1
11334
# check transactions-3 success: 1
11335
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11339
# check transactions-4 success: 1
11340
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11341
SELECT f_int1, f_int1, '', '', 'was inserted'
11342
FROM t0_template source_tab
11343
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11345
# check transactions-5 success: 1
11348
# check transactions-6 success: 1
11349
# INFO: Storage engine used for t1 seems to be transactional.
11352
# check transactions-7 success: 1
11353
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11355
SET @@session.sql_mode = 'traditional';
11356
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11357
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11358
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11359
'', '', 'was inserted' FROM t0_template
11360
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11361
ERROR 22012: Division by 0
11364
# check transactions-8 success: 1
11365
# INFO: Storage engine used for t1 seems to be able to revert
11366
# changes made by the failing statement.
11367
SET @@session.sql_mode = '';
11369
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11371
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11373
# check special-1 success: 1
11374
UPDATE t1 SET f_charbig = '';
11376
# check special-2 success: 1
11377
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11378
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11379
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11381
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11382
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11383
'just inserted' FROM t0_template
11384
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11385
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11387
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11388
f_charbig = 'updated by trigger'
11389
WHERE f_int1 = new.f_int1;
11391
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11392
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11393
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11395
# check trigger-1 success: 1
11396
DROP TRIGGER trg_1;
11397
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11398
f_int2 = CAST(f_char1 AS SIGNED INT),
11399
f_charbig = 'just inserted'
11400
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11402
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11403
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11404
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11405
'just inserted' FROM t0_template
11406
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11407
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11409
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11410
f_charbig = 'updated by trigger'
11411
WHERE f_int1 = new.f_int1;
11413
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11414
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11415
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11417
# check trigger-2 success: 1
11418
DROP TRIGGER trg_1;
11419
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11420
f_int2 = CAST(f_char1 AS SIGNED INT),
11421
f_charbig = 'just inserted'
11422
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11424
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11425
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11426
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11427
'just inserted' FROM t0_template
11428
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11429
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11431
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11432
f_charbig = 'updated by trigger'
11433
WHERE f_int1 = new.f_int1;
11435
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11436
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11438
# check trigger-3 success: 1
11439
DROP TRIGGER trg_1;
11440
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11441
f_int2 = CAST(f_char1 AS SIGNED INT),
11442
f_charbig = 'just inserted'
11443
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11445
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11446
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11447
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11448
'just inserted' FROM t0_template
11449
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11450
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11452
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11453
f_charbig = 'updated by trigger'
11454
WHERE f_int1 = - old.f_int1;
11456
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11457
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11459
# check trigger-4 success: 1
11460
DROP TRIGGER trg_1;
11461
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11462
f_int2 = CAST(f_char1 AS SIGNED INT),
11463
f_charbig = 'just inserted'
11464
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11466
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11467
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11468
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11469
'just inserted' FROM t0_template
11470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11471
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11473
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11474
f_charbig = 'updated by trigger'
11475
WHERE f_int1 = new.f_int1;
11477
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11478
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11480
# check trigger-5 success: 1
11481
DROP TRIGGER trg_1;
11482
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11483
f_int2 = CAST(f_char1 AS SIGNED INT),
11484
f_charbig = 'just inserted'
11485
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11487
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11488
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11489
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11490
'just inserted' FROM t0_template
11491
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11492
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11494
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11495
f_charbig = 'updated by trigger'
11496
WHERE f_int1 = - old.f_int1;
11498
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11499
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11501
# check trigger-6 success: 1
11502
DROP TRIGGER trg_1;
11503
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11504
f_int2 = CAST(f_char1 AS SIGNED INT),
11505
f_charbig = 'just inserted'
11506
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11508
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11509
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11510
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11511
'just inserted' FROM t0_template
11512
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11513
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11515
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11516
f_charbig = 'updated by trigger'
11517
WHERE f_int1 = - old.f_int1;
11520
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11522
# check trigger-7 success: 1
11523
DROP TRIGGER trg_1;
11524
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11525
f_int2 = CAST(f_char1 AS SIGNED INT),
11526
f_charbig = 'just inserted'
11527
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11529
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11530
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11531
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11532
'just inserted' FROM t0_template
11533
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11534
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11536
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11537
f_charbig = 'updated by trigger'
11538
WHERE f_int1 = - old.f_int1;
11541
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11543
# check trigger-8 success: 1
11544
DROP TRIGGER trg_1;
11545
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11546
f_int2 = CAST(f_char1 AS SIGNED INT),
11547
f_charbig = 'just inserted'
11548
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11550
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11552
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11553
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11555
SET new.f_int1 = old.f_int1 + @max_row,
11556
new.f_int2 = old.f_int2 - @max_row,
11557
new.f_charbig = '####updated per update trigger####';
11560
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11561
f_charbig = '####updated per update statement itself####';
11563
# check trigger-9 success: 1
11564
DROP TRIGGER trg_2;
11565
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11566
f_int2 = CAST(f_char1 AS SIGNED INT),
11567
f_charbig = CONCAT('===',f_char1,'===');
11568
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11570
SET new.f_int1 = new.f_int1 + @max_row,
11571
new.f_int2 = new.f_int2 - @max_row,
11572
new.f_charbig = '####updated per update trigger####';
11575
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11576
f_charbig = '####updated per update statement itself####';
11578
# check trigger-10 success: 1
11579
DROP TRIGGER trg_2;
11580
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11581
f_int2 = CAST(f_char1 AS SIGNED INT),
11582
f_charbig = CONCAT('===',f_char1,'===');
11583
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11585
SET new.f_int1 = @my_max1 + @counter,
11586
new.f_int2 = @my_min2 - @counter,
11587
new.f_charbig = '####updated per insert trigger####';
11588
SET @counter = @counter + 1;
11591
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11592
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11593
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11594
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11595
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11597
DROP TRIGGER trg_3;
11599
# check trigger-11 success: 1
11601
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11602
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11603
AND f_charbig = '####updated per insert trigger####';
11604
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11606
SET new.f_int1 = @my_max1 + @counter,
11607
new.f_int2 = @my_min2 - @counter,
11608
new.f_charbig = '####updated per insert trigger####';
11609
SET @counter = @counter + 1;
11612
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11613
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11614
SELECT CAST(f_int1 AS CHAR),
11615
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11616
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11618
DROP TRIGGER trg_3;
11620
# check trigger-12 success: 1
11622
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11623
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11624
AND f_charbig = '####updated per insert trigger####';
11626
Table Op Msg_type Msg_text
11627
test.t1 analyze note The storage engine for the table doesn't support analyze
11628
CHECK TABLE t1 EXTENDED;
11629
Table Op Msg_type Msg_text
11630
test.t1 check note The storage engine for the table doesn't support check
11631
CHECKSUM TABLE t1 EXTENDED;
11633
test.t1 <some_value>
11635
Table Op Msg_type Msg_text
11636
test.t1 optimize note The storage engine for the table doesn't support optimize
11637
# check layout success: 1
11638
REPAIR TABLE t1 EXTENDED;
11639
Table Op Msg_type Msg_text
11640
test.t1 repair note The storage engine for the table doesn't support repair
11641
# check layout success: 1
11644
# check TRUNCATE success: 1
11645
# check layout success: 1
11646
# End usability test (inc/partition_check.inc)
11653
f_charbig VARCHAR(1000)
11654
, PRIMARY KEY(f_int1,f_int2)
11656
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
11657
(PARTITION part_3 VALUES IN (-3),
11658
PARTITION part_2 VALUES IN (-2),
11659
PARTITION part_1 VALUES IN (-1),
11660
PARTITION part_N VALUES IN (NULL),
11661
PARTITION part0 VALUES IN (0),
11662
PARTITION part1 VALUES IN (1),
11663
PARTITION part2 VALUES IN (2),
11664
PARTITION part3 VALUES IN (3));
11665
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11666
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11667
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11668
ALTER TABLE t1 DROP PRIMARY KEY;
11669
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11670
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11671
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11672
# Start usability test (inc/partition_check.inc)
11674
SHOW CREATE TABLE t1;
11676
t1 CREATE TABLE `t1` (
11677
`f_int1` int(11) NOT NULL DEFAULT '0',
11678
`f_int2` int(11) NOT NULL DEFAULT '0',
11679
`f_char1` char(20) DEFAULT NULL,
11680
`f_char2` char(20) DEFAULT NULL,
11681
`f_charbig` varchar(1000) DEFAULT NULL
11682
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,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) */
11684
# check prerequisites-1 success: 1
11685
# check COUNT(*) success: 1
11686
# check MIN/MAX(f_int1) success: 1
11687
# check MIN/MAX(f_int2) success: 1
11688
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11689
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11690
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11691
WHERE f_int1 IN (2,3);
11692
# check prerequisites-3 success: 1
11693
DELETE FROM t1 WHERE f_charbig = 'delete me';
11694
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
11695
# check read via f_int1 success: 1
11696
# check read via f_int2 success: 1
11698
# check multiple-1 success: 1
11699
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11701
# check multiple-2 success: 1
11702
INSERT INTO t1 SELECT * FROM t0_template
11703
WHERE MOD(f_int1,3) = 0;
11705
# check multiple-3 success: 1
11706
UPDATE t1 SET f_int1 = f_int1 + @max_row
11707
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11708
AND @max_row_div2 + @max_row_div4;
11710
# check multiple-4 success: 1
11712
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11713
AND @max_row_div2 + @max_row_div4 + @max_row;
11715
# check multiple-5 success: 1
11716
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11718
SET f_int1 = @cur_value , f_int2 = @cur_value,
11719
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11720
f_charbig = '#SINGLE#';
11722
# check single-1 success: 1
11723
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11725
SET f_int1 = @cur_value , f_int2 = @cur_value,
11726
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11727
f_charbig = '#SINGLE#';
11729
# check single-2 success: 1
11730
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11731
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11732
UPDATE t1 SET f_int1 = @cur_value2
11733
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11735
# check single-3 success: 1
11736
SET @cur_value1= -1;
11737
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11738
UPDATE t1 SET f_int1 = @cur_value1
11739
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11741
# check single-4 success: 1
11742
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11743
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11745
# check single-5 success: 1
11746
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11748
# check single-6 success: 1
11749
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11751
# check single-7 success: 1
11752
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11753
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11754
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11755
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11756
f_charbig = '#NULL#';
11758
SET f_int1 = NULL , f_int2 = -@max_row,
11759
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11760
f_charbig = '#NULL#';
11761
ERROR 23000: Column 'f_int1' cannot be null
11762
# check null success: 1
11764
WHERE f_int1 = 0 AND f_int2 = 0
11765
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11766
AND f_charbig = '#NULL#';
11768
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11769
SELECT f_int1, f_int1, '', '', 'was inserted'
11770
FROM t0_template source_tab
11771
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11773
# check transactions-1 success: 1
11776
# check transactions-2 success: 1
11779
# check transactions-3 success: 1
11780
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11784
# check transactions-4 success: 1
11785
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11786
SELECT f_int1, f_int1, '', '', 'was inserted'
11787
FROM t0_template source_tab
11788
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11790
# check transactions-5 success: 1
11793
# check transactions-6 success: 1
11794
# INFO: Storage engine used for t1 seems to be transactional.
11797
# check transactions-7 success: 1
11798
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11800
SET @@session.sql_mode = 'traditional';
11801
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11802
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11803
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11804
'', '', 'was inserted' FROM t0_template
11805
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11806
ERROR 22012: Division by 0
11809
# check transactions-8 success: 1
11810
# INFO: Storage engine used for t1 seems to be able to revert
11811
# changes made by the failing statement.
11812
SET @@session.sql_mode = '';
11814
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11816
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11818
# check special-1 success: 1
11819
UPDATE t1 SET f_charbig = '';
11821
# check special-2 success: 1
11822
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11823
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11824
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11825
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11826
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11827
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11828
'just inserted' FROM t0_template
11829
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11830
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11832
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11833
f_charbig = 'updated by trigger'
11834
WHERE f_int1 = new.f_int1;
11836
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11837
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11838
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11840
# check trigger-1 success: 1
11841
DROP TRIGGER trg_1;
11842
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11843
f_int2 = CAST(f_char1 AS SIGNED INT),
11844
f_charbig = 'just inserted'
11845
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11847
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11848
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11849
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11850
'just inserted' FROM t0_template
11851
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11852
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11854
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11855
f_charbig = 'updated by trigger'
11856
WHERE f_int1 = new.f_int1;
11858
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11859
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11860
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11862
# check trigger-2 success: 1
11863
DROP TRIGGER trg_1;
11864
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11865
f_int2 = CAST(f_char1 AS SIGNED INT),
11866
f_charbig = 'just inserted'
11867
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11869
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11870
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11871
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11872
'just inserted' FROM t0_template
11873
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11874
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11876
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11877
f_charbig = 'updated by trigger'
11878
WHERE f_int1 = new.f_int1;
11880
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11881
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11883
# check trigger-3 success: 1
11884
DROP TRIGGER trg_1;
11885
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11886
f_int2 = CAST(f_char1 AS SIGNED INT),
11887
f_charbig = 'just inserted'
11888
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11890
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11891
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11892
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11893
'just inserted' FROM t0_template
11894
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11895
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11897
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11898
f_charbig = 'updated by trigger'
11899
WHERE f_int1 = - old.f_int1;
11901
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11902
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11904
# check trigger-4 success: 1
11905
DROP TRIGGER trg_1;
11906
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11907
f_int2 = CAST(f_char1 AS SIGNED INT),
11908
f_charbig = 'just inserted'
11909
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11911
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11912
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11913
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11914
'just inserted' FROM t0_template
11915
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11916
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11918
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11919
f_charbig = 'updated by trigger'
11920
WHERE f_int1 = new.f_int1;
11922
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11923
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11925
# check trigger-5 success: 1
11926
DROP TRIGGER trg_1;
11927
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11928
f_int2 = CAST(f_char1 AS SIGNED INT),
11929
f_charbig = 'just inserted'
11930
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11932
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11933
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11934
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11935
'just inserted' FROM t0_template
11936
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11937
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11939
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11940
f_charbig = 'updated by trigger'
11941
WHERE f_int1 = - old.f_int1;
11943
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11944
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11946
# check trigger-6 success: 1
11947
DROP TRIGGER trg_1;
11948
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11949
f_int2 = CAST(f_char1 AS SIGNED INT),
11950
f_charbig = 'just inserted'
11951
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11953
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11954
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11955
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11956
'just inserted' FROM t0_template
11957
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11958
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11960
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11961
f_charbig = 'updated by trigger'
11962
WHERE f_int1 = - old.f_int1;
11965
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11967
# check trigger-7 success: 1
11968
DROP TRIGGER trg_1;
11969
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11970
f_int2 = CAST(f_char1 AS SIGNED INT),
11971
f_charbig = 'just inserted'
11972
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11974
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11975
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11976
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11977
'just inserted' FROM t0_template
11978
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11979
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11981
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11982
f_charbig = 'updated by trigger'
11983
WHERE f_int1 = - old.f_int1;
11986
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11988
# check trigger-8 success: 1
11989
DROP TRIGGER trg_1;
11990
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11991
f_int2 = CAST(f_char1 AS SIGNED INT),
11992
f_charbig = 'just inserted'
11993
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11995
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11997
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11998
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12000
SET new.f_int1 = old.f_int1 + @max_row,
12001
new.f_int2 = old.f_int2 - @max_row,
12002
new.f_charbig = '####updated per update trigger####';
12005
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12006
f_charbig = '####updated per update statement itself####';
12008
# check trigger-9 success: 1
12009
DROP TRIGGER trg_2;
12010
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12011
f_int2 = CAST(f_char1 AS SIGNED INT),
12012
f_charbig = CONCAT('===',f_char1,'===');
12013
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12015
SET new.f_int1 = new.f_int1 + @max_row,
12016
new.f_int2 = new.f_int2 - @max_row,
12017
new.f_charbig = '####updated per update trigger####';
12020
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12021
f_charbig = '####updated per update statement itself####';
12023
# check trigger-10 success: 1
12024
DROP TRIGGER trg_2;
12025
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12026
f_int2 = CAST(f_char1 AS SIGNED INT),
12027
f_charbig = CONCAT('===',f_char1,'===');
12028
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12030
SET new.f_int1 = @my_max1 + @counter,
12031
new.f_int2 = @my_min2 - @counter,
12032
new.f_charbig = '####updated per insert trigger####';
12033
SET @counter = @counter + 1;
12036
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12037
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12038
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12039
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12040
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12042
DROP TRIGGER trg_3;
12044
# check trigger-11 success: 1
12046
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12047
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12048
AND f_charbig = '####updated per insert trigger####';
12049
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12051
SET new.f_int1 = @my_max1 + @counter,
12052
new.f_int2 = @my_min2 - @counter,
12053
new.f_charbig = '####updated per insert trigger####';
12054
SET @counter = @counter + 1;
12057
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12058
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12059
SELECT CAST(f_int1 AS CHAR),
12060
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12061
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12063
DROP TRIGGER trg_3;
12065
# check trigger-12 success: 1
12067
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12068
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12069
AND f_charbig = '####updated per insert trigger####';
12071
Table Op Msg_type Msg_text
12072
test.t1 analyze note The storage engine for the table doesn't support analyze
12073
CHECK TABLE t1 EXTENDED;
12074
Table Op Msg_type Msg_text
12075
test.t1 check note The storage engine for the table doesn't support check
12076
CHECKSUM TABLE t1 EXTENDED;
12078
test.t1 <some_value>
12080
Table Op Msg_type Msg_text
12081
test.t1 optimize note The storage engine for the table doesn't support optimize
12082
# check layout success: 1
12083
REPAIR TABLE t1 EXTENDED;
12084
Table Op Msg_type Msg_text
12085
test.t1 repair note The storage engine for the table doesn't support repair
12086
# check layout success: 1
12089
# check TRUNCATE success: 1
12090
# check layout success: 1
12091
# End usability test (inc/partition_check.inc)
12098
f_charbig VARCHAR(1000)
12099
, PRIMARY KEY(f_int1,f_int2)
12101
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
12102
(PARTITION parta VALUES LESS THAN (0),
12103
PARTITION partb VALUES LESS THAN (5),
12104
PARTITION partc VALUES LESS THAN (10),
12105
PARTITION partd VALUES LESS THAN (10 + 5),
12106
PARTITION parte VALUES LESS THAN (20),
12107
PARTITION partf VALUES LESS THAN (2147483646));
12108
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12109
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12110
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12111
ALTER TABLE t1 DROP PRIMARY KEY;
12112
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12113
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12114
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12115
# Start usability test (inc/partition_check.inc)
12117
SHOW CREATE TABLE t1;
12119
t1 CREATE TABLE `t1` (
12120
`f_int1` int(11) NOT NULL DEFAULT '0',
12121
`f_int2` int(11) NOT NULL DEFAULT '0',
12122
`f_char1` char(20) DEFAULT NULL,
12123
`f_char2` char(20) DEFAULT NULL,
12124
`f_charbig` varchar(1000) DEFAULT NULL
12125
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
12127
# check prerequisites-1 success: 1
12128
# check COUNT(*) success: 1
12129
# check MIN/MAX(f_int1) success: 1
12130
# check MIN/MAX(f_int2) success: 1
12131
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12132
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12133
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12134
WHERE f_int1 IN (2,3);
12135
# check prerequisites-3 success: 1
12136
DELETE FROM t1 WHERE f_charbig = 'delete me';
12137
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
12138
# check read via f_int1 success: 1
12139
# check read via f_int2 success: 1
12141
# check multiple-1 success: 1
12142
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12144
# check multiple-2 success: 1
12145
INSERT INTO t1 SELECT * FROM t0_template
12146
WHERE MOD(f_int1,3) = 0;
12148
# check multiple-3 success: 1
12149
UPDATE t1 SET f_int1 = f_int1 + @max_row
12150
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12151
AND @max_row_div2 + @max_row_div4;
12153
# check multiple-4 success: 1
12155
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12156
AND @max_row_div2 + @max_row_div4 + @max_row;
12158
# check multiple-5 success: 1
12159
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12161
SET f_int1 = @cur_value , f_int2 = @cur_value,
12162
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12163
f_charbig = '#SINGLE#';
12165
# check single-1 success: 1
12166
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12168
SET f_int1 = @cur_value , f_int2 = @cur_value,
12169
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12170
f_charbig = '#SINGLE#';
12172
# check single-2 success: 1
12173
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12174
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12175
UPDATE t1 SET f_int1 = @cur_value2
12176
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12178
# check single-3 success: 1
12179
SET @cur_value1= -1;
12180
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12181
UPDATE t1 SET f_int1 = @cur_value1
12182
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12184
# check single-4 success: 1
12185
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12186
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12188
# check single-5 success: 1
12189
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12191
# check single-6 success: 1
12192
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12193
ERROR HY000: Table has no partition for value 2147483647
12194
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12195
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12196
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12197
f_charbig = '#NULL#';
12199
SET f_int1 = NULL , f_int2 = -@max_row,
12200
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12201
f_charbig = '#NULL#';
12202
ERROR 23000: Column 'f_int1' cannot be null
12203
# check null success: 1
12205
WHERE f_int1 = 0 AND f_int2 = 0
12206
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12207
AND f_charbig = '#NULL#';
12209
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12210
SELECT f_int1, f_int1, '', '', 'was inserted'
12211
FROM t0_template source_tab
12212
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12214
# check transactions-1 success: 1
12217
# check transactions-2 success: 1
12220
# check transactions-3 success: 1
12221
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12225
# check transactions-4 success: 1
12226
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12227
SELECT f_int1, f_int1, '', '', 'was inserted'
12228
FROM t0_template source_tab
12229
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12231
# check transactions-5 success: 1
12234
# check transactions-6 success: 1
12235
# INFO: Storage engine used for t1 seems to be transactional.
12238
# check transactions-7 success: 1
12239
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12241
SET @@session.sql_mode = 'traditional';
12242
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12243
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12244
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12245
'', '', 'was inserted' FROM t0_template
12246
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12247
ERROR 22012: Division by 0
12250
# check transactions-8 success: 1
12251
# INFO: Storage engine used for t1 seems to be able to revert
12252
# changes made by the failing statement.
12253
SET @@session.sql_mode = '';
12255
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12257
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12259
# check special-1 success: 1
12260
UPDATE t1 SET f_charbig = '';
12262
# check special-2 success: 1
12263
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12264
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12265
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12266
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12267
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12268
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12269
'just inserted' FROM t0_template
12270
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12271
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12273
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12274
f_charbig = 'updated by trigger'
12275
WHERE f_int1 = new.f_int1;
12277
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12278
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12279
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12281
# check trigger-1 success: 1
12282
DROP TRIGGER trg_1;
12283
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12284
f_int2 = CAST(f_char1 AS SIGNED INT),
12285
f_charbig = 'just inserted'
12286
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12288
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12289
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12290
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12291
'just inserted' FROM t0_template
12292
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12293
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12295
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12296
f_charbig = 'updated by trigger'
12297
WHERE f_int1 = new.f_int1;
12299
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12300
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12301
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12303
# check trigger-2 success: 1
12304
DROP TRIGGER trg_1;
12305
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12306
f_int2 = CAST(f_char1 AS SIGNED INT),
12307
f_charbig = 'just inserted'
12308
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12310
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12311
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12312
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12313
'just inserted' FROM t0_template
12314
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12315
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12317
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12318
f_charbig = 'updated by trigger'
12319
WHERE f_int1 = new.f_int1;
12321
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12322
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12324
# check trigger-3 success: 1
12325
DROP TRIGGER trg_1;
12326
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12327
f_int2 = CAST(f_char1 AS SIGNED INT),
12328
f_charbig = 'just inserted'
12329
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12331
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12332
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12333
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12334
'just inserted' FROM t0_template
12335
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12336
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12338
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12339
f_charbig = 'updated by trigger'
12340
WHERE f_int1 = - old.f_int1;
12342
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12343
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12345
# check trigger-4 success: 1
12346
DROP TRIGGER trg_1;
12347
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12348
f_int2 = CAST(f_char1 AS SIGNED INT),
12349
f_charbig = 'just inserted'
12350
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12352
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12353
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12354
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12355
'just inserted' FROM t0_template
12356
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12357
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12359
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12360
f_charbig = 'updated by trigger'
12361
WHERE f_int1 = new.f_int1;
12363
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12364
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12366
# check trigger-5 success: 1
12367
DROP TRIGGER trg_1;
12368
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12369
f_int2 = CAST(f_char1 AS SIGNED INT),
12370
f_charbig = 'just inserted'
12371
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12373
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12374
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12375
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12376
'just inserted' FROM t0_template
12377
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12378
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12380
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12381
f_charbig = 'updated by trigger'
12382
WHERE f_int1 = - old.f_int1;
12384
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12385
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12387
# check trigger-6 success: 1
12388
DROP TRIGGER trg_1;
12389
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12390
f_int2 = CAST(f_char1 AS SIGNED INT),
12391
f_charbig = 'just inserted'
12392
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12394
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12395
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12396
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12397
'just inserted' FROM t0_template
12398
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12399
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12401
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12402
f_charbig = 'updated by trigger'
12403
WHERE f_int1 = - old.f_int1;
12406
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12408
# check trigger-7 success: 1
12409
DROP TRIGGER trg_1;
12410
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12411
f_int2 = CAST(f_char1 AS SIGNED INT),
12412
f_charbig = 'just inserted'
12413
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12415
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12416
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12417
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12418
'just inserted' FROM t0_template
12419
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12420
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12422
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12423
f_charbig = 'updated by trigger'
12424
WHERE f_int1 = - old.f_int1;
12427
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12429
# check trigger-8 success: 1
12430
DROP TRIGGER trg_1;
12431
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12432
f_int2 = CAST(f_char1 AS SIGNED INT),
12433
f_charbig = 'just inserted'
12434
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12436
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12438
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12439
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12441
SET new.f_int1 = old.f_int1 + @max_row,
12442
new.f_int2 = old.f_int2 - @max_row,
12443
new.f_charbig = '####updated per update trigger####';
12446
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12447
f_charbig = '####updated per update statement itself####';
12449
# check trigger-9 success: 1
12450
DROP TRIGGER trg_2;
12451
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12452
f_int2 = CAST(f_char1 AS SIGNED INT),
12453
f_charbig = CONCAT('===',f_char1,'===');
12454
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12456
SET new.f_int1 = new.f_int1 + @max_row,
12457
new.f_int2 = new.f_int2 - @max_row,
12458
new.f_charbig = '####updated per update trigger####';
12461
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12462
f_charbig = '####updated per update statement itself####';
12464
# check trigger-10 success: 1
12465
DROP TRIGGER trg_2;
12466
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12467
f_int2 = CAST(f_char1 AS SIGNED INT),
12468
f_charbig = CONCAT('===',f_char1,'===');
12469
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12471
SET new.f_int1 = @my_max1 + @counter,
12472
new.f_int2 = @my_min2 - @counter,
12473
new.f_charbig = '####updated per insert trigger####';
12474
SET @counter = @counter + 1;
12477
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12478
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12479
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12480
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12481
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12483
DROP TRIGGER trg_3;
12485
# check trigger-11 success: 1
12487
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12488
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12489
AND f_charbig = '####updated per insert trigger####';
12490
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12492
SET new.f_int1 = @my_max1 + @counter,
12493
new.f_int2 = @my_min2 - @counter,
12494
new.f_charbig = '####updated per insert trigger####';
12495
SET @counter = @counter + 1;
12498
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12499
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12500
SELECT CAST(f_int1 AS CHAR),
12501
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12502
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12504
DROP TRIGGER trg_3;
12506
# check trigger-12 success: 1
12508
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12509
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12510
AND f_charbig = '####updated per insert trigger####';
12512
Table Op Msg_type Msg_text
12513
test.t1 analyze note The storage engine for the table doesn't support analyze
12514
CHECK TABLE t1 EXTENDED;
12515
Table Op Msg_type Msg_text
12516
test.t1 check note The storage engine for the table doesn't support check
12517
CHECKSUM TABLE t1 EXTENDED;
12519
test.t1 <some_value>
12521
Table Op Msg_type Msg_text
12522
test.t1 optimize note The storage engine for the table doesn't support optimize
12523
# check layout success: 1
12524
REPAIR TABLE t1 EXTENDED;
12525
Table Op Msg_type Msg_text
12526
test.t1 repair note The storage engine for the table doesn't support repair
12527
# check layout success: 1
12530
# check TRUNCATE success: 1
12531
# check layout success: 1
12532
# End usability test (inc/partition_check.inc)
12539
f_charbig VARCHAR(1000)
12540
, PRIMARY KEY(f_int1,f_int2)
12542
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
12543
(PARTITION parta VALUES LESS THAN (0),
12544
PARTITION partb VALUES LESS THAN (5),
12545
PARTITION partc VALUES LESS THAN (10),
12546
PARTITION partd VALUES LESS THAN (2147483646));
12547
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12548
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12549
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12550
ALTER TABLE t1 DROP PRIMARY KEY;
12551
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12552
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12553
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12554
# Start usability test (inc/partition_check.inc)
12556
SHOW CREATE TABLE t1;
12558
t1 CREATE TABLE `t1` (
12559
`f_int1` int(11) NOT NULL DEFAULT '0',
12560
`f_int2` int(11) NOT NULL DEFAULT '0',
12561
`f_char1` char(20) DEFAULT NULL,
12562
`f_char2` char(20) DEFAULT NULL,
12563
`f_charbig` varchar(1000) DEFAULT NULL
12564
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
12566
# check prerequisites-1 success: 1
12567
# check COUNT(*) success: 1
12568
# check MIN/MAX(f_int1) success: 1
12569
# check MIN/MAX(f_int2) success: 1
12570
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12571
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12572
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12573
WHERE f_int1 IN (2,3);
12574
# check prerequisites-3 success: 1
12575
DELETE FROM t1 WHERE f_charbig = 'delete me';
12576
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
12577
# check read via f_int1 success: 1
12578
# check read via f_int2 success: 1
12580
# check multiple-1 success: 1
12581
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12583
# check multiple-2 success: 1
12584
INSERT INTO t1 SELECT * FROM t0_template
12585
WHERE MOD(f_int1,3) = 0;
12587
# check multiple-3 success: 1
12588
UPDATE t1 SET f_int1 = f_int1 + @max_row
12589
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12590
AND @max_row_div2 + @max_row_div4;
12592
# check multiple-4 success: 1
12594
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12595
AND @max_row_div2 + @max_row_div4 + @max_row;
12597
# check multiple-5 success: 1
12598
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12600
SET f_int1 = @cur_value , f_int2 = @cur_value,
12601
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12602
f_charbig = '#SINGLE#';
12604
# check single-1 success: 1
12605
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12607
SET f_int1 = @cur_value , f_int2 = @cur_value,
12608
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12609
f_charbig = '#SINGLE#';
12611
# check single-2 success: 1
12612
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12613
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12614
UPDATE t1 SET f_int1 = @cur_value2
12615
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12617
# check single-3 success: 1
12618
SET @cur_value1= -1;
12619
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12620
UPDATE t1 SET f_int1 = @cur_value1
12621
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12623
# check single-4 success: 1
12624
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12625
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12627
# check single-5 success: 1
12628
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12630
# check single-6 success: 1
12631
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12632
ERROR HY000: Table has no partition for value 2147483647
12633
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12634
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12635
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12636
f_charbig = '#NULL#';
12638
SET f_int1 = NULL , f_int2 = -@max_row,
12639
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12640
f_charbig = '#NULL#';
12641
ERROR 23000: Column 'f_int1' cannot be null
12642
# check null success: 1
12644
WHERE f_int1 = 0 AND f_int2 = 0
12645
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12646
AND f_charbig = '#NULL#';
12648
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12649
SELECT f_int1, f_int1, '', '', 'was inserted'
12650
FROM t0_template source_tab
12651
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12653
# check transactions-1 success: 1
12656
# check transactions-2 success: 1
12659
# check transactions-3 success: 1
12660
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12664
# check transactions-4 success: 1
12665
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12666
SELECT f_int1, f_int1, '', '', 'was inserted'
12667
FROM t0_template source_tab
12668
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12670
# check transactions-5 success: 1
12673
# check transactions-6 success: 1
12674
# INFO: Storage engine used for t1 seems to be transactional.
12677
# check transactions-7 success: 1
12678
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12680
SET @@session.sql_mode = 'traditional';
12681
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12682
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12683
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12684
'', '', 'was inserted' FROM t0_template
12685
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12686
ERROR 22012: Division by 0
12689
# check transactions-8 success: 1
12690
# INFO: Storage engine used for t1 seems to be able to revert
12691
# changes made by the failing statement.
12692
SET @@session.sql_mode = '';
12694
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12696
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12698
# check special-1 success: 1
12699
UPDATE t1 SET f_charbig = '';
12701
# check special-2 success: 1
12702
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12703
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12704
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12705
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12706
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12707
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12708
'just inserted' FROM t0_template
12709
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12710
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12712
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12713
f_charbig = 'updated by trigger'
12714
WHERE f_int1 = new.f_int1;
12716
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12717
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12718
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12720
# check trigger-1 success: 1
12721
DROP TRIGGER trg_1;
12722
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12723
f_int2 = CAST(f_char1 AS SIGNED INT),
12724
f_charbig = 'just inserted'
12725
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12727
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12728
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12729
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12730
'just inserted' FROM t0_template
12731
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12732
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12734
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12735
f_charbig = 'updated by trigger'
12736
WHERE f_int1 = new.f_int1;
12738
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12739
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12740
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12742
# check trigger-2 success: 1
12743
DROP TRIGGER trg_1;
12744
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12745
f_int2 = CAST(f_char1 AS SIGNED INT),
12746
f_charbig = 'just inserted'
12747
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12749
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12750
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12751
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12752
'just inserted' FROM t0_template
12753
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12754
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12756
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12757
f_charbig = 'updated by trigger'
12758
WHERE f_int1 = new.f_int1;
12760
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12761
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12763
# check trigger-3 success: 1
12764
DROP TRIGGER trg_1;
12765
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12766
f_int2 = CAST(f_char1 AS SIGNED INT),
12767
f_charbig = 'just inserted'
12768
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12770
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12771
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12772
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12773
'just inserted' FROM t0_template
12774
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12775
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12777
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12778
f_charbig = 'updated by trigger'
12779
WHERE f_int1 = - old.f_int1;
12781
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12782
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12784
# check trigger-4 success: 1
12785
DROP TRIGGER trg_1;
12786
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12787
f_int2 = CAST(f_char1 AS SIGNED INT),
12788
f_charbig = 'just inserted'
12789
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12791
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12792
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12793
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12794
'just inserted' FROM t0_template
12795
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12796
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12798
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12799
f_charbig = 'updated by trigger'
12800
WHERE f_int1 = new.f_int1;
12802
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12803
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12805
# check trigger-5 success: 1
12806
DROP TRIGGER trg_1;
12807
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12808
f_int2 = CAST(f_char1 AS SIGNED INT),
12809
f_charbig = 'just inserted'
12810
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12812
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12813
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12814
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12815
'just inserted' FROM t0_template
12816
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12817
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12819
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12820
f_charbig = 'updated by trigger'
12821
WHERE f_int1 = - old.f_int1;
12823
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12824
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12826
# check trigger-6 success: 1
12827
DROP TRIGGER trg_1;
12828
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12829
f_int2 = CAST(f_char1 AS SIGNED INT),
12830
f_charbig = 'just inserted'
12831
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12833
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12834
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12835
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12836
'just inserted' FROM t0_template
12837
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12838
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12840
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12841
f_charbig = 'updated by trigger'
12842
WHERE f_int1 = - old.f_int1;
12845
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12847
# check trigger-7 success: 1
12848
DROP TRIGGER trg_1;
12849
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12850
f_int2 = CAST(f_char1 AS SIGNED INT),
12851
f_charbig = 'just inserted'
12852
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12854
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12855
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12856
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12857
'just inserted' FROM t0_template
12858
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12859
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12861
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12862
f_charbig = 'updated by trigger'
12863
WHERE f_int1 = - old.f_int1;
12866
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12868
# check trigger-8 success: 1
12869
DROP TRIGGER trg_1;
12870
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12871
f_int2 = CAST(f_char1 AS SIGNED INT),
12872
f_charbig = 'just inserted'
12873
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12875
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12877
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12878
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12880
SET new.f_int1 = old.f_int1 + @max_row,
12881
new.f_int2 = old.f_int2 - @max_row,
12882
new.f_charbig = '####updated per update trigger####';
12885
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12886
f_charbig = '####updated per update statement itself####';
12888
# check trigger-9 success: 1
12889
DROP TRIGGER trg_2;
12890
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12891
f_int2 = CAST(f_char1 AS SIGNED INT),
12892
f_charbig = CONCAT('===',f_char1,'===');
12893
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12895
SET new.f_int1 = new.f_int1 + @max_row,
12896
new.f_int2 = new.f_int2 - @max_row,
12897
new.f_charbig = '####updated per update trigger####';
12900
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12901
f_charbig = '####updated per update statement itself####';
12903
# check trigger-10 success: 1
12904
DROP TRIGGER trg_2;
12905
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12906
f_int2 = CAST(f_char1 AS SIGNED INT),
12907
f_charbig = CONCAT('===',f_char1,'===');
12908
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12910
SET new.f_int1 = @my_max1 + @counter,
12911
new.f_int2 = @my_min2 - @counter,
12912
new.f_charbig = '####updated per insert trigger####';
12913
SET @counter = @counter + 1;
12916
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12917
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12918
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12919
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12920
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12922
DROP TRIGGER trg_3;
12924
# check trigger-11 success: 1
12926
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12927
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12928
AND f_charbig = '####updated per insert trigger####';
12929
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12931
SET new.f_int1 = @my_max1 + @counter,
12932
new.f_int2 = @my_min2 - @counter,
12933
new.f_charbig = '####updated per insert trigger####';
12934
SET @counter = @counter + 1;
12937
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12938
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12939
SELECT CAST(f_int1 AS CHAR),
12940
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12941
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12943
DROP TRIGGER trg_3;
12945
# check trigger-12 success: 1
12947
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12948
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12949
AND f_charbig = '####updated per insert trigger####';
12951
Table Op Msg_type Msg_text
12952
test.t1 analyze note The storage engine for the table doesn't support analyze
12953
CHECK TABLE t1 EXTENDED;
12954
Table Op Msg_type Msg_text
12955
test.t1 check note The storage engine for the table doesn't support check
12956
CHECKSUM TABLE t1 EXTENDED;
12958
test.t1 <some_value>
12960
Table Op Msg_type Msg_text
12961
test.t1 optimize note The storage engine for the table doesn't support optimize
12962
# check layout success: 1
12963
REPAIR TABLE t1 EXTENDED;
12964
Table Op Msg_type Msg_text
12965
test.t1 repair note The storage engine for the table doesn't support repair
12966
# check layout success: 1
12969
# check TRUNCATE success: 1
12970
# check layout success: 1
12971
# End usability test (inc/partition_check.inc)
12978
f_charbig VARCHAR(1000)
12979
, PRIMARY KEY(f_int1,f_int2)
12981
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
12982
(PARTITION part1 VALUES LESS THAN (0)
12983
(SUBPARTITION subpart11, SUBPARTITION subpart12),
12984
PARTITION part2 VALUES LESS THAN (5)
12985
(SUBPARTITION subpart21, SUBPARTITION subpart22),
12986
PARTITION part3 VALUES LESS THAN (10)
12987
(SUBPARTITION subpart31, SUBPARTITION subpart32),
12988
PARTITION part4 VALUES LESS THAN (2147483646)
12989
(SUBPARTITION subpart41, SUBPARTITION subpart42));
12990
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12991
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12992
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12993
ALTER TABLE t1 DROP PRIMARY KEY;
12994
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12995
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12996
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12997
# Start usability test (inc/partition_check.inc)
12999
SHOW CREATE TABLE t1;
13001
t1 CREATE TABLE `t1` (
13002
`f_int1` int(11) NOT NULL DEFAULT '0',
13003
`f_int2` int(11) NOT NULL DEFAULT '0',
13004
`f_char1` char(20) DEFAULT NULL,
13005
`f_char2` char(20) DEFAULT NULL,
13006
`f_charbig` varchar(1000) DEFAULT NULL
13007
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
13009
# check prerequisites-1 success: 1
13010
# check COUNT(*) success: 1
13011
# check MIN/MAX(f_int1) success: 1
13012
# check MIN/MAX(f_int2) success: 1
13013
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13014
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13015
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13016
WHERE f_int1 IN (2,3);
13017
# check prerequisites-3 success: 1
13018
DELETE FROM t1 WHERE f_charbig = 'delete me';
13019
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13020
# check read via f_int1 success: 1
13021
# check read via f_int2 success: 1
13023
# check multiple-1 success: 1
13024
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13026
# check multiple-2 success: 1
13027
INSERT INTO t1 SELECT * FROM t0_template
13028
WHERE MOD(f_int1,3) = 0;
13030
# check multiple-3 success: 1
13031
UPDATE t1 SET f_int1 = f_int1 + @max_row
13032
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13033
AND @max_row_div2 + @max_row_div4;
13035
# check multiple-4 success: 1
13037
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13038
AND @max_row_div2 + @max_row_div4 + @max_row;
13040
# check multiple-5 success: 1
13041
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13043
SET f_int1 = @cur_value , f_int2 = @cur_value,
13044
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13045
f_charbig = '#SINGLE#';
13047
# check single-1 success: 1
13048
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13050
SET f_int1 = @cur_value , f_int2 = @cur_value,
13051
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13052
f_charbig = '#SINGLE#';
13054
# check single-2 success: 1
13055
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13056
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13057
UPDATE t1 SET f_int1 = @cur_value2
13058
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13060
# check single-3 success: 1
13061
SET @cur_value1= -1;
13062
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13063
UPDATE t1 SET f_int1 = @cur_value1
13064
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13066
# check single-4 success: 1
13067
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13068
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13070
# check single-5 success: 1
13071
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13073
# check single-6 success: 1
13074
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13075
ERROR HY000: Table has no partition for value 2147483647
13076
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13077
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13078
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13079
f_charbig = '#NULL#';
13081
SET f_int1 = NULL , f_int2 = -@max_row,
13082
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13083
f_charbig = '#NULL#';
13084
ERROR 23000: Column 'f_int1' cannot be null
13085
# check null success: 1
13087
WHERE f_int1 = 0 AND f_int2 = 0
13088
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13089
AND f_charbig = '#NULL#';
13091
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13092
SELECT f_int1, f_int1, '', '', 'was inserted'
13093
FROM t0_template source_tab
13094
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13096
# check transactions-1 success: 1
13099
# check transactions-2 success: 1
13102
# check transactions-3 success: 1
13103
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13107
# check transactions-4 success: 1
13108
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13109
SELECT f_int1, f_int1, '', '', 'was inserted'
13110
FROM t0_template source_tab
13111
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13113
# check transactions-5 success: 1
13116
# check transactions-6 success: 1
13117
# INFO: Storage engine used for t1 seems to be transactional.
13120
# check transactions-7 success: 1
13121
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13123
SET @@session.sql_mode = 'traditional';
13124
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13125
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13126
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13127
'', '', 'was inserted' FROM t0_template
13128
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13129
ERROR 22012: Division by 0
13132
# check transactions-8 success: 1
13133
# INFO: Storage engine used for t1 seems to be able to revert
13134
# changes made by the failing statement.
13135
SET @@session.sql_mode = '';
13137
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13139
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13141
# check special-1 success: 1
13142
UPDATE t1 SET f_charbig = '';
13144
# check special-2 success: 1
13145
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13146
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13147
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13148
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13149
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13150
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13151
'just inserted' FROM t0_template
13152
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13153
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13155
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13156
f_charbig = 'updated by trigger'
13157
WHERE f_int1 = new.f_int1;
13159
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13160
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13161
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13163
# check trigger-1 success: 1
13164
DROP TRIGGER trg_1;
13165
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13166
f_int2 = CAST(f_char1 AS SIGNED INT),
13167
f_charbig = 'just inserted'
13168
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13170
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13171
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13172
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13173
'just inserted' FROM t0_template
13174
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13175
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13177
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13178
f_charbig = 'updated by trigger'
13179
WHERE f_int1 = new.f_int1;
13181
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13182
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13183
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13185
# check trigger-2 success: 1
13186
DROP TRIGGER trg_1;
13187
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13188
f_int2 = CAST(f_char1 AS SIGNED INT),
13189
f_charbig = 'just inserted'
13190
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13192
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13193
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13194
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13195
'just inserted' FROM t0_template
13196
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13197
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13199
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13200
f_charbig = 'updated by trigger'
13201
WHERE f_int1 = new.f_int1;
13203
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13204
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13206
# check trigger-3 success: 1
13207
DROP TRIGGER trg_1;
13208
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13209
f_int2 = CAST(f_char1 AS SIGNED INT),
13210
f_charbig = 'just inserted'
13211
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13213
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13214
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13215
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13216
'just inserted' FROM t0_template
13217
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13218
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13220
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13221
f_charbig = 'updated by trigger'
13222
WHERE f_int1 = - old.f_int1;
13224
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13225
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13227
# check trigger-4 success: 1
13228
DROP TRIGGER trg_1;
13229
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13230
f_int2 = CAST(f_char1 AS SIGNED INT),
13231
f_charbig = 'just inserted'
13232
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13234
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13235
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13236
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13237
'just inserted' FROM t0_template
13238
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13239
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13241
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13242
f_charbig = 'updated by trigger'
13243
WHERE f_int1 = new.f_int1;
13245
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13246
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13248
# check trigger-5 success: 1
13249
DROP TRIGGER trg_1;
13250
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13251
f_int2 = CAST(f_char1 AS SIGNED INT),
13252
f_charbig = 'just inserted'
13253
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13255
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13256
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13257
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13258
'just inserted' FROM t0_template
13259
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13260
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13262
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13263
f_charbig = 'updated by trigger'
13264
WHERE f_int1 = - old.f_int1;
13266
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13267
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13269
# check trigger-6 success: 1
13270
DROP TRIGGER trg_1;
13271
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13272
f_int2 = CAST(f_char1 AS SIGNED INT),
13273
f_charbig = 'just inserted'
13274
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13276
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13277
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13278
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13279
'just inserted' FROM t0_template
13280
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13281
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13283
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13284
f_charbig = 'updated by trigger'
13285
WHERE f_int1 = - old.f_int1;
13288
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13290
# check trigger-7 success: 1
13291
DROP TRIGGER trg_1;
13292
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13293
f_int2 = CAST(f_char1 AS SIGNED INT),
13294
f_charbig = 'just inserted'
13295
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13297
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13298
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13299
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13300
'just inserted' FROM t0_template
13301
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13302
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13304
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13305
f_charbig = 'updated by trigger'
13306
WHERE f_int1 = - old.f_int1;
13309
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13311
# check trigger-8 success: 1
13312
DROP TRIGGER trg_1;
13313
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13314
f_int2 = CAST(f_char1 AS SIGNED INT),
13315
f_charbig = 'just inserted'
13316
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13318
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13320
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13321
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13323
SET new.f_int1 = old.f_int1 + @max_row,
13324
new.f_int2 = old.f_int2 - @max_row,
13325
new.f_charbig = '####updated per update trigger####';
13328
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13329
f_charbig = '####updated per update statement itself####';
13331
# check trigger-9 success: 1
13332
DROP TRIGGER trg_2;
13333
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13334
f_int2 = CAST(f_char1 AS SIGNED INT),
13335
f_charbig = CONCAT('===',f_char1,'===');
13336
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13338
SET new.f_int1 = new.f_int1 + @max_row,
13339
new.f_int2 = new.f_int2 - @max_row,
13340
new.f_charbig = '####updated per update trigger####';
13343
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13344
f_charbig = '####updated per update statement itself####';
13346
# check trigger-10 success: 1
13347
DROP TRIGGER trg_2;
13348
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13349
f_int2 = CAST(f_char1 AS SIGNED INT),
13350
f_charbig = CONCAT('===',f_char1,'===');
13351
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13353
SET new.f_int1 = @my_max1 + @counter,
13354
new.f_int2 = @my_min2 - @counter,
13355
new.f_charbig = '####updated per insert trigger####';
13356
SET @counter = @counter + 1;
13359
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13360
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13361
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13362
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13363
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13365
DROP TRIGGER trg_3;
13367
# check trigger-11 success: 1
13369
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13370
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13371
AND f_charbig = '####updated per insert trigger####';
13372
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13374
SET new.f_int1 = @my_max1 + @counter,
13375
new.f_int2 = @my_min2 - @counter,
13376
new.f_charbig = '####updated per insert trigger####';
13377
SET @counter = @counter + 1;
13380
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13381
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13382
SELECT CAST(f_int1 AS CHAR),
13383
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13384
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13386
DROP TRIGGER trg_3;
13388
# check trigger-12 success: 1
13390
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13391
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13392
AND f_charbig = '####updated per insert trigger####';
13394
Table Op Msg_type Msg_text
13395
test.t1 analyze note The storage engine for the table doesn't support analyze
13396
CHECK TABLE t1 EXTENDED;
13397
Table Op Msg_type Msg_text
13398
test.t1 check note The storage engine for the table doesn't support check
13399
CHECKSUM TABLE t1 EXTENDED;
13401
test.t1 <some_value>
13403
Table Op Msg_type Msg_text
13404
test.t1 optimize note The storage engine for the table doesn't support optimize
13405
# check layout success: 1
13406
REPAIR TABLE t1 EXTENDED;
13407
Table Op Msg_type Msg_text
13408
test.t1 repair note The storage engine for the table doesn't support repair
13409
# check layout success: 1
13412
# check TRUNCATE success: 1
13413
# check layout success: 1
13414
# End usability test (inc/partition_check.inc)
13421
f_charbig VARCHAR(1000)
13422
, PRIMARY KEY(f_int1,f_int2)
13424
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
13425
(PARTITION part1 VALUES IN (0)
13426
(SUBPARTITION sp11, SUBPARTITION sp12),
13427
PARTITION part2 VALUES IN (1)
13428
(SUBPARTITION sp21, SUBPARTITION sp22),
13429
PARTITION part3 VALUES IN (2)
13430
(SUBPARTITION sp31, SUBPARTITION sp32),
13431
PARTITION part4 VALUES IN (NULL)
13432
(SUBPARTITION sp41, SUBPARTITION sp42));
13433
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13434
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13435
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13436
ALTER TABLE t1 DROP PRIMARY KEY;
13437
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13438
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13439
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13440
# Start usability test (inc/partition_check.inc)
13442
SHOW CREATE TABLE t1;
13444
t1 CREATE TABLE `t1` (
13445
`f_int1` int(11) NOT NULL DEFAULT '0',
13446
`f_int2` int(11) NOT NULL DEFAULT '0',
13447
`f_char1` char(20) DEFAULT NULL,
13448
`f_char2` char(20) DEFAULT NULL,
13449
`f_charbig` varchar(1000) DEFAULT NULL
13450
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
13452
# check prerequisites-1 success: 1
13453
# check COUNT(*) success: 1
13454
# check MIN/MAX(f_int1) success: 1
13455
# check MIN/MAX(f_int2) success: 1
13456
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13457
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13458
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13459
WHERE f_int1 IN (2,3);
13460
# check prerequisites-3 success: 1
13461
DELETE FROM t1 WHERE f_charbig = 'delete me';
13462
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13463
# check read via f_int1 success: 1
13464
# check read via f_int2 success: 1
13466
# check multiple-1 success: 1
13467
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13469
# check multiple-2 success: 1
13470
INSERT INTO t1 SELECT * FROM t0_template
13471
WHERE MOD(f_int1,3) = 0;
13473
# check multiple-3 success: 1
13474
UPDATE t1 SET f_int1 = f_int1 + @max_row
13475
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13476
AND @max_row_div2 + @max_row_div4;
13478
# check multiple-4 success: 1
13480
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13481
AND @max_row_div2 + @max_row_div4 + @max_row;
13483
# check multiple-5 success: 1
13484
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13486
SET f_int1 = @cur_value , f_int2 = @cur_value,
13487
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13488
f_charbig = '#SINGLE#';
13490
# check single-1 success: 1
13491
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13493
SET f_int1 = @cur_value , f_int2 = @cur_value,
13494
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13495
f_charbig = '#SINGLE#';
13497
# check single-2 success: 1
13498
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13499
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13500
UPDATE t1 SET f_int1 = @cur_value2
13501
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13503
# check single-3 success: 1
13504
SET @cur_value1= -1;
13505
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13506
UPDATE t1 SET f_int1 = @cur_value1
13507
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13509
# check single-4 success: 1
13510
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13511
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13513
# check single-5 success: 1
13514
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13516
# check single-6 success: 1
13517
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13519
# check single-7 success: 1
13520
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13521
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13522
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13523
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13524
f_charbig = '#NULL#';
13526
SET f_int1 = NULL , f_int2 = -@max_row,
13527
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13528
f_charbig = '#NULL#';
13529
ERROR 23000: Column 'f_int1' cannot be null
13530
# check null success: 1
13532
WHERE f_int1 = 0 AND f_int2 = 0
13533
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13534
AND f_charbig = '#NULL#';
13536
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13537
SELECT f_int1, f_int1, '', '', 'was inserted'
13538
FROM t0_template source_tab
13539
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13541
# check transactions-1 success: 1
13544
# check transactions-2 success: 1
13547
# check transactions-3 success: 1
13548
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13552
# check transactions-4 success: 1
13553
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13554
SELECT f_int1, f_int1, '', '', 'was inserted'
13555
FROM t0_template source_tab
13556
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13558
# check transactions-5 success: 1
13561
# check transactions-6 success: 1
13562
# INFO: Storage engine used for t1 seems to be transactional.
13565
# check transactions-7 success: 1
13566
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13568
SET @@session.sql_mode = 'traditional';
13569
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13570
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13571
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13572
'', '', 'was inserted' FROM t0_template
13573
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13574
ERROR 22012: Division by 0
13577
# check transactions-8 success: 1
13578
# INFO: Storage engine used for t1 seems to be able to revert
13579
# changes made by the failing statement.
13580
SET @@session.sql_mode = '';
13582
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13584
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13586
# check special-1 success: 1
13587
UPDATE t1 SET f_charbig = '';
13589
# check special-2 success: 1
13590
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13591
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13592
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13593
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13594
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13595
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13596
'just inserted' FROM t0_template
13597
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13598
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13600
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13601
f_charbig = 'updated by trigger'
13602
WHERE f_int1 = new.f_int1;
13604
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13605
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13606
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13608
# check trigger-1 success: 1
13609
DROP TRIGGER trg_1;
13610
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13611
f_int2 = CAST(f_char1 AS SIGNED INT),
13612
f_charbig = 'just inserted'
13613
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13615
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13616
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13617
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13618
'just inserted' FROM t0_template
13619
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13620
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13622
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13623
f_charbig = 'updated by trigger'
13624
WHERE f_int1 = new.f_int1;
13626
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13627
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13628
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13630
# check trigger-2 success: 1
13631
DROP TRIGGER trg_1;
13632
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13633
f_int2 = CAST(f_char1 AS SIGNED INT),
13634
f_charbig = 'just inserted'
13635
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13637
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13638
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13639
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13640
'just inserted' FROM t0_template
13641
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13642
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13644
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13645
f_charbig = 'updated by trigger'
13646
WHERE f_int1 = new.f_int1;
13648
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13649
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13651
# check trigger-3 success: 1
13652
DROP TRIGGER trg_1;
13653
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13654
f_int2 = CAST(f_char1 AS SIGNED INT),
13655
f_charbig = 'just inserted'
13656
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13658
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13659
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13660
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13661
'just inserted' FROM t0_template
13662
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13663
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13665
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13666
f_charbig = 'updated by trigger'
13667
WHERE f_int1 = - old.f_int1;
13669
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13670
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13672
# check trigger-4 success: 1
13673
DROP TRIGGER trg_1;
13674
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13675
f_int2 = CAST(f_char1 AS SIGNED INT),
13676
f_charbig = 'just inserted'
13677
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13679
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13680
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13681
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13682
'just inserted' FROM t0_template
13683
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13684
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13686
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13687
f_charbig = 'updated by trigger'
13688
WHERE f_int1 = new.f_int1;
13690
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13691
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13693
# check trigger-5 success: 1
13694
DROP TRIGGER trg_1;
13695
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13696
f_int2 = CAST(f_char1 AS SIGNED INT),
13697
f_charbig = 'just inserted'
13698
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13700
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13701
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13702
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13703
'just inserted' FROM t0_template
13704
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13705
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13707
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13708
f_charbig = 'updated by trigger'
13709
WHERE f_int1 = - old.f_int1;
13711
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13712
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13714
# check trigger-6 success: 1
13715
DROP TRIGGER trg_1;
13716
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13717
f_int2 = CAST(f_char1 AS SIGNED INT),
13718
f_charbig = 'just inserted'
13719
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13721
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13722
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13723
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13724
'just inserted' FROM t0_template
13725
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13726
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13728
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13729
f_charbig = 'updated by trigger'
13730
WHERE f_int1 = - old.f_int1;
13733
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13735
# check trigger-7 success: 1
13736
DROP TRIGGER trg_1;
13737
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13738
f_int2 = CAST(f_char1 AS SIGNED INT),
13739
f_charbig = 'just inserted'
13740
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13742
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13743
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13744
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13745
'just inserted' FROM t0_template
13746
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13747
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13749
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13750
f_charbig = 'updated by trigger'
13751
WHERE f_int1 = - old.f_int1;
13754
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13756
# check trigger-8 success: 1
13757
DROP TRIGGER trg_1;
13758
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13759
f_int2 = CAST(f_char1 AS SIGNED INT),
13760
f_charbig = 'just inserted'
13761
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13763
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13765
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13766
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13768
SET new.f_int1 = old.f_int1 + @max_row,
13769
new.f_int2 = old.f_int2 - @max_row,
13770
new.f_charbig = '####updated per update trigger####';
13773
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13774
f_charbig = '####updated per update statement itself####';
13776
# check trigger-9 success: 1
13777
DROP TRIGGER trg_2;
13778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13779
f_int2 = CAST(f_char1 AS SIGNED INT),
13780
f_charbig = CONCAT('===',f_char1,'===');
13781
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13783
SET new.f_int1 = new.f_int1 + @max_row,
13784
new.f_int2 = new.f_int2 - @max_row,
13785
new.f_charbig = '####updated per update trigger####';
13788
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13789
f_charbig = '####updated per update statement itself####';
13791
# check trigger-10 success: 1
13792
DROP TRIGGER trg_2;
13793
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13794
f_int2 = CAST(f_char1 AS SIGNED INT),
13795
f_charbig = CONCAT('===',f_char1,'===');
13796
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13798
SET new.f_int1 = @my_max1 + @counter,
13799
new.f_int2 = @my_min2 - @counter,
13800
new.f_charbig = '####updated per insert trigger####';
13801
SET @counter = @counter + 1;
13804
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13805
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13806
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13807
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13810
DROP TRIGGER trg_3;
13812
# check trigger-11 success: 1
13814
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13815
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13816
AND f_charbig = '####updated per insert trigger####';
13817
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13819
SET new.f_int1 = @my_max1 + @counter,
13820
new.f_int2 = @my_min2 - @counter,
13821
new.f_charbig = '####updated per insert trigger####';
13822
SET @counter = @counter + 1;
13825
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13826
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13827
SELECT CAST(f_int1 AS CHAR),
13828
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13829
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13831
DROP TRIGGER trg_3;
13833
# check trigger-12 success: 1
13835
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13836
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13837
AND f_charbig = '####updated per insert trigger####';
13839
Table Op Msg_type Msg_text
13840
test.t1 analyze note The storage engine for the table doesn't support analyze
13841
CHECK TABLE t1 EXTENDED;
13842
Table Op Msg_type Msg_text
13843
test.t1 check note The storage engine for the table doesn't support check
13844
CHECKSUM TABLE t1 EXTENDED;
13846
test.t1 <some_value>
13848
Table Op Msg_type Msg_text
13849
test.t1 optimize note The storage engine for the table doesn't support optimize
13850
# check layout success: 1
13851
REPAIR TABLE t1 EXTENDED;
13852
Table Op Msg_type Msg_text
13853
test.t1 repair note The storage engine for the table doesn't support repair
13854
# check layout success: 1
13857
# check TRUNCATE success: 1
13858
# check layout success: 1
13859
# End usability test (inc/partition_check.inc)
13866
f_charbig VARCHAR(1000)
13867
, PRIMARY KEY(f_int1,f_int2)
13869
PARTITION BY LIST(ABS(MOD(f_int1,2)))
13870
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
13871
(PARTITION part1 VALUES IN (0),
13872
PARTITION part2 VALUES IN (1),
13873
PARTITION part3 VALUES IN (NULL));
13874
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13875
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13876
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13877
ALTER TABLE t1 DROP PRIMARY KEY;
13878
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13879
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13880
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13881
# Start usability test (inc/partition_check.inc)
13883
SHOW CREATE TABLE t1;
13885
t1 CREATE TABLE `t1` (
13886
`f_int1` int(11) NOT NULL DEFAULT '0',
13887
`f_int2` int(11) NOT NULL DEFAULT '0',
13888
`f_char1` char(20) DEFAULT NULL,
13889
`f_char2` char(20) DEFAULT NULL,
13890
`f_charbig` varchar(1000) DEFAULT NULL
13891
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
13893
# check prerequisites-1 success: 1
13894
# check COUNT(*) success: 1
13895
# check MIN/MAX(f_int1) success: 1
13896
# check MIN/MAX(f_int2) success: 1
13897
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13898
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13899
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13900
WHERE f_int1 IN (2,3);
13901
# check prerequisites-3 success: 1
13902
DELETE FROM t1 WHERE f_charbig = 'delete me';
13903
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13904
# check read via f_int1 success: 1
13905
# check read via f_int2 success: 1
13907
# check multiple-1 success: 1
13908
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13910
# check multiple-2 success: 1
13911
INSERT INTO t1 SELECT * FROM t0_template
13912
WHERE MOD(f_int1,3) = 0;
13914
# check multiple-3 success: 1
13915
UPDATE t1 SET f_int1 = f_int1 + @max_row
13916
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13917
AND @max_row_div2 + @max_row_div4;
13919
# check multiple-4 success: 1
13921
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13922
AND @max_row_div2 + @max_row_div4 + @max_row;
13924
# check multiple-5 success: 1
13925
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13927
SET f_int1 = @cur_value , f_int2 = @cur_value,
13928
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13929
f_charbig = '#SINGLE#';
13931
# check single-1 success: 1
13932
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13934
SET f_int1 = @cur_value , f_int2 = @cur_value,
13935
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13936
f_charbig = '#SINGLE#';
13938
# check single-2 success: 1
13939
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13940
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13941
UPDATE t1 SET f_int1 = @cur_value2
13942
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13944
# check single-3 success: 1
13945
SET @cur_value1= -1;
13946
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13947
UPDATE t1 SET f_int1 = @cur_value1
13948
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13950
# check single-4 success: 1
13951
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13952
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13954
# check single-5 success: 1
13955
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13957
# check single-6 success: 1
13958
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13960
# check single-7 success: 1
13961
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13962
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13963
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13964
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13965
f_charbig = '#NULL#';
13967
SET f_int1 = NULL , f_int2 = -@max_row,
13968
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13969
f_charbig = '#NULL#';
13970
ERROR 23000: Column 'f_int1' cannot be null
13971
# check null success: 1
13973
WHERE f_int1 = 0 AND f_int2 = 0
13974
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13975
AND f_charbig = '#NULL#';
13977
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13978
SELECT f_int1, f_int1, '', '', 'was inserted'
13979
FROM t0_template source_tab
13980
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13982
# check transactions-1 success: 1
13985
# check transactions-2 success: 1
13988
# check transactions-3 success: 1
13989
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13993
# check transactions-4 success: 1
13994
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13995
SELECT f_int1, f_int1, '', '', 'was inserted'
13996
FROM t0_template source_tab
13997
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13999
# check transactions-5 success: 1
14002
# check transactions-6 success: 1
14003
# INFO: Storage engine used for t1 seems to be transactional.
14006
# check transactions-7 success: 1
14007
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14009
SET @@session.sql_mode = 'traditional';
14010
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14011
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14012
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14013
'', '', 'was inserted' FROM t0_template
14014
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14015
ERROR 22012: Division by 0
14018
# check transactions-8 success: 1
14019
# INFO: Storage engine used for t1 seems to be able to revert
14020
# changes made by the failing statement.
14021
SET @@session.sql_mode = '';
14023
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14025
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14027
# check special-1 success: 1
14028
UPDATE t1 SET f_charbig = '';
14030
# check special-2 success: 1
14031
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14032
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14033
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14034
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14035
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14036
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14037
'just inserted' FROM t0_template
14038
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14039
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14041
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14042
f_charbig = 'updated by trigger'
14043
WHERE f_int1 = new.f_int1;
14045
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14046
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14047
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14049
# check trigger-1 success: 1
14050
DROP TRIGGER trg_1;
14051
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14052
f_int2 = CAST(f_char1 AS SIGNED INT),
14053
f_charbig = 'just inserted'
14054
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14056
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14057
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14058
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14059
'just inserted' FROM t0_template
14060
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14061
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14063
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14064
f_charbig = 'updated by trigger'
14065
WHERE f_int1 = new.f_int1;
14067
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14068
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14069
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14071
# check trigger-2 success: 1
14072
DROP TRIGGER trg_1;
14073
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14074
f_int2 = CAST(f_char1 AS SIGNED INT),
14075
f_charbig = 'just inserted'
14076
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14078
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14079
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14080
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14081
'just inserted' FROM t0_template
14082
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14083
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14085
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14086
f_charbig = 'updated by trigger'
14087
WHERE f_int1 = new.f_int1;
14089
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14090
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14092
# check trigger-3 success: 1
14093
DROP TRIGGER trg_1;
14094
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14095
f_int2 = CAST(f_char1 AS SIGNED INT),
14096
f_charbig = 'just inserted'
14097
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14099
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14100
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14101
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14102
'just inserted' FROM t0_template
14103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14104
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14106
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14107
f_charbig = 'updated by trigger'
14108
WHERE f_int1 = - old.f_int1;
14110
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14111
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14113
# check trigger-4 success: 1
14114
DROP TRIGGER trg_1;
14115
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14116
f_int2 = CAST(f_char1 AS SIGNED INT),
14117
f_charbig = 'just inserted'
14118
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14120
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14121
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14122
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14123
'just inserted' FROM t0_template
14124
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14125
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14127
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14128
f_charbig = 'updated by trigger'
14129
WHERE f_int1 = new.f_int1;
14131
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14132
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14134
# check trigger-5 success: 1
14135
DROP TRIGGER trg_1;
14136
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14137
f_int2 = CAST(f_char1 AS SIGNED INT),
14138
f_charbig = 'just inserted'
14139
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14141
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14142
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14143
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14144
'just inserted' FROM t0_template
14145
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14146
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14148
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14149
f_charbig = 'updated by trigger'
14150
WHERE f_int1 = - old.f_int1;
14152
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14153
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14155
# check trigger-6 success: 1
14156
DROP TRIGGER trg_1;
14157
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14158
f_int2 = CAST(f_char1 AS SIGNED INT),
14159
f_charbig = 'just inserted'
14160
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14162
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14163
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14164
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14165
'just inserted' FROM t0_template
14166
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14167
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14169
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14170
f_charbig = 'updated by trigger'
14171
WHERE f_int1 = - old.f_int1;
14174
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14176
# check trigger-7 success: 1
14177
DROP TRIGGER trg_1;
14178
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14179
f_int2 = CAST(f_char1 AS SIGNED INT),
14180
f_charbig = 'just inserted'
14181
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14183
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14184
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14185
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14186
'just inserted' FROM t0_template
14187
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14188
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14190
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14191
f_charbig = 'updated by trigger'
14192
WHERE f_int1 = - old.f_int1;
14195
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14197
# check trigger-8 success: 1
14198
DROP TRIGGER trg_1;
14199
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14200
f_int2 = CAST(f_char1 AS SIGNED INT),
14201
f_charbig = 'just inserted'
14202
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14204
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14206
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14207
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14209
SET new.f_int1 = old.f_int1 + @max_row,
14210
new.f_int2 = old.f_int2 - @max_row,
14211
new.f_charbig = '####updated per update trigger####';
14214
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14215
f_charbig = '####updated per update statement itself####';
14217
# check trigger-9 success: 1
14218
DROP TRIGGER trg_2;
14219
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14220
f_int2 = CAST(f_char1 AS SIGNED INT),
14221
f_charbig = CONCAT('===',f_char1,'===');
14222
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14224
SET new.f_int1 = new.f_int1 + @max_row,
14225
new.f_int2 = new.f_int2 - @max_row,
14226
new.f_charbig = '####updated per update trigger####';
14229
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14230
f_charbig = '####updated per update statement itself####';
14232
# check trigger-10 success: 1
14233
DROP TRIGGER trg_2;
14234
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14235
f_int2 = CAST(f_char1 AS SIGNED INT),
14236
f_charbig = CONCAT('===',f_char1,'===');
14237
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14239
SET new.f_int1 = @my_max1 + @counter,
14240
new.f_int2 = @my_min2 - @counter,
14241
new.f_charbig = '####updated per insert trigger####';
14242
SET @counter = @counter + 1;
14245
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14246
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14247
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14248
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14249
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14251
DROP TRIGGER trg_3;
14253
# check trigger-11 success: 1
14255
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14256
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14257
AND f_charbig = '####updated per insert trigger####';
14258
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14260
SET new.f_int1 = @my_max1 + @counter,
14261
new.f_int2 = @my_min2 - @counter,
14262
new.f_charbig = '####updated per insert trigger####';
14263
SET @counter = @counter + 1;
14266
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14267
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14268
SELECT CAST(f_int1 AS CHAR),
14269
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14270
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14272
DROP TRIGGER trg_3;
14274
# check trigger-12 success: 1
14276
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14277
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14278
AND f_charbig = '####updated per insert trigger####';
14280
Table Op Msg_type Msg_text
14281
test.t1 analyze note The storage engine for the table doesn't support analyze
14282
CHECK TABLE t1 EXTENDED;
14283
Table Op Msg_type Msg_text
14284
test.t1 check note The storage engine for the table doesn't support check
14285
CHECKSUM TABLE t1 EXTENDED;
14287
test.t1 <some_value>
14289
Table Op Msg_type Msg_text
14290
test.t1 optimize note The storage engine for the table doesn't support optimize
14291
# check layout success: 1
14292
REPAIR TABLE t1 EXTENDED;
14293
Table Op Msg_type Msg_text
14294
test.t1 repair note The storage engine for the table doesn't support repair
14295
# check layout success: 1
14298
# check TRUNCATE success: 1
14299
# check layout success: 1
14300
# End usability test (inc/partition_check.inc)
14302
DROP TABLE IF EXISTS t1;
14308
f_charbig VARCHAR(1000)
14309
, PRIMARY KEY(f_int2,f_int1)
14311
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
14312
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14313
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14314
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14315
ALTER TABLE t1 DROP PRIMARY KEY;
14316
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14317
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14318
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14319
# Start usability test (inc/partition_check.inc)
14321
SHOW CREATE TABLE t1;
14323
t1 CREATE TABLE `t1` (
14324
`f_int1` int(11) NOT NULL DEFAULT '0',
14325
`f_int2` int(11) NOT NULL DEFAULT '0',
14326
`f_char1` char(20) DEFAULT NULL,
14327
`f_char2` char(20) DEFAULT NULL,
14328
`f_charbig` varchar(1000) DEFAULT NULL
14329
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
14331
# check prerequisites-1 success: 1
14332
# check COUNT(*) success: 1
14333
# check MIN/MAX(f_int1) success: 1
14334
# check MIN/MAX(f_int2) success: 1
14335
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14336
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14337
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14338
WHERE f_int1 IN (2,3);
14339
# check prerequisites-3 success: 1
14340
DELETE FROM t1 WHERE f_charbig = 'delete me';
14341
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14342
# check read via f_int1 success: 1
14343
# check read via f_int2 success: 1
14345
# check multiple-1 success: 1
14346
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14348
# check multiple-2 success: 1
14349
INSERT INTO t1 SELECT * FROM t0_template
14350
WHERE MOD(f_int1,3) = 0;
14352
# check multiple-3 success: 1
14353
UPDATE t1 SET f_int1 = f_int1 + @max_row
14354
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14355
AND @max_row_div2 + @max_row_div4;
14357
# check multiple-4 success: 1
14359
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14360
AND @max_row_div2 + @max_row_div4 + @max_row;
14362
# check multiple-5 success: 1
14363
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14365
SET f_int1 = @cur_value , f_int2 = @cur_value,
14366
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14367
f_charbig = '#SINGLE#';
14369
# check single-1 success: 1
14370
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14372
SET f_int1 = @cur_value , f_int2 = @cur_value,
14373
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14374
f_charbig = '#SINGLE#';
14376
# check single-2 success: 1
14377
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14378
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14379
UPDATE t1 SET f_int1 = @cur_value2
14380
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14382
# check single-3 success: 1
14383
SET @cur_value1= -1;
14384
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14385
UPDATE t1 SET f_int1 = @cur_value1
14386
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14388
# check single-4 success: 1
14389
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14390
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14392
# check single-5 success: 1
14393
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14395
# check single-6 success: 1
14396
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14398
# check single-7 success: 1
14399
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14400
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14401
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14402
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14403
f_charbig = '#NULL#';
14405
SET f_int1 = NULL , f_int2 = -@max_row,
14406
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14407
f_charbig = '#NULL#';
14408
ERROR 23000: Column 'f_int1' cannot be null
14409
# check null success: 1
14411
WHERE f_int1 = 0 AND f_int2 = 0
14412
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14413
AND f_charbig = '#NULL#';
14415
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14416
SELECT f_int1, f_int1, '', '', 'was inserted'
14417
FROM t0_template source_tab
14418
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14420
# check transactions-1 success: 1
14423
# check transactions-2 success: 1
14426
# check transactions-3 success: 1
14427
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14431
# check transactions-4 success: 1
14432
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14433
SELECT f_int1, f_int1, '', '', 'was inserted'
14434
FROM t0_template source_tab
14435
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14437
# check transactions-5 success: 1
14440
# check transactions-6 success: 1
14441
# INFO: Storage engine used for t1 seems to be transactional.
14444
# check transactions-7 success: 1
14445
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14447
SET @@session.sql_mode = 'traditional';
14448
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14449
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14450
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14451
'', '', 'was inserted' FROM t0_template
14452
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14453
ERROR 22012: Division by 0
14456
# check transactions-8 success: 1
14457
# INFO: Storage engine used for t1 seems to be able to revert
14458
# changes made by the failing statement.
14459
SET @@session.sql_mode = '';
14461
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14463
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14465
# check special-1 success: 1
14466
UPDATE t1 SET f_charbig = '';
14468
# check special-2 success: 1
14469
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14470
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14471
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14472
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14473
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14474
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14475
'just inserted' FROM t0_template
14476
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14477
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14479
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14480
f_charbig = 'updated by trigger'
14481
WHERE f_int1 = new.f_int1;
14483
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14484
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14485
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14487
# check trigger-1 success: 1
14488
DROP TRIGGER trg_1;
14489
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14490
f_int2 = CAST(f_char1 AS SIGNED INT),
14491
f_charbig = 'just inserted'
14492
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14494
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14495
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14496
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14497
'just inserted' FROM t0_template
14498
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14499
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14501
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14502
f_charbig = 'updated by trigger'
14503
WHERE f_int1 = new.f_int1;
14505
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14506
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14507
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14509
# check trigger-2 success: 1
14510
DROP TRIGGER trg_1;
14511
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14512
f_int2 = CAST(f_char1 AS SIGNED INT),
14513
f_charbig = 'just inserted'
14514
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14516
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14517
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14518
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14519
'just inserted' FROM t0_template
14520
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14521
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14523
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14524
f_charbig = 'updated by trigger'
14525
WHERE f_int1 = new.f_int1;
14527
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14528
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14530
# check trigger-3 success: 1
14531
DROP TRIGGER trg_1;
14532
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14533
f_int2 = CAST(f_char1 AS SIGNED INT),
14534
f_charbig = 'just inserted'
14535
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14537
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14538
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14539
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14540
'just inserted' FROM t0_template
14541
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14542
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14544
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14545
f_charbig = 'updated by trigger'
14546
WHERE f_int1 = - old.f_int1;
14548
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14549
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14551
# check trigger-4 success: 1
14552
DROP TRIGGER trg_1;
14553
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14554
f_int2 = CAST(f_char1 AS SIGNED INT),
14555
f_charbig = 'just inserted'
14556
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14558
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14559
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14560
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14561
'just inserted' FROM t0_template
14562
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14563
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14565
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14566
f_charbig = 'updated by trigger'
14567
WHERE f_int1 = new.f_int1;
14569
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14570
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14572
# check trigger-5 success: 1
14573
DROP TRIGGER trg_1;
14574
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14575
f_int2 = CAST(f_char1 AS SIGNED INT),
14576
f_charbig = 'just inserted'
14577
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14579
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14580
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14581
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14582
'just inserted' FROM t0_template
14583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14584
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14586
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14587
f_charbig = 'updated by trigger'
14588
WHERE f_int1 = - old.f_int1;
14590
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14591
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14593
# check trigger-6 success: 1
14594
DROP TRIGGER trg_1;
14595
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14596
f_int2 = CAST(f_char1 AS SIGNED INT),
14597
f_charbig = 'just inserted'
14598
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14600
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14601
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14602
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14603
'just inserted' FROM t0_template
14604
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14605
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14607
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14608
f_charbig = 'updated by trigger'
14609
WHERE f_int1 = - old.f_int1;
14612
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14614
# check trigger-7 success: 1
14615
DROP TRIGGER trg_1;
14616
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14617
f_int2 = CAST(f_char1 AS SIGNED INT),
14618
f_charbig = 'just inserted'
14619
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14621
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14622
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14623
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14624
'just inserted' FROM t0_template
14625
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14626
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14628
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14629
f_charbig = 'updated by trigger'
14630
WHERE f_int1 = - old.f_int1;
14633
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14635
# check trigger-8 success: 1
14636
DROP TRIGGER trg_1;
14637
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14638
f_int2 = CAST(f_char1 AS SIGNED INT),
14639
f_charbig = 'just inserted'
14640
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14642
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14644
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14645
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14647
SET new.f_int1 = old.f_int1 + @max_row,
14648
new.f_int2 = old.f_int2 - @max_row,
14649
new.f_charbig = '####updated per update trigger####';
14652
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14653
f_charbig = '####updated per update statement itself####';
14655
# check trigger-9 success: 1
14656
DROP TRIGGER trg_2;
14657
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14658
f_int2 = CAST(f_char1 AS SIGNED INT),
14659
f_charbig = CONCAT('===',f_char1,'===');
14660
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14662
SET new.f_int1 = new.f_int1 + @max_row,
14663
new.f_int2 = new.f_int2 - @max_row,
14664
new.f_charbig = '####updated per update trigger####';
14667
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14668
f_charbig = '####updated per update statement itself####';
14670
# check trigger-10 success: 1
14671
DROP TRIGGER trg_2;
14672
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14673
f_int2 = CAST(f_char1 AS SIGNED INT),
14674
f_charbig = CONCAT('===',f_char1,'===');
14675
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14677
SET new.f_int1 = @my_max1 + @counter,
14678
new.f_int2 = @my_min2 - @counter,
14679
new.f_charbig = '####updated per insert trigger####';
14680
SET @counter = @counter + 1;
14683
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14684
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14685
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14686
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14687
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14689
DROP TRIGGER trg_3;
14691
# check trigger-11 success: 1
14693
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14694
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14695
AND f_charbig = '####updated per insert trigger####';
14696
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14698
SET new.f_int1 = @my_max1 + @counter,
14699
new.f_int2 = @my_min2 - @counter,
14700
new.f_charbig = '####updated per insert trigger####';
14701
SET @counter = @counter + 1;
14704
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14705
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14706
SELECT CAST(f_int1 AS CHAR),
14707
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14708
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14710
DROP TRIGGER trg_3;
14712
# check trigger-12 success: 1
14714
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14715
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14716
AND f_charbig = '####updated per insert trigger####';
14718
Table Op Msg_type Msg_text
14719
test.t1 analyze note The storage engine for the table doesn't support analyze
14720
CHECK TABLE t1 EXTENDED;
14721
Table Op Msg_type Msg_text
14722
test.t1 check note The storage engine for the table doesn't support check
14723
CHECKSUM TABLE t1 EXTENDED;
14725
test.t1 <some_value>
14727
Table Op Msg_type Msg_text
14728
test.t1 optimize note The storage engine for the table doesn't support optimize
14729
# check layout success: 1
14730
REPAIR TABLE t1 EXTENDED;
14731
Table Op Msg_type Msg_text
14732
test.t1 repair note The storage engine for the table doesn't support repair
14733
# check layout success: 1
14736
# check TRUNCATE success: 1
14737
# check layout success: 1
14738
# End usability test (inc/partition_check.inc)
14745
f_charbig VARCHAR(1000)
14746
, PRIMARY KEY(f_int2,f_int1)
14748
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
14749
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14750
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14751
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14752
ALTER TABLE t1 DROP PRIMARY KEY;
14753
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14754
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14755
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14756
# Start usability test (inc/partition_check.inc)
14758
SHOW CREATE TABLE t1;
14760
t1 CREATE TABLE `t1` (
14761
`f_int1` int(11) NOT NULL DEFAULT '0',
14762
`f_int2` int(11) NOT NULL DEFAULT '0',
14763
`f_char1` char(20) DEFAULT NULL,
14764
`f_char2` char(20) DEFAULT NULL,
14765
`f_charbig` varchar(1000) DEFAULT NULL
14766
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
14768
# check prerequisites-1 success: 1
14769
# check COUNT(*) success: 1
14770
# check MIN/MAX(f_int1) success: 1
14771
# check MIN/MAX(f_int2) success: 1
14772
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14773
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14774
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14775
WHERE f_int1 IN (2,3);
14776
# check prerequisites-3 success: 1
14777
DELETE FROM t1 WHERE f_charbig = 'delete me';
14778
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14779
# check read via f_int1 success: 1
14780
# check read via f_int2 success: 1
14782
# check multiple-1 success: 1
14783
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14785
# check multiple-2 success: 1
14786
INSERT INTO t1 SELECT * FROM t0_template
14787
WHERE MOD(f_int1,3) = 0;
14789
# check multiple-3 success: 1
14790
UPDATE t1 SET f_int1 = f_int1 + @max_row
14791
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14792
AND @max_row_div2 + @max_row_div4;
14794
# check multiple-4 success: 1
14796
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14797
AND @max_row_div2 + @max_row_div4 + @max_row;
14799
# check multiple-5 success: 1
14800
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14802
SET f_int1 = @cur_value , f_int2 = @cur_value,
14803
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14804
f_charbig = '#SINGLE#';
14806
# check single-1 success: 1
14807
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14809
SET f_int1 = @cur_value , f_int2 = @cur_value,
14810
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14811
f_charbig = '#SINGLE#';
14813
# check single-2 success: 1
14814
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14815
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14816
UPDATE t1 SET f_int1 = @cur_value2
14817
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14819
# check single-3 success: 1
14820
SET @cur_value1= -1;
14821
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14822
UPDATE t1 SET f_int1 = @cur_value1
14823
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14825
# check single-4 success: 1
14826
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14827
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14829
# check single-5 success: 1
14830
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14832
# check single-6 success: 1
14833
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14835
# check single-7 success: 1
14836
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14837
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14838
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14839
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14840
f_charbig = '#NULL#';
14842
SET f_int1 = NULL , f_int2 = -@max_row,
14843
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14844
f_charbig = '#NULL#';
14845
ERROR 23000: Column 'f_int1' cannot be null
14846
# check null success: 1
14848
WHERE f_int1 = 0 AND f_int2 = 0
14849
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14850
AND f_charbig = '#NULL#';
14852
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14853
SELECT f_int1, f_int1, '', '', 'was inserted'
14854
FROM t0_template source_tab
14855
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14857
# check transactions-1 success: 1
14860
# check transactions-2 success: 1
14863
# check transactions-3 success: 1
14864
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14868
# check transactions-4 success: 1
14869
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14870
SELECT f_int1, f_int1, '', '', 'was inserted'
14871
FROM t0_template source_tab
14872
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14874
# check transactions-5 success: 1
14877
# check transactions-6 success: 1
14878
# INFO: Storage engine used for t1 seems to be transactional.
14881
# check transactions-7 success: 1
14882
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14884
SET @@session.sql_mode = 'traditional';
14885
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14886
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14887
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14888
'', '', 'was inserted' FROM t0_template
14889
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14890
ERROR 22012: Division by 0
14893
# check transactions-8 success: 1
14894
# INFO: Storage engine used for t1 seems to be able to revert
14895
# changes made by the failing statement.
14896
SET @@session.sql_mode = '';
14898
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14900
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14902
# check special-1 success: 1
14903
UPDATE t1 SET f_charbig = '';
14905
# check special-2 success: 1
14906
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14907
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14908
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14909
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14910
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14911
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14912
'just inserted' FROM t0_template
14913
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14914
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14916
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14917
f_charbig = 'updated by trigger'
14918
WHERE f_int1 = new.f_int1;
14920
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14921
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14922
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14924
# check trigger-1 success: 1
14925
DROP TRIGGER trg_1;
14926
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14927
f_int2 = CAST(f_char1 AS SIGNED INT),
14928
f_charbig = 'just inserted'
14929
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14931
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14932
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14933
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14934
'just inserted' FROM t0_template
14935
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14936
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14938
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14939
f_charbig = 'updated by trigger'
14940
WHERE f_int1 = new.f_int1;
14942
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14943
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14944
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14946
# check trigger-2 success: 1
14947
DROP TRIGGER trg_1;
14948
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14949
f_int2 = CAST(f_char1 AS SIGNED INT),
14950
f_charbig = 'just inserted'
14951
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14953
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14954
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14955
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14956
'just inserted' FROM t0_template
14957
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14958
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14960
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14961
f_charbig = 'updated by trigger'
14962
WHERE f_int1 = new.f_int1;
14964
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14965
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14967
# check trigger-3 success: 1
14968
DROP TRIGGER trg_1;
14969
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14970
f_int2 = CAST(f_char1 AS SIGNED INT),
14971
f_charbig = 'just inserted'
14972
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14974
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14975
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14976
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14977
'just inserted' FROM t0_template
14978
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14979
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14981
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14982
f_charbig = 'updated by trigger'
14983
WHERE f_int1 = - old.f_int1;
14985
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14986
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14988
# check trigger-4 success: 1
14989
DROP TRIGGER trg_1;
14990
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14991
f_int2 = CAST(f_char1 AS SIGNED INT),
14992
f_charbig = 'just inserted'
14993
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14995
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14996
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14997
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14998
'just inserted' FROM t0_template
14999
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15000
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15002
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15003
f_charbig = 'updated by trigger'
15004
WHERE f_int1 = new.f_int1;
15006
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15007
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15009
# check trigger-5 success: 1
15010
DROP TRIGGER trg_1;
15011
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15012
f_int2 = CAST(f_char1 AS SIGNED INT),
15013
f_charbig = 'just inserted'
15014
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15016
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15017
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15018
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15019
'just inserted' FROM t0_template
15020
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15021
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15023
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15024
f_charbig = 'updated by trigger'
15025
WHERE f_int1 = - old.f_int1;
15027
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15028
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15030
# check trigger-6 success: 1
15031
DROP TRIGGER trg_1;
15032
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15033
f_int2 = CAST(f_char1 AS SIGNED INT),
15034
f_charbig = 'just inserted'
15035
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15037
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15038
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15039
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15040
'just inserted' FROM t0_template
15041
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15042
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15044
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15045
f_charbig = 'updated by trigger'
15046
WHERE f_int1 = - old.f_int1;
15049
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15051
# check trigger-7 success: 1
15052
DROP TRIGGER trg_1;
15053
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15054
f_int2 = CAST(f_char1 AS SIGNED INT),
15055
f_charbig = 'just inserted'
15056
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15058
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15059
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15060
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15061
'just inserted' FROM t0_template
15062
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15063
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15065
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15066
f_charbig = 'updated by trigger'
15067
WHERE f_int1 = - old.f_int1;
15070
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15072
# check trigger-8 success: 1
15073
DROP TRIGGER trg_1;
15074
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15075
f_int2 = CAST(f_char1 AS SIGNED INT),
15076
f_charbig = 'just inserted'
15077
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15079
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15081
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15082
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15084
SET new.f_int1 = old.f_int1 + @max_row,
15085
new.f_int2 = old.f_int2 - @max_row,
15086
new.f_charbig = '####updated per update trigger####';
15089
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15090
f_charbig = '####updated per update statement itself####';
15092
# check trigger-9 success: 1
15093
DROP TRIGGER trg_2;
15094
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15095
f_int2 = CAST(f_char1 AS SIGNED INT),
15096
f_charbig = CONCAT('===',f_char1,'===');
15097
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15099
SET new.f_int1 = new.f_int1 + @max_row,
15100
new.f_int2 = new.f_int2 - @max_row,
15101
new.f_charbig = '####updated per update trigger####';
15104
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15105
f_charbig = '####updated per update statement itself####';
15107
# check trigger-10 success: 1
15108
DROP TRIGGER trg_2;
15109
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15110
f_int2 = CAST(f_char1 AS SIGNED INT),
15111
f_charbig = CONCAT('===',f_char1,'===');
15112
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15114
SET new.f_int1 = @my_max1 + @counter,
15115
new.f_int2 = @my_min2 - @counter,
15116
new.f_charbig = '####updated per insert trigger####';
15117
SET @counter = @counter + 1;
15120
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15121
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15122
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15123
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15124
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15126
DROP TRIGGER trg_3;
15128
# check trigger-11 success: 1
15130
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15131
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15132
AND f_charbig = '####updated per insert trigger####';
15133
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15135
SET new.f_int1 = @my_max1 + @counter,
15136
new.f_int2 = @my_min2 - @counter,
15137
new.f_charbig = '####updated per insert trigger####';
15138
SET @counter = @counter + 1;
15141
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15142
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15143
SELECT CAST(f_int1 AS CHAR),
15144
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15145
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15147
DROP TRIGGER trg_3;
15149
# check trigger-12 success: 1
15151
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15152
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15153
AND f_charbig = '####updated per insert trigger####';
15155
Table Op Msg_type Msg_text
15156
test.t1 analyze note The storage engine for the table doesn't support analyze
15157
CHECK TABLE t1 EXTENDED;
15158
Table Op Msg_type Msg_text
15159
test.t1 check note The storage engine for the table doesn't support check
15160
CHECKSUM TABLE t1 EXTENDED;
15162
test.t1 <some_value>
15164
Table Op Msg_type Msg_text
15165
test.t1 optimize note The storage engine for the table doesn't support optimize
15166
# check layout success: 1
15167
REPAIR TABLE t1 EXTENDED;
15168
Table Op Msg_type Msg_text
15169
test.t1 repair note The storage engine for the table doesn't support repair
15170
# check layout success: 1
15173
# check TRUNCATE success: 1
15174
# check layout success: 1
15175
# End usability test (inc/partition_check.inc)
15182
f_charbig VARCHAR(1000)
15183
, PRIMARY KEY(f_int2,f_int1)
15185
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
15186
(PARTITION part_3 VALUES IN (-3),
15187
PARTITION part_2 VALUES IN (-2),
15188
PARTITION part_1 VALUES IN (-1),
15189
PARTITION part_N VALUES IN (NULL),
15190
PARTITION part0 VALUES IN (0),
15191
PARTITION part1 VALUES IN (1),
15192
PARTITION part2 VALUES IN (2),
15193
PARTITION part3 VALUES IN (3));
15194
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15195
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15196
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15197
ALTER TABLE t1 DROP PRIMARY KEY;
15198
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15199
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15200
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15201
# Start usability test (inc/partition_check.inc)
15203
SHOW CREATE TABLE t1;
15205
t1 CREATE TABLE `t1` (
15206
`f_int1` int(11) NOT NULL DEFAULT '0',
15207
`f_int2` int(11) NOT NULL DEFAULT '0',
15208
`f_char1` char(20) DEFAULT NULL,
15209
`f_char2` char(20) DEFAULT NULL,
15210
`f_charbig` varchar(1000) DEFAULT NULL
15211
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,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) */
15213
# check prerequisites-1 success: 1
15214
# check COUNT(*) success: 1
15215
# check MIN/MAX(f_int1) success: 1
15216
# check MIN/MAX(f_int2) success: 1
15217
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15218
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15219
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15220
WHERE f_int1 IN (2,3);
15221
# check prerequisites-3 success: 1
15222
DELETE FROM t1 WHERE f_charbig = 'delete me';
15223
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
15224
# check read via f_int1 success: 1
15225
# check read via f_int2 success: 1
15227
# check multiple-1 success: 1
15228
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15230
# check multiple-2 success: 1
15231
INSERT INTO t1 SELECT * FROM t0_template
15232
WHERE MOD(f_int1,3) = 0;
15234
# check multiple-3 success: 1
15235
UPDATE t1 SET f_int1 = f_int1 + @max_row
15236
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15237
AND @max_row_div2 + @max_row_div4;
15239
# check multiple-4 success: 1
15241
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15242
AND @max_row_div2 + @max_row_div4 + @max_row;
15244
# check multiple-5 success: 1
15245
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15247
SET f_int1 = @cur_value , f_int2 = @cur_value,
15248
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15249
f_charbig = '#SINGLE#';
15251
# check single-1 success: 1
15252
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15254
SET f_int1 = @cur_value , f_int2 = @cur_value,
15255
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15256
f_charbig = '#SINGLE#';
15258
# check single-2 success: 1
15259
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15260
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15261
UPDATE t1 SET f_int1 = @cur_value2
15262
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15264
# check single-3 success: 1
15265
SET @cur_value1= -1;
15266
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15267
UPDATE t1 SET f_int1 = @cur_value1
15268
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15270
# check single-4 success: 1
15271
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15272
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15274
# check single-5 success: 1
15275
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15277
# check single-6 success: 1
15278
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15280
# check single-7 success: 1
15281
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15282
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15283
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15284
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15285
f_charbig = '#NULL#';
15287
SET f_int1 = NULL , f_int2 = -@max_row,
15288
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15289
f_charbig = '#NULL#';
15290
ERROR 23000: Column 'f_int1' cannot be null
15291
# check null success: 1
15293
WHERE f_int1 = 0 AND f_int2 = 0
15294
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15295
AND f_charbig = '#NULL#';
15297
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15298
SELECT f_int1, f_int1, '', '', 'was inserted'
15299
FROM t0_template source_tab
15300
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15302
# check transactions-1 success: 1
15305
# check transactions-2 success: 1
15308
# check transactions-3 success: 1
15309
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15313
# check transactions-4 success: 1
15314
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15315
SELECT f_int1, f_int1, '', '', 'was inserted'
15316
FROM t0_template source_tab
15317
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15319
# check transactions-5 success: 1
15322
# check transactions-6 success: 1
15323
# INFO: Storage engine used for t1 seems to be transactional.
15326
# check transactions-7 success: 1
15327
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15329
SET @@session.sql_mode = 'traditional';
15330
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15331
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15332
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15333
'', '', 'was inserted' FROM t0_template
15334
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15335
ERROR 22012: Division by 0
15338
# check transactions-8 success: 1
15339
# INFO: Storage engine used for t1 seems to be able to revert
15340
# changes made by the failing statement.
15341
SET @@session.sql_mode = '';
15343
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15345
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15347
# check special-1 success: 1
15348
UPDATE t1 SET f_charbig = '';
15350
# check special-2 success: 1
15351
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15352
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15353
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15354
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15355
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15356
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15357
'just inserted' FROM t0_template
15358
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15359
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15361
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15362
f_charbig = 'updated by trigger'
15363
WHERE f_int1 = new.f_int1;
15365
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15366
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15367
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15369
# check trigger-1 success: 1
15370
DROP TRIGGER trg_1;
15371
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15372
f_int2 = CAST(f_char1 AS SIGNED INT),
15373
f_charbig = 'just inserted'
15374
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15376
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15377
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15378
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15379
'just inserted' FROM t0_template
15380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15381
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15383
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15384
f_charbig = 'updated by trigger'
15385
WHERE f_int1 = new.f_int1;
15387
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15388
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15389
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15391
# check trigger-2 success: 1
15392
DROP TRIGGER trg_1;
15393
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15394
f_int2 = CAST(f_char1 AS SIGNED INT),
15395
f_charbig = 'just inserted'
15396
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15398
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15399
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15400
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15401
'just inserted' FROM t0_template
15402
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15403
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15405
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15406
f_charbig = 'updated by trigger'
15407
WHERE f_int1 = new.f_int1;
15409
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15410
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15412
# check trigger-3 success: 1
15413
DROP TRIGGER trg_1;
15414
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15415
f_int2 = CAST(f_char1 AS SIGNED INT),
15416
f_charbig = 'just inserted'
15417
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15419
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15420
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15421
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15422
'just inserted' FROM t0_template
15423
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15424
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15426
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15427
f_charbig = 'updated by trigger'
15428
WHERE f_int1 = - old.f_int1;
15430
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15431
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15433
# check trigger-4 success: 1
15434
DROP TRIGGER trg_1;
15435
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15436
f_int2 = CAST(f_char1 AS SIGNED INT),
15437
f_charbig = 'just inserted'
15438
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15440
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15441
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15442
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15443
'just inserted' FROM t0_template
15444
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15445
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15447
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15448
f_charbig = 'updated by trigger'
15449
WHERE f_int1 = new.f_int1;
15451
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15452
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15454
# check trigger-5 success: 1
15455
DROP TRIGGER trg_1;
15456
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15457
f_int2 = CAST(f_char1 AS SIGNED INT),
15458
f_charbig = 'just inserted'
15459
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15461
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15462
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15463
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15464
'just inserted' FROM t0_template
15465
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15466
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15468
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15469
f_charbig = 'updated by trigger'
15470
WHERE f_int1 = - old.f_int1;
15472
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15473
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15475
# check trigger-6 success: 1
15476
DROP TRIGGER trg_1;
15477
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15478
f_int2 = CAST(f_char1 AS SIGNED INT),
15479
f_charbig = 'just inserted'
15480
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15482
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15483
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15484
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15485
'just inserted' FROM t0_template
15486
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15487
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15489
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15490
f_charbig = 'updated by trigger'
15491
WHERE f_int1 = - old.f_int1;
15494
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15496
# check trigger-7 success: 1
15497
DROP TRIGGER trg_1;
15498
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15499
f_int2 = CAST(f_char1 AS SIGNED INT),
15500
f_charbig = 'just inserted'
15501
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15503
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15504
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15505
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15506
'just inserted' FROM t0_template
15507
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15508
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15510
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15511
f_charbig = 'updated by trigger'
15512
WHERE f_int1 = - old.f_int1;
15515
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15517
# check trigger-8 success: 1
15518
DROP TRIGGER trg_1;
15519
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15520
f_int2 = CAST(f_char1 AS SIGNED INT),
15521
f_charbig = 'just inserted'
15522
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15524
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15526
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15527
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15529
SET new.f_int1 = old.f_int1 + @max_row,
15530
new.f_int2 = old.f_int2 - @max_row,
15531
new.f_charbig = '####updated per update trigger####';
15534
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15535
f_charbig = '####updated per update statement itself####';
15537
# check trigger-9 success: 1
15538
DROP TRIGGER trg_2;
15539
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15540
f_int2 = CAST(f_char1 AS SIGNED INT),
15541
f_charbig = CONCAT('===',f_char1,'===');
15542
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15544
SET new.f_int1 = new.f_int1 + @max_row,
15545
new.f_int2 = new.f_int2 - @max_row,
15546
new.f_charbig = '####updated per update trigger####';
15549
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15550
f_charbig = '####updated per update statement itself####';
15552
# check trigger-10 success: 1
15553
DROP TRIGGER trg_2;
15554
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15555
f_int2 = CAST(f_char1 AS SIGNED INT),
15556
f_charbig = CONCAT('===',f_char1,'===');
15557
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15559
SET new.f_int1 = @my_max1 + @counter,
15560
new.f_int2 = @my_min2 - @counter,
15561
new.f_charbig = '####updated per insert trigger####';
15562
SET @counter = @counter + 1;
15565
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15566
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15567
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15568
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15569
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15571
DROP TRIGGER trg_3;
15573
# check trigger-11 success: 1
15575
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15576
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15577
AND f_charbig = '####updated per insert trigger####';
15578
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15580
SET new.f_int1 = @my_max1 + @counter,
15581
new.f_int2 = @my_min2 - @counter,
15582
new.f_charbig = '####updated per insert trigger####';
15583
SET @counter = @counter + 1;
15586
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15587
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15588
SELECT CAST(f_int1 AS CHAR),
15589
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15590
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15592
DROP TRIGGER trg_3;
15594
# check trigger-12 success: 1
15596
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15597
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15598
AND f_charbig = '####updated per insert trigger####';
15600
Table Op Msg_type Msg_text
15601
test.t1 analyze note The storage engine for the table doesn't support analyze
15602
CHECK TABLE t1 EXTENDED;
15603
Table Op Msg_type Msg_text
15604
test.t1 check note The storage engine for the table doesn't support check
15605
CHECKSUM TABLE t1 EXTENDED;
15607
test.t1 <some_value>
15609
Table Op Msg_type Msg_text
15610
test.t1 optimize note The storage engine for the table doesn't support optimize
15611
# check layout success: 1
15612
REPAIR TABLE t1 EXTENDED;
15613
Table Op Msg_type Msg_text
15614
test.t1 repair note The storage engine for the table doesn't support repair
15615
# check layout success: 1
15618
# check TRUNCATE success: 1
15619
# check layout success: 1
15620
# End usability test (inc/partition_check.inc)
15627
f_charbig VARCHAR(1000)
15628
, PRIMARY KEY(f_int2,f_int1)
15630
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
15631
(PARTITION parta VALUES LESS THAN (0),
15632
PARTITION partb VALUES LESS THAN (5),
15633
PARTITION partc VALUES LESS THAN (10),
15634
PARTITION partd VALUES LESS THAN (10 + 5),
15635
PARTITION parte VALUES LESS THAN (20),
15636
PARTITION partf VALUES LESS THAN (2147483646));
15637
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15638
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15639
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15640
ALTER TABLE t1 DROP PRIMARY KEY;
15641
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15642
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15643
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15644
# Start usability test (inc/partition_check.inc)
15646
SHOW CREATE TABLE t1;
15648
t1 CREATE TABLE `t1` (
15649
`f_int1` int(11) NOT NULL DEFAULT '0',
15650
`f_int2` int(11) NOT NULL DEFAULT '0',
15651
`f_char1` char(20) DEFAULT NULL,
15652
`f_char2` char(20) DEFAULT NULL,
15653
`f_charbig` varchar(1000) DEFAULT NULL
15654
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
15656
# check prerequisites-1 success: 1
15657
# check COUNT(*) success: 1
15658
# check MIN/MAX(f_int1) success: 1
15659
# check MIN/MAX(f_int2) success: 1
15660
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15661
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15662
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15663
WHERE f_int1 IN (2,3);
15664
# check prerequisites-3 success: 1
15665
DELETE FROM t1 WHERE f_charbig = 'delete me';
15666
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
15667
# check read via f_int1 success: 1
15668
# check read via f_int2 success: 1
15670
# check multiple-1 success: 1
15671
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15673
# check multiple-2 success: 1
15674
INSERT INTO t1 SELECT * FROM t0_template
15675
WHERE MOD(f_int1,3) = 0;
15677
# check multiple-3 success: 1
15678
UPDATE t1 SET f_int1 = f_int1 + @max_row
15679
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15680
AND @max_row_div2 + @max_row_div4;
15682
# check multiple-4 success: 1
15684
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15685
AND @max_row_div2 + @max_row_div4 + @max_row;
15687
# check multiple-5 success: 1
15688
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15690
SET f_int1 = @cur_value , f_int2 = @cur_value,
15691
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15692
f_charbig = '#SINGLE#';
15694
# check single-1 success: 1
15695
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15697
SET f_int1 = @cur_value , f_int2 = @cur_value,
15698
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15699
f_charbig = '#SINGLE#';
15701
# check single-2 success: 1
15702
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15703
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15704
UPDATE t1 SET f_int1 = @cur_value2
15705
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15707
# check single-3 success: 1
15708
SET @cur_value1= -1;
15709
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15710
UPDATE t1 SET f_int1 = @cur_value1
15711
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15713
# check single-4 success: 1
15714
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15715
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15717
# check single-5 success: 1
15718
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15720
# check single-6 success: 1
15721
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15722
ERROR HY000: Table has no partition for value 2147483647
15723
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15724
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15725
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15726
f_charbig = '#NULL#';
15728
SET f_int1 = NULL , f_int2 = -@max_row,
15729
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15730
f_charbig = '#NULL#';
15731
ERROR 23000: Column 'f_int1' cannot be null
15732
# check null success: 1
15734
WHERE f_int1 = 0 AND f_int2 = 0
15735
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15736
AND f_charbig = '#NULL#';
15738
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15739
SELECT f_int1, f_int1, '', '', 'was inserted'
15740
FROM t0_template source_tab
15741
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15743
# check transactions-1 success: 1
15746
# check transactions-2 success: 1
15749
# check transactions-3 success: 1
15750
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15754
# check transactions-4 success: 1
15755
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15756
SELECT f_int1, f_int1, '', '', 'was inserted'
15757
FROM t0_template source_tab
15758
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15760
# check transactions-5 success: 1
15763
# check transactions-6 success: 1
15764
# INFO: Storage engine used for t1 seems to be transactional.
15767
# check transactions-7 success: 1
15768
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15770
SET @@session.sql_mode = 'traditional';
15771
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15772
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15773
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15774
'', '', 'was inserted' FROM t0_template
15775
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15776
ERROR 22012: Division by 0
15779
# check transactions-8 success: 1
15780
# INFO: Storage engine used for t1 seems to be able to revert
15781
# changes made by the failing statement.
15782
SET @@session.sql_mode = '';
15784
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15786
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15788
# check special-1 success: 1
15789
UPDATE t1 SET f_charbig = '';
15791
# check special-2 success: 1
15792
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15793
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15794
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15795
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15796
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15797
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15798
'just inserted' FROM t0_template
15799
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15800
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15802
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15803
f_charbig = 'updated by trigger'
15804
WHERE f_int1 = new.f_int1;
15806
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15807
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15810
# check trigger-1 success: 1
15811
DROP TRIGGER trg_1;
15812
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15813
f_int2 = CAST(f_char1 AS SIGNED INT),
15814
f_charbig = 'just inserted'
15815
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15817
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15818
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15819
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15820
'just inserted' FROM t0_template
15821
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15822
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15824
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15825
f_charbig = 'updated by trigger'
15826
WHERE f_int1 = new.f_int1;
15828
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15829
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15830
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15832
# check trigger-2 success: 1
15833
DROP TRIGGER trg_1;
15834
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15835
f_int2 = CAST(f_char1 AS SIGNED INT),
15836
f_charbig = 'just inserted'
15837
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15839
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15840
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15841
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15842
'just inserted' FROM t0_template
15843
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15844
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15846
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15847
f_charbig = 'updated by trigger'
15848
WHERE f_int1 = new.f_int1;
15850
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15851
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15853
# check trigger-3 success: 1
15854
DROP TRIGGER trg_1;
15855
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15856
f_int2 = CAST(f_char1 AS SIGNED INT),
15857
f_charbig = 'just inserted'
15858
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15860
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15861
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15862
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15863
'just inserted' FROM t0_template
15864
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15865
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15867
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15868
f_charbig = 'updated by trigger'
15869
WHERE f_int1 = - old.f_int1;
15871
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15872
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15874
# check trigger-4 success: 1
15875
DROP TRIGGER trg_1;
15876
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15877
f_int2 = CAST(f_char1 AS SIGNED INT),
15878
f_charbig = 'just inserted'
15879
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15881
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15882
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15883
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15884
'just inserted' FROM t0_template
15885
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15886
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15888
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15889
f_charbig = 'updated by trigger'
15890
WHERE f_int1 = new.f_int1;
15892
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15893
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15895
# check trigger-5 success: 1
15896
DROP TRIGGER trg_1;
15897
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15898
f_int2 = CAST(f_char1 AS SIGNED INT),
15899
f_charbig = 'just inserted'
15900
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15902
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15903
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15904
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15905
'just inserted' FROM t0_template
15906
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15907
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15909
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15910
f_charbig = 'updated by trigger'
15911
WHERE f_int1 = - old.f_int1;
15913
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15914
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15916
# check trigger-6 success: 1
15917
DROP TRIGGER trg_1;
15918
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15919
f_int2 = CAST(f_char1 AS SIGNED INT),
15920
f_charbig = 'just inserted'
15921
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15923
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15924
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15925
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15926
'just inserted' FROM t0_template
15927
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15928
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15930
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15931
f_charbig = 'updated by trigger'
15932
WHERE f_int1 = - old.f_int1;
15935
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15937
# check trigger-7 success: 1
15938
DROP TRIGGER trg_1;
15939
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15940
f_int2 = CAST(f_char1 AS SIGNED INT),
15941
f_charbig = 'just inserted'
15942
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15944
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15945
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15946
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15947
'just inserted' FROM t0_template
15948
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15949
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15951
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15952
f_charbig = 'updated by trigger'
15953
WHERE f_int1 = - old.f_int1;
15956
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15958
# check trigger-8 success: 1
15959
DROP TRIGGER trg_1;
15960
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15961
f_int2 = CAST(f_char1 AS SIGNED INT),
15962
f_charbig = 'just inserted'
15963
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15965
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15967
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15968
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15970
SET new.f_int1 = old.f_int1 + @max_row,
15971
new.f_int2 = old.f_int2 - @max_row,
15972
new.f_charbig = '####updated per update trigger####';
15975
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15976
f_charbig = '####updated per update statement itself####';
15978
# check trigger-9 success: 1
15979
DROP TRIGGER trg_2;
15980
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15981
f_int2 = CAST(f_char1 AS SIGNED INT),
15982
f_charbig = CONCAT('===',f_char1,'===');
15983
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15985
SET new.f_int1 = new.f_int1 + @max_row,
15986
new.f_int2 = new.f_int2 - @max_row,
15987
new.f_charbig = '####updated per update trigger####';
15990
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15991
f_charbig = '####updated per update statement itself####';
15993
# check trigger-10 success: 1
15994
DROP TRIGGER trg_2;
15995
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15996
f_int2 = CAST(f_char1 AS SIGNED INT),
15997
f_charbig = CONCAT('===',f_char1,'===');
15998
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16000
SET new.f_int1 = @my_max1 + @counter,
16001
new.f_int2 = @my_min2 - @counter,
16002
new.f_charbig = '####updated per insert trigger####';
16003
SET @counter = @counter + 1;
16006
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16007
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16008
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16009
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16010
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16012
DROP TRIGGER trg_3;
16014
# check trigger-11 success: 1
16016
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16017
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16018
AND f_charbig = '####updated per insert trigger####';
16019
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16021
SET new.f_int1 = @my_max1 + @counter,
16022
new.f_int2 = @my_min2 - @counter,
16023
new.f_charbig = '####updated per insert trigger####';
16024
SET @counter = @counter + 1;
16027
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16028
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16029
SELECT CAST(f_int1 AS CHAR),
16030
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16031
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16033
DROP TRIGGER trg_3;
16035
# check trigger-12 success: 1
16037
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16038
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16039
AND f_charbig = '####updated per insert trigger####';
16041
Table Op Msg_type Msg_text
16042
test.t1 analyze note The storage engine for the table doesn't support analyze
16043
CHECK TABLE t1 EXTENDED;
16044
Table Op Msg_type Msg_text
16045
test.t1 check note The storage engine for the table doesn't support check
16046
CHECKSUM TABLE t1 EXTENDED;
16048
test.t1 <some_value>
16050
Table Op Msg_type Msg_text
16051
test.t1 optimize note The storage engine for the table doesn't support optimize
16052
# check layout success: 1
16053
REPAIR TABLE t1 EXTENDED;
16054
Table Op Msg_type Msg_text
16055
test.t1 repair note The storage engine for the table doesn't support repair
16056
# check layout success: 1
16059
# check TRUNCATE success: 1
16060
# check layout success: 1
16061
# End usability test (inc/partition_check.inc)
16068
f_charbig VARCHAR(1000)
16069
, PRIMARY KEY(f_int2,f_int1)
16071
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
16072
(PARTITION parta VALUES LESS THAN (0),
16073
PARTITION partb VALUES LESS THAN (5),
16074
PARTITION partc VALUES LESS THAN (10),
16075
PARTITION partd VALUES LESS THAN (2147483646));
16076
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16077
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16078
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16079
ALTER TABLE t1 DROP PRIMARY KEY;
16080
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16081
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16082
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16083
# Start usability test (inc/partition_check.inc)
16085
SHOW CREATE TABLE t1;
16087
t1 CREATE TABLE `t1` (
16088
`f_int1` int(11) NOT NULL DEFAULT '0',
16089
`f_int2` int(11) NOT NULL DEFAULT '0',
16090
`f_char1` char(20) DEFAULT NULL,
16091
`f_char2` char(20) DEFAULT NULL,
16092
`f_charbig` varchar(1000) DEFAULT NULL
16093
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
16095
# check prerequisites-1 success: 1
16096
# check COUNT(*) success: 1
16097
# check MIN/MAX(f_int1) success: 1
16098
# check MIN/MAX(f_int2) success: 1
16099
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16100
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16101
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16102
WHERE f_int1 IN (2,3);
16103
# check prerequisites-3 success: 1
16104
DELETE FROM t1 WHERE f_charbig = 'delete me';
16105
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16106
# check read via f_int1 success: 1
16107
# check read via f_int2 success: 1
16109
# check multiple-1 success: 1
16110
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16112
# check multiple-2 success: 1
16113
INSERT INTO t1 SELECT * FROM t0_template
16114
WHERE MOD(f_int1,3) = 0;
16116
# check multiple-3 success: 1
16117
UPDATE t1 SET f_int1 = f_int1 + @max_row
16118
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16119
AND @max_row_div2 + @max_row_div4;
16121
# check multiple-4 success: 1
16123
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16124
AND @max_row_div2 + @max_row_div4 + @max_row;
16126
# check multiple-5 success: 1
16127
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16129
SET f_int1 = @cur_value , f_int2 = @cur_value,
16130
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16131
f_charbig = '#SINGLE#';
16133
# check single-1 success: 1
16134
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16136
SET f_int1 = @cur_value , f_int2 = @cur_value,
16137
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16138
f_charbig = '#SINGLE#';
16140
# check single-2 success: 1
16141
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16142
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16143
UPDATE t1 SET f_int1 = @cur_value2
16144
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16146
# check single-3 success: 1
16147
SET @cur_value1= -1;
16148
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16149
UPDATE t1 SET f_int1 = @cur_value1
16150
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16152
# check single-4 success: 1
16153
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16154
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16156
# check single-5 success: 1
16157
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16159
# check single-6 success: 1
16160
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16161
ERROR HY000: Table has no partition for value 2147483647
16162
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16163
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16164
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16165
f_charbig = '#NULL#';
16167
SET f_int1 = NULL , f_int2 = -@max_row,
16168
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16169
f_charbig = '#NULL#';
16170
ERROR 23000: Column 'f_int1' cannot be null
16171
# check null success: 1
16173
WHERE f_int1 = 0 AND f_int2 = 0
16174
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16175
AND f_charbig = '#NULL#';
16177
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16178
SELECT f_int1, f_int1, '', '', 'was inserted'
16179
FROM t0_template source_tab
16180
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16182
# check transactions-1 success: 1
16185
# check transactions-2 success: 1
16188
# check transactions-3 success: 1
16189
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16193
# check transactions-4 success: 1
16194
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16195
SELECT f_int1, f_int1, '', '', 'was inserted'
16196
FROM t0_template source_tab
16197
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16199
# check transactions-5 success: 1
16202
# check transactions-6 success: 1
16203
# INFO: Storage engine used for t1 seems to be transactional.
16206
# check transactions-7 success: 1
16207
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16209
SET @@session.sql_mode = 'traditional';
16210
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16211
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16212
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16213
'', '', 'was inserted' FROM t0_template
16214
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16215
ERROR 22012: Division by 0
16218
# check transactions-8 success: 1
16219
# INFO: Storage engine used for t1 seems to be able to revert
16220
# changes made by the failing statement.
16221
SET @@session.sql_mode = '';
16223
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16225
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16227
# check special-1 success: 1
16228
UPDATE t1 SET f_charbig = '';
16230
# check special-2 success: 1
16231
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16232
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16233
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16235
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16236
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16237
'just inserted' FROM t0_template
16238
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16239
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16241
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16242
f_charbig = 'updated by trigger'
16243
WHERE f_int1 = new.f_int1;
16245
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16246
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16249
# check trigger-1 success: 1
16250
DROP TRIGGER trg_1;
16251
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16252
f_int2 = CAST(f_char1 AS SIGNED INT),
16253
f_charbig = 'just inserted'
16254
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16256
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16257
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16258
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16259
'just inserted' FROM t0_template
16260
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16261
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16263
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16264
f_charbig = 'updated by trigger'
16265
WHERE f_int1 = new.f_int1;
16267
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16268
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16269
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16271
# check trigger-2 success: 1
16272
DROP TRIGGER trg_1;
16273
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16274
f_int2 = CAST(f_char1 AS SIGNED INT),
16275
f_charbig = 'just inserted'
16276
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16278
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16279
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16280
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16281
'just inserted' FROM t0_template
16282
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16283
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16285
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16286
f_charbig = 'updated by trigger'
16287
WHERE f_int1 = new.f_int1;
16289
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16290
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16292
# check trigger-3 success: 1
16293
DROP TRIGGER trg_1;
16294
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16295
f_int2 = CAST(f_char1 AS SIGNED INT),
16296
f_charbig = 'just inserted'
16297
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16299
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16300
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16301
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16302
'just inserted' FROM t0_template
16303
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16304
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16306
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16307
f_charbig = 'updated by trigger'
16308
WHERE f_int1 = - old.f_int1;
16310
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16311
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16313
# check trigger-4 success: 1
16314
DROP TRIGGER trg_1;
16315
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16316
f_int2 = CAST(f_char1 AS SIGNED INT),
16317
f_charbig = 'just inserted'
16318
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16320
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16321
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16322
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16323
'just inserted' FROM t0_template
16324
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16325
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16327
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16328
f_charbig = 'updated by trigger'
16329
WHERE f_int1 = new.f_int1;
16331
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16332
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16334
# check trigger-5 success: 1
16335
DROP TRIGGER trg_1;
16336
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16337
f_int2 = CAST(f_char1 AS SIGNED INT),
16338
f_charbig = 'just inserted'
16339
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16341
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16342
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16343
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16344
'just inserted' FROM t0_template
16345
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16346
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16348
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16349
f_charbig = 'updated by trigger'
16350
WHERE f_int1 = - old.f_int1;
16352
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16353
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16355
# check trigger-6 success: 1
16356
DROP TRIGGER trg_1;
16357
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16358
f_int2 = CAST(f_char1 AS SIGNED INT),
16359
f_charbig = 'just inserted'
16360
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16362
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16363
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16364
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16365
'just inserted' FROM t0_template
16366
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16367
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16369
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16370
f_charbig = 'updated by trigger'
16371
WHERE f_int1 = - old.f_int1;
16374
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16376
# check trigger-7 success: 1
16377
DROP TRIGGER trg_1;
16378
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16379
f_int2 = CAST(f_char1 AS SIGNED INT),
16380
f_charbig = 'just inserted'
16381
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16383
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16384
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16385
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16386
'just inserted' FROM t0_template
16387
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16388
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16390
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16391
f_charbig = 'updated by trigger'
16392
WHERE f_int1 = - old.f_int1;
16395
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16397
# check trigger-8 success: 1
16398
DROP TRIGGER trg_1;
16399
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16400
f_int2 = CAST(f_char1 AS SIGNED INT),
16401
f_charbig = 'just inserted'
16402
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16404
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16406
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16407
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16409
SET new.f_int1 = old.f_int1 + @max_row,
16410
new.f_int2 = old.f_int2 - @max_row,
16411
new.f_charbig = '####updated per update trigger####';
16414
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16415
f_charbig = '####updated per update statement itself####';
16417
# check trigger-9 success: 1
16418
DROP TRIGGER trg_2;
16419
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16420
f_int2 = CAST(f_char1 AS SIGNED INT),
16421
f_charbig = CONCAT('===',f_char1,'===');
16422
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16424
SET new.f_int1 = new.f_int1 + @max_row,
16425
new.f_int2 = new.f_int2 - @max_row,
16426
new.f_charbig = '####updated per update trigger####';
16429
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16430
f_charbig = '####updated per update statement itself####';
16432
# check trigger-10 success: 1
16433
DROP TRIGGER trg_2;
16434
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16435
f_int2 = CAST(f_char1 AS SIGNED INT),
16436
f_charbig = CONCAT('===',f_char1,'===');
16437
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16439
SET new.f_int1 = @my_max1 + @counter,
16440
new.f_int2 = @my_min2 - @counter,
16441
new.f_charbig = '####updated per insert trigger####';
16442
SET @counter = @counter + 1;
16445
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16446
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16447
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16448
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16449
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16451
DROP TRIGGER trg_3;
16453
# check trigger-11 success: 1
16455
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16456
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16457
AND f_charbig = '####updated per insert trigger####';
16458
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16460
SET new.f_int1 = @my_max1 + @counter,
16461
new.f_int2 = @my_min2 - @counter,
16462
new.f_charbig = '####updated per insert trigger####';
16463
SET @counter = @counter + 1;
16466
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16467
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16468
SELECT CAST(f_int1 AS CHAR),
16469
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16472
DROP TRIGGER trg_3;
16474
# check trigger-12 success: 1
16476
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16477
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16478
AND f_charbig = '####updated per insert trigger####';
16480
Table Op Msg_type Msg_text
16481
test.t1 analyze note The storage engine for the table doesn't support analyze
16482
CHECK TABLE t1 EXTENDED;
16483
Table Op Msg_type Msg_text
16484
test.t1 check note The storage engine for the table doesn't support check
16485
CHECKSUM TABLE t1 EXTENDED;
16487
test.t1 <some_value>
16489
Table Op Msg_type Msg_text
16490
test.t1 optimize note The storage engine for the table doesn't support optimize
16491
# check layout success: 1
16492
REPAIR TABLE t1 EXTENDED;
16493
Table Op Msg_type Msg_text
16494
test.t1 repair note The storage engine for the table doesn't support repair
16495
# check layout success: 1
16498
# check TRUNCATE success: 1
16499
# check layout success: 1
16500
# End usability test (inc/partition_check.inc)
16507
f_charbig VARCHAR(1000)
16508
, PRIMARY KEY(f_int2,f_int1)
16510
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
16511
(PARTITION part1 VALUES LESS THAN (0)
16512
(SUBPARTITION subpart11, SUBPARTITION subpart12),
16513
PARTITION part2 VALUES LESS THAN (5)
16514
(SUBPARTITION subpart21, SUBPARTITION subpart22),
16515
PARTITION part3 VALUES LESS THAN (10)
16516
(SUBPARTITION subpart31, SUBPARTITION subpart32),
16517
PARTITION part4 VALUES LESS THAN (2147483646)
16518
(SUBPARTITION subpart41, SUBPARTITION subpart42));
16519
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16520
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16521
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16522
ALTER TABLE t1 DROP PRIMARY KEY;
16523
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16524
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16525
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16526
# Start usability test (inc/partition_check.inc)
16528
SHOW CREATE TABLE t1;
16530
t1 CREATE TABLE `t1` (
16531
`f_int1` int(11) NOT NULL DEFAULT '0',
16532
`f_int2` int(11) NOT NULL DEFAULT '0',
16533
`f_char1` char(20) DEFAULT NULL,
16534
`f_char2` char(20) DEFAULT NULL,
16535
`f_charbig` varchar(1000) DEFAULT NULL
16536
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
16538
# check prerequisites-1 success: 1
16539
# check COUNT(*) success: 1
16540
# check MIN/MAX(f_int1) success: 1
16541
# check MIN/MAX(f_int2) success: 1
16542
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16543
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16544
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16545
WHERE f_int1 IN (2,3);
16546
# check prerequisites-3 success: 1
16547
DELETE FROM t1 WHERE f_charbig = 'delete me';
16548
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16549
# check read via f_int1 success: 1
16550
# check read via f_int2 success: 1
16552
# check multiple-1 success: 1
16553
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16555
# check multiple-2 success: 1
16556
INSERT INTO t1 SELECT * FROM t0_template
16557
WHERE MOD(f_int1,3) = 0;
16559
# check multiple-3 success: 1
16560
UPDATE t1 SET f_int1 = f_int1 + @max_row
16561
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16562
AND @max_row_div2 + @max_row_div4;
16564
# check multiple-4 success: 1
16566
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16567
AND @max_row_div2 + @max_row_div4 + @max_row;
16569
# check multiple-5 success: 1
16570
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16572
SET f_int1 = @cur_value , f_int2 = @cur_value,
16573
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16574
f_charbig = '#SINGLE#';
16576
# check single-1 success: 1
16577
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16579
SET f_int1 = @cur_value , f_int2 = @cur_value,
16580
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16581
f_charbig = '#SINGLE#';
16583
# check single-2 success: 1
16584
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16585
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16586
UPDATE t1 SET f_int1 = @cur_value2
16587
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16589
# check single-3 success: 1
16590
SET @cur_value1= -1;
16591
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16592
UPDATE t1 SET f_int1 = @cur_value1
16593
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16595
# check single-4 success: 1
16596
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16597
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16599
# check single-5 success: 1
16600
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16602
# check single-6 success: 1
16603
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16604
ERROR HY000: Table has no partition for value 2147483647
16605
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16606
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16607
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16608
f_charbig = '#NULL#';
16610
SET f_int1 = NULL , f_int2 = -@max_row,
16611
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16612
f_charbig = '#NULL#';
16613
ERROR 23000: Column 'f_int1' cannot be null
16614
# check null success: 1
16616
WHERE f_int1 = 0 AND f_int2 = 0
16617
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16618
AND f_charbig = '#NULL#';
16620
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16621
SELECT f_int1, f_int1, '', '', 'was inserted'
16622
FROM t0_template source_tab
16623
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16625
# check transactions-1 success: 1
16628
# check transactions-2 success: 1
16631
# check transactions-3 success: 1
16632
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16636
# check transactions-4 success: 1
16637
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16638
SELECT f_int1, f_int1, '', '', 'was inserted'
16639
FROM t0_template source_tab
16640
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16642
# check transactions-5 success: 1
16645
# check transactions-6 success: 1
16646
# INFO: Storage engine used for t1 seems to be transactional.
16649
# check transactions-7 success: 1
16650
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16652
SET @@session.sql_mode = 'traditional';
16653
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16654
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16655
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16656
'', '', 'was inserted' FROM t0_template
16657
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16658
ERROR 22012: Division by 0
16661
# check transactions-8 success: 1
16662
# INFO: Storage engine used for t1 seems to be able to revert
16663
# changes made by the failing statement.
16664
SET @@session.sql_mode = '';
16666
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16668
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16670
# check special-1 success: 1
16671
UPDATE t1 SET f_charbig = '';
16673
# check special-2 success: 1
16674
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16675
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16676
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16677
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16678
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16679
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16680
'just inserted' FROM t0_template
16681
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16682
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16684
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16685
f_charbig = 'updated by trigger'
16686
WHERE f_int1 = new.f_int1;
16688
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16689
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16690
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16692
# check trigger-1 success: 1
16693
DROP TRIGGER trg_1;
16694
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16695
f_int2 = CAST(f_char1 AS SIGNED INT),
16696
f_charbig = 'just inserted'
16697
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16699
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16702
'just inserted' FROM t0_template
16703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16704
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16707
f_charbig = 'updated by trigger'
16708
WHERE f_int1 = new.f_int1;
16710
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16711
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16712
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16714
# check trigger-2 success: 1
16715
DROP TRIGGER trg_1;
16716
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16717
f_int2 = CAST(f_char1 AS SIGNED INT),
16718
f_charbig = 'just inserted'
16719
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16721
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16722
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16723
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16724
'just inserted' FROM t0_template
16725
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16726
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16728
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16729
f_charbig = 'updated by trigger'
16730
WHERE f_int1 = new.f_int1;
16732
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16733
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16735
# check trigger-3 success: 1
16736
DROP TRIGGER trg_1;
16737
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16738
f_int2 = CAST(f_char1 AS SIGNED INT),
16739
f_charbig = 'just inserted'
16740
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16742
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16743
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16744
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16745
'just inserted' FROM t0_template
16746
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16747
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16749
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16750
f_charbig = 'updated by trigger'
16751
WHERE f_int1 = - old.f_int1;
16753
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16754
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16756
# check trigger-4 success: 1
16757
DROP TRIGGER trg_1;
16758
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16759
f_int2 = CAST(f_char1 AS SIGNED INT),
16760
f_charbig = 'just inserted'
16761
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16763
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16764
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16765
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16766
'just inserted' FROM t0_template
16767
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16768
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16770
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16771
f_charbig = 'updated by trigger'
16772
WHERE f_int1 = new.f_int1;
16774
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16775
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16777
# check trigger-5 success: 1
16778
DROP TRIGGER trg_1;
16779
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16780
f_int2 = CAST(f_char1 AS SIGNED INT),
16781
f_charbig = 'just inserted'
16782
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16784
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16785
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16786
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16787
'just inserted' FROM t0_template
16788
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16789
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16791
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16792
f_charbig = 'updated by trigger'
16793
WHERE f_int1 = - old.f_int1;
16795
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16796
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16798
# check trigger-6 success: 1
16799
DROP TRIGGER trg_1;
16800
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16801
f_int2 = CAST(f_char1 AS SIGNED INT),
16802
f_charbig = 'just inserted'
16803
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16805
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16806
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16807
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16808
'just inserted' FROM t0_template
16809
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16810
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16812
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16813
f_charbig = 'updated by trigger'
16814
WHERE f_int1 = - old.f_int1;
16817
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16819
# check trigger-7 success: 1
16820
DROP TRIGGER trg_1;
16821
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16822
f_int2 = CAST(f_char1 AS SIGNED INT),
16823
f_charbig = 'just inserted'
16824
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16826
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16827
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16828
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16829
'just inserted' FROM t0_template
16830
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16831
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16833
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16834
f_charbig = 'updated by trigger'
16835
WHERE f_int1 = - old.f_int1;
16838
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16840
# check trigger-8 success: 1
16841
DROP TRIGGER trg_1;
16842
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16843
f_int2 = CAST(f_char1 AS SIGNED INT),
16844
f_charbig = 'just inserted'
16845
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16847
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16849
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16850
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16852
SET new.f_int1 = old.f_int1 + @max_row,
16853
new.f_int2 = old.f_int2 - @max_row,
16854
new.f_charbig = '####updated per update trigger####';
16857
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16858
f_charbig = '####updated per update statement itself####';
16860
# check trigger-9 success: 1
16861
DROP TRIGGER trg_2;
16862
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16863
f_int2 = CAST(f_char1 AS SIGNED INT),
16864
f_charbig = CONCAT('===',f_char1,'===');
16865
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16867
SET new.f_int1 = new.f_int1 + @max_row,
16868
new.f_int2 = new.f_int2 - @max_row,
16869
new.f_charbig = '####updated per update trigger####';
16872
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16873
f_charbig = '####updated per update statement itself####';
16875
# check trigger-10 success: 1
16876
DROP TRIGGER trg_2;
16877
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16878
f_int2 = CAST(f_char1 AS SIGNED INT),
16879
f_charbig = CONCAT('===',f_char1,'===');
16880
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16882
SET new.f_int1 = @my_max1 + @counter,
16883
new.f_int2 = @my_min2 - @counter,
16884
new.f_charbig = '####updated per insert trigger####';
16885
SET @counter = @counter + 1;
16888
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16889
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16890
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16891
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16892
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16894
DROP TRIGGER trg_3;
16896
# check trigger-11 success: 1
16898
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16899
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16900
AND f_charbig = '####updated per insert trigger####';
16901
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16903
SET new.f_int1 = @my_max1 + @counter,
16904
new.f_int2 = @my_min2 - @counter,
16905
new.f_charbig = '####updated per insert trigger####';
16906
SET @counter = @counter + 1;
16909
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16910
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16911
SELECT CAST(f_int1 AS CHAR),
16912
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16913
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16915
DROP TRIGGER trg_3;
16917
# check trigger-12 success: 1
16919
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16920
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16921
AND f_charbig = '####updated per insert trigger####';
16923
Table Op Msg_type Msg_text
16924
test.t1 analyze note The storage engine for the table doesn't support analyze
16925
CHECK TABLE t1 EXTENDED;
16926
Table Op Msg_type Msg_text
16927
test.t1 check note The storage engine for the table doesn't support check
16928
CHECKSUM TABLE t1 EXTENDED;
16930
test.t1 <some_value>
16932
Table Op Msg_type Msg_text
16933
test.t1 optimize note The storage engine for the table doesn't support optimize
16934
# check layout success: 1
16935
REPAIR TABLE t1 EXTENDED;
16936
Table Op Msg_type Msg_text
16937
test.t1 repair note The storage engine for the table doesn't support repair
16938
# check layout success: 1
16941
# check TRUNCATE success: 1
16942
# check layout success: 1
16943
# End usability test (inc/partition_check.inc)
16950
f_charbig VARCHAR(1000)
16951
, PRIMARY KEY(f_int2,f_int1)
16953
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
16954
(PARTITION part1 VALUES IN (0)
16955
(SUBPARTITION sp11, SUBPARTITION sp12),
16956
PARTITION part2 VALUES IN (1)
16957
(SUBPARTITION sp21, SUBPARTITION sp22),
16958
PARTITION part3 VALUES IN (2)
16959
(SUBPARTITION sp31, SUBPARTITION sp32),
16960
PARTITION part4 VALUES IN (NULL)
16961
(SUBPARTITION sp41, SUBPARTITION sp42));
16962
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16963
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16964
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16965
ALTER TABLE t1 DROP PRIMARY KEY;
16966
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16967
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16968
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16969
# Start usability test (inc/partition_check.inc)
16971
SHOW CREATE TABLE t1;
16973
t1 CREATE TABLE `t1` (
16974
`f_int1` int(11) NOT NULL DEFAULT '0',
16975
`f_int2` int(11) NOT NULL DEFAULT '0',
16976
`f_char1` char(20) DEFAULT NULL,
16977
`f_char2` char(20) DEFAULT NULL,
16978
`f_charbig` varchar(1000) DEFAULT NULL
16979
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
16981
# check prerequisites-1 success: 1
16982
# check COUNT(*) success: 1
16983
# check MIN/MAX(f_int1) success: 1
16984
# check MIN/MAX(f_int2) success: 1
16985
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16986
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16987
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16988
WHERE f_int1 IN (2,3);
16989
# check prerequisites-3 success: 1
16990
DELETE FROM t1 WHERE f_charbig = 'delete me';
16991
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16992
# check read via f_int1 success: 1
16993
# check read via f_int2 success: 1
16995
# check multiple-1 success: 1
16996
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16998
# check multiple-2 success: 1
16999
INSERT INTO t1 SELECT * FROM t0_template
17000
WHERE MOD(f_int1,3) = 0;
17002
# check multiple-3 success: 1
17003
UPDATE t1 SET f_int1 = f_int1 + @max_row
17004
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17005
AND @max_row_div2 + @max_row_div4;
17007
# check multiple-4 success: 1
17009
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17010
AND @max_row_div2 + @max_row_div4 + @max_row;
17012
# check multiple-5 success: 1
17013
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17015
SET f_int1 = @cur_value , f_int2 = @cur_value,
17016
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17017
f_charbig = '#SINGLE#';
17019
# check single-1 success: 1
17020
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17022
SET f_int1 = @cur_value , f_int2 = @cur_value,
17023
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17024
f_charbig = '#SINGLE#';
17026
# check single-2 success: 1
17027
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17028
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17029
UPDATE t1 SET f_int1 = @cur_value2
17030
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17032
# check single-3 success: 1
17033
SET @cur_value1= -1;
17034
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17035
UPDATE t1 SET f_int1 = @cur_value1
17036
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17038
# check single-4 success: 1
17039
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17040
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17042
# check single-5 success: 1
17043
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17045
# check single-6 success: 1
17046
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17048
# check single-7 success: 1
17049
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17050
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17051
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17052
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17053
f_charbig = '#NULL#';
17055
SET f_int1 = NULL , f_int2 = -@max_row,
17056
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17057
f_charbig = '#NULL#';
17058
ERROR 23000: Column 'f_int1' cannot be null
17059
# check null success: 1
17061
WHERE f_int1 = 0 AND f_int2 = 0
17062
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17063
AND f_charbig = '#NULL#';
17065
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17066
SELECT f_int1, f_int1, '', '', 'was inserted'
17067
FROM t0_template source_tab
17068
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17070
# check transactions-1 success: 1
17073
# check transactions-2 success: 1
17076
# check transactions-3 success: 1
17077
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17081
# check transactions-4 success: 1
17082
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17083
SELECT f_int1, f_int1, '', '', 'was inserted'
17084
FROM t0_template source_tab
17085
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17087
# check transactions-5 success: 1
17090
# check transactions-6 success: 1
17091
# INFO: Storage engine used for t1 seems to be transactional.
17094
# check transactions-7 success: 1
17095
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17097
SET @@session.sql_mode = 'traditional';
17098
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17099
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17100
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17101
'', '', 'was inserted' FROM t0_template
17102
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17103
ERROR 22012: Division by 0
17106
# check transactions-8 success: 1
17107
# INFO: Storage engine used for t1 seems to be able to revert
17108
# changes made by the failing statement.
17109
SET @@session.sql_mode = '';
17111
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17113
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17115
# check special-1 success: 1
17116
UPDATE t1 SET f_charbig = '';
17118
# check special-2 success: 1
17119
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17120
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17121
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17122
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17123
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17124
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17125
'just inserted' FROM t0_template
17126
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17127
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17129
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17130
f_charbig = 'updated by trigger'
17131
WHERE f_int1 = new.f_int1;
17133
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17134
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17135
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17137
# check trigger-1 success: 1
17138
DROP TRIGGER trg_1;
17139
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17140
f_int2 = CAST(f_char1 AS SIGNED INT),
17141
f_charbig = 'just inserted'
17142
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17144
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17145
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17146
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17147
'just inserted' FROM t0_template
17148
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17149
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17151
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17152
f_charbig = 'updated by trigger'
17153
WHERE f_int1 = new.f_int1;
17155
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17156
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17157
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17159
# check trigger-2 success: 1
17160
DROP TRIGGER trg_1;
17161
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17162
f_int2 = CAST(f_char1 AS SIGNED INT),
17163
f_charbig = 'just inserted'
17164
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17166
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17167
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17168
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17169
'just inserted' FROM t0_template
17170
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17171
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17173
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17174
f_charbig = 'updated by trigger'
17175
WHERE f_int1 = new.f_int1;
17177
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17178
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17180
# check trigger-3 success: 1
17181
DROP TRIGGER trg_1;
17182
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17183
f_int2 = CAST(f_char1 AS SIGNED INT),
17184
f_charbig = 'just inserted'
17185
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17187
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17188
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17189
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17190
'just inserted' FROM t0_template
17191
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17192
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17194
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17195
f_charbig = 'updated by trigger'
17196
WHERE f_int1 = - old.f_int1;
17198
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17199
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17201
# check trigger-4 success: 1
17202
DROP TRIGGER trg_1;
17203
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17204
f_int2 = CAST(f_char1 AS SIGNED INT),
17205
f_charbig = 'just inserted'
17206
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17208
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17209
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17210
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17211
'just inserted' FROM t0_template
17212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17213
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17215
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17216
f_charbig = 'updated by trigger'
17217
WHERE f_int1 = new.f_int1;
17219
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17220
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17222
# check trigger-5 success: 1
17223
DROP TRIGGER trg_1;
17224
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17225
f_int2 = CAST(f_char1 AS SIGNED INT),
17226
f_charbig = 'just inserted'
17227
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17229
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17230
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17231
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17232
'just inserted' FROM t0_template
17233
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17234
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17236
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17237
f_charbig = 'updated by trigger'
17238
WHERE f_int1 = - old.f_int1;
17240
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17241
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17243
# check trigger-6 success: 1
17244
DROP TRIGGER trg_1;
17245
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17246
f_int2 = CAST(f_char1 AS SIGNED INT),
17247
f_charbig = 'just inserted'
17248
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17250
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17251
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17252
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17253
'just inserted' FROM t0_template
17254
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17255
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17257
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17258
f_charbig = 'updated by trigger'
17259
WHERE f_int1 = - old.f_int1;
17262
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17264
# check trigger-7 success: 1
17265
DROP TRIGGER trg_1;
17266
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17267
f_int2 = CAST(f_char1 AS SIGNED INT),
17268
f_charbig = 'just inserted'
17269
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17271
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17272
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17273
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17274
'just inserted' FROM t0_template
17275
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17276
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17278
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17279
f_charbig = 'updated by trigger'
17280
WHERE f_int1 = - old.f_int1;
17283
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17285
# check trigger-8 success: 1
17286
DROP TRIGGER trg_1;
17287
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17288
f_int2 = CAST(f_char1 AS SIGNED INT),
17289
f_charbig = 'just inserted'
17290
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17292
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17294
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17295
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17297
SET new.f_int1 = old.f_int1 + @max_row,
17298
new.f_int2 = old.f_int2 - @max_row,
17299
new.f_charbig = '####updated per update trigger####';
17302
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17303
f_charbig = '####updated per update statement itself####';
17305
# check trigger-9 success: 1
17306
DROP TRIGGER trg_2;
17307
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17308
f_int2 = CAST(f_char1 AS SIGNED INT),
17309
f_charbig = CONCAT('===',f_char1,'===');
17310
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17312
SET new.f_int1 = new.f_int1 + @max_row,
17313
new.f_int2 = new.f_int2 - @max_row,
17314
new.f_charbig = '####updated per update trigger####';
17317
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17318
f_charbig = '####updated per update statement itself####';
17320
# check trigger-10 success: 1
17321
DROP TRIGGER trg_2;
17322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17323
f_int2 = CAST(f_char1 AS SIGNED INT),
17324
f_charbig = CONCAT('===',f_char1,'===');
17325
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17327
SET new.f_int1 = @my_max1 + @counter,
17328
new.f_int2 = @my_min2 - @counter,
17329
new.f_charbig = '####updated per insert trigger####';
17330
SET @counter = @counter + 1;
17333
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17334
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17335
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17336
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17337
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17339
DROP TRIGGER trg_3;
17341
# check trigger-11 success: 1
17343
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17344
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17345
AND f_charbig = '####updated per insert trigger####';
17346
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17348
SET new.f_int1 = @my_max1 + @counter,
17349
new.f_int2 = @my_min2 - @counter,
17350
new.f_charbig = '####updated per insert trigger####';
17351
SET @counter = @counter + 1;
17354
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17355
INSERT INTO t1 (f_char1, f_char2, f_charbig)
17356
SELECT CAST(f_int1 AS CHAR),
17357
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17358
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17360
DROP TRIGGER trg_3;
17362
# check trigger-12 success: 1
17364
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17365
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17366
AND f_charbig = '####updated per insert trigger####';
17368
Table Op Msg_type Msg_text
17369
test.t1 analyze note The storage engine for the table doesn't support analyze
17370
CHECK TABLE t1 EXTENDED;
17371
Table Op Msg_type Msg_text
17372
test.t1 check note The storage engine for the table doesn't support check
17373
CHECKSUM TABLE t1 EXTENDED;
17375
test.t1 <some_value>
17377
Table Op Msg_type Msg_text
17378
test.t1 optimize note The storage engine for the table doesn't support optimize
17379
# check layout success: 1
17380
REPAIR TABLE t1 EXTENDED;
17381
Table Op Msg_type Msg_text
17382
test.t1 repair note The storage engine for the table doesn't support repair
17383
# check layout success: 1
17386
# check TRUNCATE success: 1
17387
# check layout success: 1
17388
# End usability test (inc/partition_check.inc)
17395
f_charbig VARCHAR(1000)
17396
, PRIMARY KEY(f_int2,f_int1)
17398
PARTITION BY LIST(ABS(MOD(f_int1,2)))
17399
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
17400
(PARTITION part1 VALUES IN (0),
17401
PARTITION part2 VALUES IN (1),
17402
PARTITION part3 VALUES IN (NULL));
17403
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17404
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17405
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17406
ALTER TABLE t1 DROP PRIMARY KEY;
17407
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17408
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17409
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17410
# Start usability test (inc/partition_check.inc)
17412
SHOW CREATE TABLE t1;
17414
t1 CREATE TABLE `t1` (
17415
`f_int1` int(11) NOT NULL DEFAULT '0',
17416
`f_int2` int(11) NOT NULL DEFAULT '0',
17417
`f_char1` char(20) DEFAULT NULL,
17418
`f_char2` char(20) DEFAULT NULL,
17419
`f_charbig` varchar(1000) DEFAULT NULL
17420
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
17422
# check prerequisites-1 success: 1
17423
# check COUNT(*) success: 1
17424
# check MIN/MAX(f_int1) success: 1
17425
# check MIN/MAX(f_int2) success: 1
17426
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17427
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17428
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17429
WHERE f_int1 IN (2,3);
17430
# check prerequisites-3 success: 1
17431
DELETE FROM t1 WHERE f_charbig = 'delete me';
17432
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17433
# check read via f_int1 success: 1
17434
# check read via f_int2 success: 1
17436
# check multiple-1 success: 1
17437
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17439
# check multiple-2 success: 1
17440
INSERT INTO t1 SELECT * FROM t0_template
17441
WHERE MOD(f_int1,3) = 0;
17443
# check multiple-3 success: 1
17444
UPDATE t1 SET f_int1 = f_int1 + @max_row
17445
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17446
AND @max_row_div2 + @max_row_div4;
17448
# check multiple-4 success: 1
17450
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17451
AND @max_row_div2 + @max_row_div4 + @max_row;
17453
# check multiple-5 success: 1
17454
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17456
SET f_int1 = @cur_value , f_int2 = @cur_value,
17457
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17458
f_charbig = '#SINGLE#';
17460
# check single-1 success: 1
17461
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17463
SET f_int1 = @cur_value , f_int2 = @cur_value,
17464
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17465
f_charbig = '#SINGLE#';
17467
# check single-2 success: 1
17468
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17469
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17470
UPDATE t1 SET f_int1 = @cur_value2
17471
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17473
# check single-3 success: 1
17474
SET @cur_value1= -1;
17475
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17476
UPDATE t1 SET f_int1 = @cur_value1
17477
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17479
# check single-4 success: 1
17480
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17481
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17483
# check single-5 success: 1
17484
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17486
# check single-6 success: 1
17487
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17489
# check single-7 success: 1
17490
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17491
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17492
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17493
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17494
f_charbig = '#NULL#';
17496
SET f_int1 = NULL , f_int2 = -@max_row,
17497
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17498
f_charbig = '#NULL#';
17499
ERROR 23000: Column 'f_int1' cannot be null
17500
# check null success: 1
17502
WHERE f_int1 = 0 AND f_int2 = 0
17503
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17504
AND f_charbig = '#NULL#';
17506
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17507
SELECT f_int1, f_int1, '', '', 'was inserted'
17508
FROM t0_template source_tab
17509
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17511
# check transactions-1 success: 1
17514
# check transactions-2 success: 1
17517
# check transactions-3 success: 1
17518
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17522
# check transactions-4 success: 1
17523
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17524
SELECT f_int1, f_int1, '', '', 'was inserted'
17525
FROM t0_template source_tab
17526
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17528
# check transactions-5 success: 1
17531
# check transactions-6 success: 1
17532
# INFO: Storage engine used for t1 seems to be transactional.
17535
# check transactions-7 success: 1
17536
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17538
SET @@session.sql_mode = 'traditional';
17539
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17540
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17541
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17542
'', '', 'was inserted' FROM t0_template
17543
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17544
ERROR 22012: Division by 0
17547
# check transactions-8 success: 1
17548
# INFO: Storage engine used for t1 seems to be able to revert
17549
# changes made by the failing statement.
17550
SET @@session.sql_mode = '';
17552
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17554
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17556
# check special-1 success: 1
17557
UPDATE t1 SET f_charbig = '';
17559
# check special-2 success: 1
17560
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17561
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17562
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17563
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17564
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17565
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17566
'just inserted' FROM t0_template
17567
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17568
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17570
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17571
f_charbig = 'updated by trigger'
17572
WHERE f_int1 = new.f_int1;
17574
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17575
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17576
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17578
# check trigger-1 success: 1
17579
DROP TRIGGER trg_1;
17580
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17581
f_int2 = CAST(f_char1 AS SIGNED INT),
17582
f_charbig = 'just inserted'
17583
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17585
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17586
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17587
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17588
'just inserted' FROM t0_template
17589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17590
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17592
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17593
f_charbig = 'updated by trigger'
17594
WHERE f_int1 = new.f_int1;
17596
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17597
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17598
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17600
# check trigger-2 success: 1
17601
DROP TRIGGER trg_1;
17602
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17603
f_int2 = CAST(f_char1 AS SIGNED INT),
17604
f_charbig = 'just inserted'
17605
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17607
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17608
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17609
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17610
'just inserted' FROM t0_template
17611
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17612
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17614
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17615
f_charbig = 'updated by trigger'
17616
WHERE f_int1 = new.f_int1;
17618
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17619
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17621
# check trigger-3 success: 1
17622
DROP TRIGGER trg_1;
17623
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17624
f_int2 = CAST(f_char1 AS SIGNED INT),
17625
f_charbig = 'just inserted'
17626
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17628
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17629
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17630
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17631
'just inserted' FROM t0_template
17632
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17633
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17635
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17636
f_charbig = 'updated by trigger'
17637
WHERE f_int1 = - old.f_int1;
17639
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17640
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17642
# check trigger-4 success: 1
17643
DROP TRIGGER trg_1;
17644
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17645
f_int2 = CAST(f_char1 AS SIGNED INT),
17646
f_charbig = 'just inserted'
17647
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17649
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17650
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17651
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17652
'just inserted' FROM t0_template
17653
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17654
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17656
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17657
f_charbig = 'updated by trigger'
17658
WHERE f_int1 = new.f_int1;
17660
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17661
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17663
# check trigger-5 success: 1
17664
DROP TRIGGER trg_1;
17665
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17666
f_int2 = CAST(f_char1 AS SIGNED INT),
17667
f_charbig = 'just inserted'
17668
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17670
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17671
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17672
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17673
'just inserted' FROM t0_template
17674
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17675
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17677
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17678
f_charbig = 'updated by trigger'
17679
WHERE f_int1 = - old.f_int1;
17681
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17682
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17684
# check trigger-6 success: 1
17685
DROP TRIGGER trg_1;
17686
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17687
f_int2 = CAST(f_char1 AS SIGNED INT),
17688
f_charbig = 'just inserted'
17689
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17691
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17692
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17693
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17694
'just inserted' FROM t0_template
17695
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17696
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17698
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17699
f_charbig = 'updated by trigger'
17700
WHERE f_int1 = - old.f_int1;
17703
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17705
# check trigger-7 success: 1
17706
DROP TRIGGER trg_1;
17707
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17708
f_int2 = CAST(f_char1 AS SIGNED INT),
17709
f_charbig = 'just inserted'
17710
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17712
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17713
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17714
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17715
'just inserted' FROM t0_template
17716
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17717
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17719
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17720
f_charbig = 'updated by trigger'
17721
WHERE f_int1 = - old.f_int1;
17724
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17726
# check trigger-8 success: 1
17727
DROP TRIGGER trg_1;
17728
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17729
f_int2 = CAST(f_char1 AS SIGNED INT),
17730
f_charbig = 'just inserted'
17731
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17733
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17735
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17736
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17738
SET new.f_int1 = old.f_int1 + @max_row,
17739
new.f_int2 = old.f_int2 - @max_row,
17740
new.f_charbig = '####updated per update trigger####';
17743
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17744
f_charbig = '####updated per update statement itself####';
17746
# check trigger-9 success: 1
17747
DROP TRIGGER trg_2;
17748
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17749
f_int2 = CAST(f_char1 AS SIGNED INT),
17750
f_charbig = CONCAT('===',f_char1,'===');
17751
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17753
SET new.f_int1 = new.f_int1 + @max_row,
17754
new.f_int2 = new.f_int2 - @max_row,
17755
new.f_charbig = '####updated per update trigger####';
17758
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17759
f_charbig = '####updated per update statement itself####';
17761
# check trigger-10 success: 1
17762
DROP TRIGGER trg_2;
17763
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17764
f_int2 = CAST(f_char1 AS SIGNED INT),
17765
f_charbig = CONCAT('===',f_char1,'===');
17766
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17768
SET new.f_int1 = @my_max1 + @counter,
17769
new.f_int2 = @my_min2 - @counter,
17770
new.f_charbig = '####updated per insert trigger####';
17771
SET @counter = @counter + 1;
17774
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17775
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17776
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17777
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17778
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17780
DROP TRIGGER trg_3;
17782
# check trigger-11 success: 1
17784
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17785
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17786
AND f_charbig = '####updated per insert trigger####';
17787
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17789
SET new.f_int1 = @my_max1 + @counter,
17790
new.f_int2 = @my_min2 - @counter,
17791
new.f_charbig = '####updated per insert trigger####';
17792
SET @counter = @counter + 1;
17795
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17796
INSERT INTO t1 (f_char1, f_char2, f_charbig)
17797
SELECT CAST(f_int1 AS CHAR),
17798
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17799
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17801
DROP TRIGGER trg_3;
17803
# check trigger-12 success: 1
17805
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17806
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17807
AND f_charbig = '####updated per insert trigger####';
17809
Table Op Msg_type Msg_text
17810
test.t1 analyze note The storage engine for the table doesn't support analyze
17811
CHECK TABLE t1 EXTENDED;
17812
Table Op Msg_type Msg_text
17813
test.t1 check note The storage engine for the table doesn't support check
17814
CHECKSUM TABLE t1 EXTENDED;
17816
test.t1 <some_value>
17818
Table Op Msg_type Msg_text
17819
test.t1 optimize note The storage engine for the table doesn't support optimize
17820
# check layout success: 1
17821
REPAIR TABLE t1 EXTENDED;
17822
Table Op Msg_type Msg_text
17823
test.t1 repair note The storage engine for the table doesn't support repair
17824
# check layout success: 1
17827
# check TRUNCATE success: 1
17828
# check layout success: 1
17829
# End usability test (inc/partition_check.inc)
17831
# 2.2.2 DROP UNIQUE INDEX consisting of two columns
17832
DROP TABLE IF EXISTS t1;
17838
f_charbig VARCHAR(1000)
17839
, UNIQUE INDEX uidx1 (f_int1,f_int2)
17841
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
17842
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17843
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17844
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17845
ALTER TABLE t1 DROP INDEX uidx1;
17846
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17847
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17848
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17849
# Start usability test (inc/partition_check.inc)
17851
SHOW CREATE TABLE t1;
17853
t1 CREATE TABLE `t1` (
17854
`f_int1` int(11) DEFAULT NULL,
17855
`f_int2` int(11) DEFAULT NULL,
17856
`f_char1` char(20) DEFAULT NULL,
17857
`f_char2` char(20) DEFAULT NULL,
17858
`f_charbig` varchar(1000) DEFAULT NULL
17859
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
17861
# check prerequisites-1 success: 1
17862
# check COUNT(*) success: 1
17863
# check MIN/MAX(f_int1) success: 1
17864
# check MIN/MAX(f_int2) success: 1
17865
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17866
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17867
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17868
WHERE f_int1 IN (2,3);
17869
# check prerequisites-3 success: 1
17870
DELETE FROM t1 WHERE f_charbig = 'delete me';
17871
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17872
# check read via f_int1 success: 1
17873
# check read via f_int2 success: 1
17875
# check multiple-1 success: 1
17876
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17878
# check multiple-2 success: 1
17879
INSERT INTO t1 SELECT * FROM t0_template
17880
WHERE MOD(f_int1,3) = 0;
17882
# check multiple-3 success: 1
17883
UPDATE t1 SET f_int1 = f_int1 + @max_row
17884
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17885
AND @max_row_div2 + @max_row_div4;
17887
# check multiple-4 success: 1
17889
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17890
AND @max_row_div2 + @max_row_div4 + @max_row;
17892
# check multiple-5 success: 1
17893
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17895
SET f_int1 = @cur_value , f_int2 = @cur_value,
17896
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17897
f_charbig = '#SINGLE#';
17899
# check single-1 success: 1
17900
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17902
SET f_int1 = @cur_value , f_int2 = @cur_value,
17903
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17904
f_charbig = '#SINGLE#';
17906
# check single-2 success: 1
17907
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17908
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17909
UPDATE t1 SET f_int1 = @cur_value2
17910
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17912
# check single-3 success: 1
17913
SET @cur_value1= -1;
17914
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17915
UPDATE t1 SET f_int1 = @cur_value1
17916
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17918
# check single-4 success: 1
17919
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17920
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17922
# check single-5 success: 1
17923
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17925
# check single-6 success: 1
17926
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17928
# check single-7 success: 1
17929
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17930
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17931
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17932
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17933
f_charbig = '#NULL#';
17935
SET f_int1 = NULL , f_int2 = -@max_row,
17936
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17937
f_charbig = '#NULL#';
17938
# check null success: 1
17940
# check null-1 success: 1
17941
UPDATE t1 SET f_int1 = -@max_row
17942
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17943
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17945
# check null-2 success: 1
17946
UPDATE t1 SET f_int1 = NULL
17947
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17948
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17950
# check null-3 success: 1
17952
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17953
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17955
# check null-4 success: 1
17957
WHERE f_int1 = 0 AND f_int2 = 0
17958
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17959
AND f_charbig = '#NULL#';
17961
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17962
SELECT f_int1, f_int1, '', '', 'was inserted'
17963
FROM t0_template source_tab
17964
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17966
# check transactions-1 success: 1
17969
# check transactions-2 success: 1
17972
# check transactions-3 success: 1
17973
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17977
# check transactions-4 success: 1
17978
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17979
SELECT f_int1, f_int1, '', '', 'was inserted'
17980
FROM t0_template source_tab
17981
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17983
# check transactions-5 success: 1
17986
# check transactions-6 success: 1
17987
# INFO: Storage engine used for t1 seems to be transactional.
17990
# check transactions-7 success: 1
17991
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17993
SET @@session.sql_mode = 'traditional';
17994
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17995
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17996
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17997
'', '', 'was inserted' FROM t0_template
17998
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17999
ERROR 22012: Division by 0
18002
# check transactions-8 success: 1
18003
# INFO: Storage engine used for t1 seems to be able to revert
18004
# changes made by the failing statement.
18005
SET @@session.sql_mode = '';
18007
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18009
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18011
# check special-1 success: 1
18012
UPDATE t1 SET f_charbig = '';
18014
# check special-2 success: 1
18015
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18016
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18017
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18018
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18019
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18020
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18021
'just inserted' FROM t0_template
18022
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18023
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18025
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18026
f_charbig = 'updated by trigger'
18027
WHERE f_int1 = new.f_int1;
18029
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18030
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18031
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18033
# check trigger-1 success: 1
18034
DROP TRIGGER trg_1;
18035
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18036
f_int2 = CAST(f_char1 AS SIGNED INT),
18037
f_charbig = 'just inserted'
18038
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18040
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18041
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18042
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18043
'just inserted' FROM t0_template
18044
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18045
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18047
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18048
f_charbig = 'updated by trigger'
18049
WHERE f_int1 = new.f_int1;
18051
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18052
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18053
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18055
# check trigger-2 success: 1
18056
DROP TRIGGER trg_1;
18057
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18058
f_int2 = CAST(f_char1 AS SIGNED INT),
18059
f_charbig = 'just inserted'
18060
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18062
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18063
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18064
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18065
'just inserted' FROM t0_template
18066
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18067
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18069
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18070
f_charbig = 'updated by trigger'
18071
WHERE f_int1 = new.f_int1;
18073
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18074
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18076
# check trigger-3 success: 1
18077
DROP TRIGGER trg_1;
18078
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18079
f_int2 = CAST(f_char1 AS SIGNED INT),
18080
f_charbig = 'just inserted'
18081
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18083
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18084
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18085
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18086
'just inserted' FROM t0_template
18087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18088
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18090
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18091
f_charbig = 'updated by trigger'
18092
WHERE f_int1 = - old.f_int1;
18094
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18095
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18097
# check trigger-4 success: 1
18098
DROP TRIGGER trg_1;
18099
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18100
f_int2 = CAST(f_char1 AS SIGNED INT),
18101
f_charbig = 'just inserted'
18102
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18104
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18105
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18106
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18107
'just inserted' FROM t0_template
18108
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18109
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18111
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18112
f_charbig = 'updated by trigger'
18113
WHERE f_int1 = new.f_int1;
18115
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18116
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18118
# check trigger-5 success: 1
18119
DROP TRIGGER trg_1;
18120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18121
f_int2 = CAST(f_char1 AS SIGNED INT),
18122
f_charbig = 'just inserted'
18123
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18125
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18127
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18128
'just inserted' FROM t0_template
18129
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18130
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18132
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18133
f_charbig = 'updated by trigger'
18134
WHERE f_int1 = - old.f_int1;
18136
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18137
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18139
# check trigger-6 success: 1
18140
DROP TRIGGER trg_1;
18141
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18142
f_int2 = CAST(f_char1 AS SIGNED INT),
18143
f_charbig = 'just inserted'
18144
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18146
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18147
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18148
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18149
'just inserted' FROM t0_template
18150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18151
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18153
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18154
f_charbig = 'updated by trigger'
18155
WHERE f_int1 = - old.f_int1;
18158
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18160
# check trigger-7 success: 1
18161
DROP TRIGGER trg_1;
18162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18163
f_int2 = CAST(f_char1 AS SIGNED INT),
18164
f_charbig = 'just inserted'
18165
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18167
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18168
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18169
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18170
'just inserted' FROM t0_template
18171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18172
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18174
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18175
f_charbig = 'updated by trigger'
18176
WHERE f_int1 = - old.f_int1;
18179
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18181
# check trigger-8 success: 1
18182
DROP TRIGGER trg_1;
18183
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18184
f_int2 = CAST(f_char1 AS SIGNED INT),
18185
f_charbig = 'just inserted'
18186
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18188
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18190
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18191
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18193
SET new.f_int1 = old.f_int1 + @max_row,
18194
new.f_int2 = old.f_int2 - @max_row,
18195
new.f_charbig = '####updated per update trigger####';
18198
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18199
f_charbig = '####updated per update statement itself####';
18201
# check trigger-9 success: 1
18202
DROP TRIGGER trg_2;
18203
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18204
f_int2 = CAST(f_char1 AS SIGNED INT),
18205
f_charbig = CONCAT('===',f_char1,'===');
18206
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18208
SET new.f_int1 = new.f_int1 + @max_row,
18209
new.f_int2 = new.f_int2 - @max_row,
18210
new.f_charbig = '####updated per update trigger####';
18213
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18214
f_charbig = '####updated per update statement itself####';
18216
# check trigger-10 success: 1
18217
DROP TRIGGER trg_2;
18218
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18219
f_int2 = CAST(f_char1 AS SIGNED INT),
18220
f_charbig = CONCAT('===',f_char1,'===');
18221
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18223
SET new.f_int1 = @my_max1 + @counter,
18224
new.f_int2 = @my_min2 - @counter,
18225
new.f_charbig = '####updated per insert trigger####';
18226
SET @counter = @counter + 1;
18229
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18230
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18231
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18232
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18233
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18235
DROP TRIGGER trg_3;
18237
# check trigger-11 success: 1
18239
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18240
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18241
AND f_charbig = '####updated per insert trigger####';
18242
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18244
SET new.f_int1 = @my_max1 + @counter,
18245
new.f_int2 = @my_min2 - @counter,
18246
new.f_charbig = '####updated per insert trigger####';
18247
SET @counter = @counter + 1;
18250
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18251
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18252
SELECT CAST(f_int1 AS CHAR),
18253
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18254
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18256
DROP TRIGGER trg_3;
18258
# check trigger-12 success: 1
18260
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18261
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18262
AND f_charbig = '####updated per insert trigger####';
18264
Table Op Msg_type Msg_text
18265
test.t1 analyze note The storage engine for the table doesn't support analyze
18266
CHECK TABLE t1 EXTENDED;
18267
Table Op Msg_type Msg_text
18268
test.t1 check note The storage engine for the table doesn't support check
18269
CHECKSUM TABLE t1 EXTENDED;
18271
test.t1 <some_value>
18273
Table Op Msg_type Msg_text
18274
test.t1 optimize note The storage engine for the table doesn't support optimize
18275
# check layout success: 1
18276
REPAIR TABLE t1 EXTENDED;
18277
Table Op Msg_type Msg_text
18278
test.t1 repair note The storage engine for the table doesn't support repair
18279
# check layout success: 1
18282
# check TRUNCATE success: 1
18283
# check layout success: 1
18284
# End usability test (inc/partition_check.inc)
18291
f_charbig VARCHAR(1000)
18292
, UNIQUE INDEX uidx1 (f_int1,f_int2)
18294
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
18295
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18296
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18297
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18298
ALTER TABLE t1 DROP INDEX uidx1;
18299
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18300
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18301
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18302
# Start usability test (inc/partition_check.inc)
18304
SHOW CREATE TABLE t1;
18306
t1 CREATE TABLE `t1` (
18307
`f_int1` int(11) DEFAULT NULL,
18308
`f_int2` int(11) DEFAULT NULL,
18309
`f_char1` char(20) DEFAULT NULL,
18310
`f_char2` char(20) DEFAULT NULL,
18311
`f_charbig` varchar(1000) DEFAULT NULL
18312
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
18314
# check prerequisites-1 success: 1
18315
# check COUNT(*) success: 1
18316
# check MIN/MAX(f_int1) success: 1
18317
# check MIN/MAX(f_int2) success: 1
18318
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18319
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18320
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18321
WHERE f_int1 IN (2,3);
18322
# check prerequisites-3 success: 1
18323
DELETE FROM t1 WHERE f_charbig = 'delete me';
18324
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
18325
# check read via f_int1 success: 1
18326
# check read via f_int2 success: 1
18328
# check multiple-1 success: 1
18329
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18331
# check multiple-2 success: 1
18332
INSERT INTO t1 SELECT * FROM t0_template
18333
WHERE MOD(f_int1,3) = 0;
18335
# check multiple-3 success: 1
18336
UPDATE t1 SET f_int1 = f_int1 + @max_row
18337
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18338
AND @max_row_div2 + @max_row_div4;
18340
# check multiple-4 success: 1
18342
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18343
AND @max_row_div2 + @max_row_div4 + @max_row;
18345
# check multiple-5 success: 1
18346
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18348
SET f_int1 = @cur_value , f_int2 = @cur_value,
18349
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18350
f_charbig = '#SINGLE#';
18352
# check single-1 success: 1
18353
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18355
SET f_int1 = @cur_value , f_int2 = @cur_value,
18356
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18357
f_charbig = '#SINGLE#';
18359
# check single-2 success: 1
18360
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18361
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18362
UPDATE t1 SET f_int1 = @cur_value2
18363
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18365
# check single-3 success: 1
18366
SET @cur_value1= -1;
18367
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18368
UPDATE t1 SET f_int1 = @cur_value1
18369
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18371
# check single-4 success: 1
18372
SELECT MAX(f_int1) INTO @cur_value FROM t1;
18373
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18375
# check single-5 success: 1
18376
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18378
# check single-6 success: 1
18379
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18381
# check single-7 success: 1
18382
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18383
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18384
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18385
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18386
f_charbig = '#NULL#';
18388
SET f_int1 = NULL , f_int2 = -@max_row,
18389
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18390
f_charbig = '#NULL#';
18391
# check null success: 1
18393
# check null-1 success: 1
18394
UPDATE t1 SET f_int1 = -@max_row
18395
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18396
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18398
# check null-2 success: 1
18399
UPDATE t1 SET f_int1 = NULL
18400
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18401
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18403
# check null-3 success: 1
18405
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18406
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18408
# check null-4 success: 1
18410
WHERE f_int1 = 0 AND f_int2 = 0
18411
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18412
AND f_charbig = '#NULL#';
18414
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18415
SELECT f_int1, f_int1, '', '', 'was inserted'
18416
FROM t0_template source_tab
18417
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18419
# check transactions-1 success: 1
18422
# check transactions-2 success: 1
18425
# check transactions-3 success: 1
18426
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18430
# check transactions-4 success: 1
18431
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18432
SELECT f_int1, f_int1, '', '', 'was inserted'
18433
FROM t0_template source_tab
18434
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18436
# check transactions-5 success: 1
18439
# check transactions-6 success: 1
18440
# INFO: Storage engine used for t1 seems to be transactional.
18443
# check transactions-7 success: 1
18444
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18446
SET @@session.sql_mode = 'traditional';
18447
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18448
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18449
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18450
'', '', 'was inserted' FROM t0_template
18451
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18452
ERROR 22012: Division by 0
18455
# check transactions-8 success: 1
18456
# INFO: Storage engine used for t1 seems to be able to revert
18457
# changes made by the failing statement.
18458
SET @@session.sql_mode = '';
18460
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18462
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18464
# check special-1 success: 1
18465
UPDATE t1 SET f_charbig = '';
18467
# check special-2 success: 1
18468
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18469
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18470
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18471
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18472
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18473
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18474
'just inserted' FROM t0_template
18475
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18476
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18478
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18479
f_charbig = 'updated by trigger'
18480
WHERE f_int1 = new.f_int1;
18482
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18483
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18484
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18486
# check trigger-1 success: 1
18487
DROP TRIGGER trg_1;
18488
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18489
f_int2 = CAST(f_char1 AS SIGNED INT),
18490
f_charbig = 'just inserted'
18491
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18493
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18494
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18495
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18496
'just inserted' FROM t0_template
18497
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18498
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18500
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18501
f_charbig = 'updated by trigger'
18502
WHERE f_int1 = new.f_int1;
18504
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18505
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18506
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18508
# check trigger-2 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 = new.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-3 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 BEFORE 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 = - old.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-4 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 = new.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-5 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 AFTER UPDATE 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;
18589
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18590
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18592
# check trigger-6 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 BEFORE 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-7 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;
18621
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18622
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18623
'just inserted' FROM t0_template
18624
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18625
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18627
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18628
f_charbig = 'updated by trigger'
18629
WHERE f_int1 = - old.f_int1;
18632
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18634
# check trigger-8 success: 1
18635
DROP TRIGGER trg_1;
18636
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18637
f_int2 = CAST(f_char1 AS SIGNED INT),
18638
f_charbig = 'just inserted'
18639
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18641
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18643
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18644
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18646
SET new.f_int1 = old.f_int1 + @max_row,
18647
new.f_int2 = old.f_int2 - @max_row,
18648
new.f_charbig = '####updated per update trigger####';
18651
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18652
f_charbig = '####updated per update statement itself####';
18654
# check trigger-9 success: 1
18655
DROP TRIGGER trg_2;
18656
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18657
f_int2 = CAST(f_char1 AS SIGNED INT),
18658
f_charbig = CONCAT('===',f_char1,'===');
18659
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18661
SET new.f_int1 = new.f_int1 + @max_row,
18662
new.f_int2 = new.f_int2 - @max_row,
18663
new.f_charbig = '####updated per update trigger####';
18666
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18667
f_charbig = '####updated per update statement itself####';
18669
# check trigger-10 success: 1
18670
DROP TRIGGER trg_2;
18671
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18672
f_int2 = CAST(f_char1 AS SIGNED INT),
18673
f_charbig = CONCAT('===',f_char1,'===');
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_int1, f_int2, f_char1, f_char2, f_charbig)
18684
SELECT f_int1, f_int1, 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-11 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####';
18695
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18697
SET new.f_int1 = @my_max1 + @counter,
18698
new.f_int2 = @my_min2 - @counter,
18699
new.f_charbig = '####updated per insert trigger####';
18700
SET @counter = @counter + 1;
18703
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18704
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18705
SELECT CAST(f_int1 AS CHAR),
18706
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18707
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18709
DROP TRIGGER trg_3;
18711
# check trigger-12 success: 1
18713
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18714
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18715
AND f_charbig = '####updated per insert trigger####';
18717
Table Op Msg_type Msg_text
18718
test.t1 analyze note The storage engine for the table doesn't support analyze
18719
CHECK TABLE t1 EXTENDED;
18720
Table Op Msg_type Msg_text
18721
test.t1 check note The storage engine for the table doesn't support check
18722
CHECKSUM TABLE t1 EXTENDED;
18724
test.t1 <some_value>
18726
Table Op Msg_type Msg_text
18727
test.t1 optimize note The storage engine for the table doesn't support optimize
18728
# check layout success: 1
18729
REPAIR TABLE t1 EXTENDED;
18730
Table Op Msg_type Msg_text
18731
test.t1 repair note The storage engine for the table doesn't support repair
18732
# check layout success: 1
18735
# check TRUNCATE success: 1
18736
# check layout success: 1
18737
# End usability test (inc/partition_check.inc)
18744
f_charbig VARCHAR(1000)
18745
, UNIQUE INDEX uidx1 (f_int1,f_int2)
18747
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
18748
(PARTITION part_3 VALUES IN (-3),
18749
PARTITION part_2 VALUES IN (-2),
18750
PARTITION part_1 VALUES IN (-1),
18751
PARTITION part_N VALUES IN (NULL),
18752
PARTITION part0 VALUES IN (0),
18753
PARTITION part1 VALUES IN (1),
18754
PARTITION part2 VALUES IN (2),
18755
PARTITION part3 VALUES IN (3));
18756
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18757
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18758
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18759
ALTER TABLE t1 DROP INDEX uidx1;
18760
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18761
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18762
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18763
# Start usability test (inc/partition_check.inc)
18765
SHOW CREATE TABLE t1;
18767
t1 CREATE TABLE `t1` (
18768
`f_int1` int(11) DEFAULT NULL,
18769
`f_int2` int(11) DEFAULT NULL,
18770
`f_char1` char(20) DEFAULT NULL,
18771
`f_char2` char(20) DEFAULT NULL,
18772
`f_charbig` varchar(1000) DEFAULT NULL
18773
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,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) */
18775
# check prerequisites-1 success: 1
18776
# check COUNT(*) success: 1
18777
# check MIN/MAX(f_int1) success: 1
18778
# check MIN/MAX(f_int2) success: 1
18779
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18780
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18781
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18782
WHERE f_int1 IN (2,3);
18783
# check prerequisites-3 success: 1
18784
DELETE FROM t1 WHERE f_charbig = 'delete me';
18785
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
18786
# check read via f_int1 success: 1
18787
# check read via f_int2 success: 1
18789
# check multiple-1 success: 1
18790
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18792
# check multiple-2 success: 1
18793
INSERT INTO t1 SELECT * FROM t0_template
18794
WHERE MOD(f_int1,3) = 0;
18796
# check multiple-3 success: 1
18797
UPDATE t1 SET f_int1 = f_int1 + @max_row
18798
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18799
AND @max_row_div2 + @max_row_div4;
18801
# check multiple-4 success: 1
18803
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18804
AND @max_row_div2 + @max_row_div4 + @max_row;
18806
# check multiple-5 success: 1
18807
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18809
SET f_int1 = @cur_value , f_int2 = @cur_value,
18810
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18811
f_charbig = '#SINGLE#';
18813
# check single-1 success: 1
18814
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18816
SET f_int1 = @cur_value , f_int2 = @cur_value,
18817
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18818
f_charbig = '#SINGLE#';
18820
# check single-2 success: 1
18821
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18822
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18823
UPDATE t1 SET f_int1 = @cur_value2
18824
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18826
# check single-3 success: 1
18827
SET @cur_value1= -1;
18828
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18829
UPDATE t1 SET f_int1 = @cur_value1
18830
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18832
# check single-4 success: 1
18833
SELECT MAX(f_int1) INTO @cur_value FROM t1;
18834
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18836
# check single-5 success: 1
18837
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18839
# check single-6 success: 1
18840
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18842
# check single-7 success: 1
18843
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18844
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18845
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18846
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18847
f_charbig = '#NULL#';
18849
SET f_int1 = NULL , f_int2 = -@max_row,
18850
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18851
f_charbig = '#NULL#';
18852
# check null success: 1
18854
# check null-1 success: 1
18855
UPDATE t1 SET f_int1 = -@max_row
18856
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18857
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18859
# check null-2 success: 1
18860
UPDATE t1 SET f_int1 = NULL
18861
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18862
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18864
# check null-3 success: 1
18866
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18867
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18869
# check null-4 success: 1
18871
WHERE f_int1 = 0 AND f_int2 = 0
18872
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18873
AND f_charbig = '#NULL#';
18875
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18876
SELECT f_int1, f_int1, '', '', 'was inserted'
18877
FROM t0_template source_tab
18878
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18880
# check transactions-1 success: 1
18883
# check transactions-2 success: 1
18886
# check transactions-3 success: 1
18887
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18891
# check transactions-4 success: 1
18892
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18893
SELECT f_int1, f_int1, '', '', 'was inserted'
18894
FROM t0_template source_tab
18895
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18897
# check transactions-5 success: 1
18900
# check transactions-6 success: 1
18901
# INFO: Storage engine used for t1 seems to be transactional.
18904
# check transactions-7 success: 1
18905
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18907
SET @@session.sql_mode = 'traditional';
18908
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18909
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18910
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18911
'', '', 'was inserted' FROM t0_template
18912
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18913
ERROR 22012: Division by 0
18916
# check transactions-8 success: 1
18917
# INFO: Storage engine used for t1 seems to be able to revert
18918
# changes made by the failing statement.
18919
SET @@session.sql_mode = '';
18921
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18923
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18925
# check special-1 success: 1
18926
UPDATE t1 SET f_charbig = '';
18928
# check special-2 success: 1
18929
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18930
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18931
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18932
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18933
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18934
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18935
'just inserted' FROM t0_template
18936
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18937
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18939
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18940
f_charbig = 'updated by trigger'
18941
WHERE f_int1 = new.f_int1;
18943
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18944
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18945
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18947
# check trigger-1 success: 1
18948
DROP TRIGGER trg_1;
18949
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18950
f_int2 = CAST(f_char1 AS SIGNED INT),
18951
f_charbig = 'just inserted'
18952
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18954
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18955
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18956
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18957
'just inserted' FROM t0_template
18958
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18959
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18961
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18962
f_charbig = 'updated by trigger'
18963
WHERE f_int1 = new.f_int1;
18965
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18966
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18967
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18969
# check trigger-2 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 = new.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-3 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 BEFORE 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 = - old.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-4 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 = new.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-5 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 AFTER UPDATE 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;
19050
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19051
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19053
# check trigger-6 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 BEFORE 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-7 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;
19082
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19083
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19084
'just inserted' FROM t0_template
19085
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19086
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19088
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19089
f_charbig = 'updated by trigger'
19090
WHERE f_int1 = - old.f_int1;
19093
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19095
# check trigger-8 success: 1
19096
DROP TRIGGER trg_1;
19097
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19098
f_int2 = CAST(f_char1 AS SIGNED INT),
19099
f_charbig = 'just inserted'
19100
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19102
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19104
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19105
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19107
SET new.f_int1 = old.f_int1 + @max_row,
19108
new.f_int2 = old.f_int2 - @max_row,
19109
new.f_charbig = '####updated per update trigger####';
19112
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19113
f_charbig = '####updated per update statement itself####';
19115
# check trigger-9 success: 1
19116
DROP TRIGGER trg_2;
19117
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19118
f_int2 = CAST(f_char1 AS SIGNED INT),
19119
f_charbig = CONCAT('===',f_char1,'===');
19120
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19122
SET new.f_int1 = new.f_int1 + @max_row,
19123
new.f_int2 = new.f_int2 - @max_row,
19124
new.f_charbig = '####updated per update trigger####';
19127
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19128
f_charbig = '####updated per update statement itself####';
19130
# check trigger-10 success: 1
19131
DROP TRIGGER trg_2;
19132
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19133
f_int2 = CAST(f_char1 AS SIGNED INT),
19134
f_charbig = CONCAT('===',f_char1,'===');
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_int1, f_int2, f_char1, f_char2, f_charbig)
19145
SELECT f_int1, f_int1, 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-11 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####';
19156
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19158
SET new.f_int1 = @my_max1 + @counter,
19159
new.f_int2 = @my_min2 - @counter,
19160
new.f_charbig = '####updated per insert trigger####';
19161
SET @counter = @counter + 1;
19164
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19165
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19166
SELECT CAST(f_int1 AS CHAR),
19167
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19168
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19170
DROP TRIGGER trg_3;
19172
# check trigger-12 success: 1
19174
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19175
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19176
AND f_charbig = '####updated per insert trigger####';
19178
Table Op Msg_type Msg_text
19179
test.t1 analyze note The storage engine for the table doesn't support analyze
19180
CHECK TABLE t1 EXTENDED;
19181
Table Op Msg_type Msg_text
19182
test.t1 check note The storage engine for the table doesn't support check
19183
CHECKSUM TABLE t1 EXTENDED;
19185
test.t1 <some_value>
19187
Table Op Msg_type Msg_text
19188
test.t1 optimize note The storage engine for the table doesn't support optimize
19189
# check layout success: 1
19190
REPAIR TABLE t1 EXTENDED;
19191
Table Op Msg_type Msg_text
19192
test.t1 repair note The storage engine for the table doesn't support repair
19193
# check layout success: 1
19196
# check TRUNCATE success: 1
19197
# check layout success: 1
19198
# End usability test (inc/partition_check.inc)
19205
f_charbig VARCHAR(1000)
19206
, UNIQUE INDEX uidx1 (f_int1,f_int2)
19208
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
19209
(PARTITION parta VALUES LESS THAN (0),
19210
PARTITION partb VALUES LESS THAN (5),
19211
PARTITION partc VALUES LESS THAN (10),
19212
PARTITION partd VALUES LESS THAN (10 + 5),
19213
PARTITION parte VALUES LESS THAN (20),
19214
PARTITION partf VALUES LESS THAN (2147483646));
19215
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19216
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19217
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19218
ALTER TABLE t1 DROP INDEX uidx1;
19219
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19220
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19221
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19222
# Start usability test (inc/partition_check.inc)
19224
SHOW CREATE TABLE t1;
19226
t1 CREATE TABLE `t1` (
19227
`f_int1` int(11) DEFAULT NULL,
19228
`f_int2` int(11) DEFAULT NULL,
19229
`f_char1` char(20) DEFAULT NULL,
19230
`f_char2` char(20) DEFAULT NULL,
19231
`f_charbig` varchar(1000) DEFAULT NULL
19232
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
19234
# check prerequisites-1 success: 1
19235
# check COUNT(*) success: 1
19236
# check MIN/MAX(f_int1) success: 1
19237
# check MIN/MAX(f_int2) success: 1
19238
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19239
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19240
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19241
WHERE f_int1 IN (2,3);
19242
# check prerequisites-3 success: 1
19243
DELETE FROM t1 WHERE f_charbig = 'delete me';
19244
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
19245
# check read via f_int1 success: 1
19246
# check read via f_int2 success: 1
19248
# check multiple-1 success: 1
19249
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19251
# check multiple-2 success: 1
19252
INSERT INTO t1 SELECT * FROM t0_template
19253
WHERE MOD(f_int1,3) = 0;
19255
# check multiple-3 success: 1
19256
UPDATE t1 SET f_int1 = f_int1 + @max_row
19257
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19258
AND @max_row_div2 + @max_row_div4;
19260
# check multiple-4 success: 1
19262
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19263
AND @max_row_div2 + @max_row_div4 + @max_row;
19265
# check multiple-5 success: 1
19266
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19268
SET f_int1 = @cur_value , f_int2 = @cur_value,
19269
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19270
f_charbig = '#SINGLE#';
19272
# check single-1 success: 1
19273
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19275
SET f_int1 = @cur_value , f_int2 = @cur_value,
19276
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19277
f_charbig = '#SINGLE#';
19279
# check single-2 success: 1
19280
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19281
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19282
UPDATE t1 SET f_int1 = @cur_value2
19283
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19285
# check single-3 success: 1
19286
SET @cur_value1= -1;
19287
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19288
UPDATE t1 SET f_int1 = @cur_value1
19289
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19291
# check single-4 success: 1
19292
SELECT MAX(f_int1) INTO @cur_value FROM t1;
19293
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19295
# check single-5 success: 1
19296
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19298
# check single-6 success: 1
19299
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19300
ERROR HY000: Table has no partition for value 2147483647
19301
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19302
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19303
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19304
f_charbig = '#NULL#';
19306
SET f_int1 = NULL , f_int2 = -@max_row,
19307
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19308
f_charbig = '#NULL#';
19309
# check null success: 1
19311
# check null-1 success: 1
19312
UPDATE t1 SET f_int1 = -@max_row
19313
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19314
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19316
# check null-2 success: 1
19317
UPDATE t1 SET f_int1 = NULL
19318
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19319
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19321
# check null-3 success: 1
19323
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19324
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19326
# check null-4 success: 1
19328
WHERE f_int1 = 0 AND f_int2 = 0
19329
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19330
AND f_charbig = '#NULL#';
19332
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19333
SELECT f_int1, f_int1, '', '', 'was inserted'
19334
FROM t0_template source_tab
19335
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19337
# check transactions-1 success: 1
19340
# check transactions-2 success: 1
19343
# check transactions-3 success: 1
19344
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19348
# check transactions-4 success: 1
19349
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19350
SELECT f_int1, f_int1, '', '', 'was inserted'
19351
FROM t0_template source_tab
19352
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19354
# check transactions-5 success: 1
19357
# check transactions-6 success: 1
19358
# INFO: Storage engine used for t1 seems to be transactional.
19361
# check transactions-7 success: 1
19362
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19364
SET @@session.sql_mode = 'traditional';
19365
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19366
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19367
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19368
'', '', 'was inserted' FROM t0_template
19369
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19370
ERROR 22012: Division by 0
19373
# check transactions-8 success: 1
19374
# INFO: Storage engine used for t1 seems to be able to revert
19375
# changes made by the failing statement.
19376
SET @@session.sql_mode = '';
19378
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19380
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19382
# check special-1 success: 1
19383
UPDATE t1 SET f_charbig = '';
19385
# check special-2 success: 1
19386
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19387
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19388
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19389
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19390
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19391
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19392
'just inserted' FROM t0_template
19393
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19394
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19396
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19397
f_charbig = 'updated by trigger'
19398
WHERE f_int1 = new.f_int1;
19400
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19401
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19402
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19404
# check trigger-1 success: 1
19405
DROP TRIGGER trg_1;
19406
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19407
f_int2 = CAST(f_char1 AS SIGNED INT),
19408
f_charbig = 'just inserted'
19409
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19411
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19412
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19413
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19414
'just inserted' FROM t0_template
19415
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19416
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19418
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19419
f_charbig = 'updated by trigger'
19420
WHERE f_int1 = new.f_int1;
19422
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19423
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19424
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19426
# check trigger-2 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 = new.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-3 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 BEFORE 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 = - old.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-4 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 = new.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-5 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 AFTER UPDATE 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;
19507
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19508
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19510
# check trigger-6 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 BEFORE 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-7 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;
19539
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19540
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19541
'just inserted' FROM t0_template
19542
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19543
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19545
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19546
f_charbig = 'updated by trigger'
19547
WHERE f_int1 = - old.f_int1;
19550
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19552
# check trigger-8 success: 1
19553
DROP TRIGGER trg_1;
19554
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19555
f_int2 = CAST(f_char1 AS SIGNED INT),
19556
f_charbig = 'just inserted'
19557
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19559
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19561
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19562
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19564
SET new.f_int1 = old.f_int1 + @max_row,
19565
new.f_int2 = old.f_int2 - @max_row,
19566
new.f_charbig = '####updated per update trigger####';
19569
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19570
f_charbig = '####updated per update statement itself####';
19572
# check trigger-9 success: 1
19573
DROP TRIGGER trg_2;
19574
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19575
f_int2 = CAST(f_char1 AS SIGNED INT),
19576
f_charbig = CONCAT('===',f_char1,'===');
19577
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19579
SET new.f_int1 = new.f_int1 + @max_row,
19580
new.f_int2 = new.f_int2 - @max_row,
19581
new.f_charbig = '####updated per update trigger####';
19584
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19585
f_charbig = '####updated per update statement itself####';
19587
# check trigger-10 success: 1
19588
DROP TRIGGER trg_2;
19589
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19590
f_int2 = CAST(f_char1 AS SIGNED INT),
19591
f_charbig = CONCAT('===',f_char1,'===');
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_int1, f_int2, f_char1, f_char2, f_charbig)
19602
SELECT f_int1, f_int1, 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-11 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####';
19613
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19615
SET new.f_int1 = @my_max1 + @counter,
19616
new.f_int2 = @my_min2 - @counter,
19617
new.f_charbig = '####updated per insert trigger####';
19618
SET @counter = @counter + 1;
19621
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19622
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19623
SELECT CAST(f_int1 AS CHAR),
19624
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19625
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19627
DROP TRIGGER trg_3;
19629
# check trigger-12 success: 1
19631
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19632
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19633
AND f_charbig = '####updated per insert trigger####';
19635
Table Op Msg_type Msg_text
19636
test.t1 analyze note The storage engine for the table doesn't support analyze
19637
CHECK TABLE t1 EXTENDED;
19638
Table Op Msg_type Msg_text
19639
test.t1 check note The storage engine for the table doesn't support check
19640
CHECKSUM TABLE t1 EXTENDED;
19642
test.t1 <some_value>
19644
Table Op Msg_type Msg_text
19645
test.t1 optimize note The storage engine for the table doesn't support optimize
19646
# check layout success: 1
19647
REPAIR TABLE t1 EXTENDED;
19648
Table Op Msg_type Msg_text
19649
test.t1 repair note The storage engine for the table doesn't support repair
19650
# check layout success: 1
19653
# check TRUNCATE success: 1
19654
# check layout success: 1
19655
# End usability test (inc/partition_check.inc)
19662
f_charbig VARCHAR(1000)
19663
, UNIQUE INDEX uidx1 (f_int1,f_int2)
19665
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
19666
(PARTITION parta VALUES LESS THAN (0),
19667
PARTITION partb VALUES LESS THAN (5),
19668
PARTITION partc VALUES LESS THAN (10),
19669
PARTITION partd VALUES LESS THAN (2147483646));
19670
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19671
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19672
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19673
ALTER TABLE t1 DROP INDEX uidx1;
19674
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19675
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19676
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19677
# Start usability test (inc/partition_check.inc)
19679
SHOW CREATE TABLE t1;
19681
t1 CREATE TABLE `t1` (
19682
`f_int1` int(11) DEFAULT NULL,
19683
`f_int2` int(11) DEFAULT NULL,
19684
`f_char1` char(20) DEFAULT NULL,
19685
`f_char2` char(20) DEFAULT NULL,
19686
`f_charbig` varchar(1000) DEFAULT NULL
19687
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
19689
# check prerequisites-1 success: 1
19690
# check COUNT(*) success: 1
19691
# check MIN/MAX(f_int1) success: 1
19692
# check MIN/MAX(f_int2) success: 1
19693
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19694
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19695
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19696
WHERE f_int1 IN (2,3);
19697
# check prerequisites-3 success: 1
19698
DELETE FROM t1 WHERE f_charbig = 'delete me';
19699
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
19700
# check read via f_int1 success: 1
19701
# check read via f_int2 success: 1
19703
# check multiple-1 success: 1
19704
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19706
# check multiple-2 success: 1
19707
INSERT INTO t1 SELECT * FROM t0_template
19708
WHERE MOD(f_int1,3) = 0;
19710
# check multiple-3 success: 1
19711
UPDATE t1 SET f_int1 = f_int1 + @max_row
19712
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19713
AND @max_row_div2 + @max_row_div4;
19715
# check multiple-4 success: 1
19717
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19718
AND @max_row_div2 + @max_row_div4 + @max_row;
19720
# check multiple-5 success: 1
19721
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19723
SET f_int1 = @cur_value , f_int2 = @cur_value,
19724
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19725
f_charbig = '#SINGLE#';
19727
# check single-1 success: 1
19728
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19730
SET f_int1 = @cur_value , f_int2 = @cur_value,
19731
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19732
f_charbig = '#SINGLE#';
19734
# check single-2 success: 1
19735
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19736
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19737
UPDATE t1 SET f_int1 = @cur_value2
19738
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19740
# check single-3 success: 1
19741
SET @cur_value1= -1;
19742
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19743
UPDATE t1 SET f_int1 = @cur_value1
19744
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19746
# check single-4 success: 1
19747
SELECT MAX(f_int1) INTO @cur_value FROM t1;
19748
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19750
# check single-5 success: 1
19751
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19753
# check single-6 success: 1
19754
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19755
ERROR HY000: Table has no partition for value 2147483647
19756
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19757
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19758
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19759
f_charbig = '#NULL#';
19761
SET f_int1 = NULL , f_int2 = -@max_row,
19762
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19763
f_charbig = '#NULL#';
19764
# check null success: 1
19766
# check null-1 success: 1
19767
UPDATE t1 SET f_int1 = -@max_row
19768
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19769
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19771
# check null-2 success: 1
19772
UPDATE t1 SET f_int1 = NULL
19773
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19774
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19776
# check null-3 success: 1
19778
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19779
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19781
# check null-4 success: 1
19783
WHERE f_int1 = 0 AND f_int2 = 0
19784
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19785
AND f_charbig = '#NULL#';
19787
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19788
SELECT f_int1, f_int1, '', '', 'was inserted'
19789
FROM t0_template source_tab
19790
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19792
# check transactions-1 success: 1
19795
# check transactions-2 success: 1
19798
# check transactions-3 success: 1
19799
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19803
# check transactions-4 success: 1
19804
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19805
SELECT f_int1, f_int1, '', '', 'was inserted'
19806
FROM t0_template source_tab
19807
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19809
# check transactions-5 success: 1
19812
# check transactions-6 success: 1
19813
# INFO: Storage engine used for t1 seems to be transactional.
19816
# check transactions-7 success: 1
19817
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19819
SET @@session.sql_mode = 'traditional';
19820
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19821
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19822
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19823
'', '', 'was inserted' FROM t0_template
19824
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19825
ERROR 22012: Division by 0
19828
# check transactions-8 success: 1
19829
# INFO: Storage engine used for t1 seems to be able to revert
19830
# changes made by the failing statement.
19831
SET @@session.sql_mode = '';
19833
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19835
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19837
# check special-1 success: 1
19838
UPDATE t1 SET f_charbig = '';
19840
# check special-2 success: 1
19841
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19842
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19843
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19844
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19845
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19846
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19847
'just inserted' FROM t0_template
19848
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19849
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19851
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19852
f_charbig = 'updated by trigger'
19853
WHERE f_int1 = new.f_int1;
19855
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19856
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19857
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19859
# check trigger-1 success: 1
19860
DROP TRIGGER trg_1;
19861
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19862
f_int2 = CAST(f_char1 AS SIGNED INT),
19863
f_charbig = 'just inserted'
19864
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19866
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19867
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19868
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19869
'just inserted' FROM t0_template
19870
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19871
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19873
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19874
f_charbig = 'updated by trigger'
19875
WHERE f_int1 = new.f_int1;
19877
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19878
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19879
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19881
# check trigger-2 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 = new.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-3 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 BEFORE 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 = - old.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-4 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 = new.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-5 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 AFTER UPDATE 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;
19962
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19963
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19965
# check trigger-6 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 BEFORE 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-7 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;
19994
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19995
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19996
'just inserted' FROM t0_template
19997
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19998
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20000
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20001
f_charbig = 'updated by trigger'
20002
WHERE f_int1 = - old.f_int1;
20005
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20007
# check trigger-8 success: 1
20008
DROP TRIGGER trg_1;
20009
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20010
f_int2 = CAST(f_char1 AS SIGNED INT),
20011
f_charbig = 'just inserted'
20012
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20014
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20016
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20017
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20019
SET new.f_int1 = old.f_int1 + @max_row,
20020
new.f_int2 = old.f_int2 - @max_row,
20021
new.f_charbig = '####updated per update trigger####';
20024
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20025
f_charbig = '####updated per update statement itself####';
20027
# check trigger-9 success: 1
20028
DROP TRIGGER trg_2;
20029
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20030
f_int2 = CAST(f_char1 AS SIGNED INT),
20031
f_charbig = CONCAT('===',f_char1,'===');
20032
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20034
SET new.f_int1 = new.f_int1 + @max_row,
20035
new.f_int2 = new.f_int2 - @max_row,
20036
new.f_charbig = '####updated per update trigger####';
20039
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20040
f_charbig = '####updated per update statement itself####';
20042
# check trigger-10 success: 1
20043
DROP TRIGGER trg_2;
20044
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20045
f_int2 = CAST(f_char1 AS SIGNED INT),
20046
f_charbig = CONCAT('===',f_char1,'===');
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_int1, f_int2, f_char1, f_char2, f_charbig)
20057
SELECT f_int1, f_int1, 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-11 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####';
20068
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20070
SET new.f_int1 = @my_max1 + @counter,
20071
new.f_int2 = @my_min2 - @counter,
20072
new.f_charbig = '####updated per insert trigger####';
20073
SET @counter = @counter + 1;
20076
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20077
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20078
SELECT CAST(f_int1 AS CHAR),
20079
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20080
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20082
DROP TRIGGER trg_3;
20084
# check trigger-12 success: 1
20086
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20087
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20088
AND f_charbig = '####updated per insert trigger####';
20090
Table Op Msg_type Msg_text
20091
test.t1 analyze note The storage engine for the table doesn't support analyze
20092
CHECK TABLE t1 EXTENDED;
20093
Table Op Msg_type Msg_text
20094
test.t1 check note The storage engine for the table doesn't support check
20095
CHECKSUM TABLE t1 EXTENDED;
20097
test.t1 <some_value>
20099
Table Op Msg_type Msg_text
20100
test.t1 optimize note The storage engine for the table doesn't support optimize
20101
# check layout success: 1
20102
REPAIR TABLE t1 EXTENDED;
20103
Table Op Msg_type Msg_text
20104
test.t1 repair note The storage engine for the table doesn't support repair
20105
# check layout success: 1
20108
# check TRUNCATE success: 1
20109
# check layout success: 1
20110
# End usability test (inc/partition_check.inc)
20117
f_charbig VARCHAR(1000)
20118
, UNIQUE INDEX uidx1 (f_int1,f_int2)
20120
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
20121
(PARTITION part1 VALUES LESS THAN (0)
20122
(SUBPARTITION subpart11, SUBPARTITION subpart12),
20123
PARTITION part2 VALUES LESS THAN (5)
20124
(SUBPARTITION subpart21, SUBPARTITION subpart22),
20125
PARTITION part3 VALUES LESS THAN (10)
20126
(SUBPARTITION subpart31, SUBPARTITION subpart32),
20127
PARTITION part4 VALUES LESS THAN (2147483646)
20128
(SUBPARTITION subpart41, SUBPARTITION subpart42));
20129
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20130
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20131
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20132
ALTER TABLE t1 DROP INDEX uidx1;
20133
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20134
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20135
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20136
# Start usability test (inc/partition_check.inc)
20138
SHOW CREATE TABLE t1;
20140
t1 CREATE TABLE `t1` (
20141
`f_int1` int(11) DEFAULT NULL,
20142
`f_int2` int(11) DEFAULT NULL,
20143
`f_char1` char(20) DEFAULT NULL,
20144
`f_char2` char(20) DEFAULT NULL,
20145
`f_charbig` varchar(1000) DEFAULT NULL
20146
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
20148
# check prerequisites-1 success: 1
20149
# check COUNT(*) success: 1
20150
# check MIN/MAX(f_int1) success: 1
20151
# check MIN/MAX(f_int2) success: 1
20152
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20153
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20154
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20155
WHERE f_int1 IN (2,3);
20156
# check prerequisites-3 success: 1
20157
DELETE FROM t1 WHERE f_charbig = 'delete me';
20158
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
20159
# check read via f_int1 success: 1
20160
# check read via f_int2 success: 1
20162
# check multiple-1 success: 1
20163
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20165
# check multiple-2 success: 1
20166
INSERT INTO t1 SELECT * FROM t0_template
20167
WHERE MOD(f_int1,3) = 0;
20169
# check multiple-3 success: 1
20170
UPDATE t1 SET f_int1 = f_int1 + @max_row
20171
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20172
AND @max_row_div2 + @max_row_div4;
20174
# check multiple-4 success: 1
20176
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20177
AND @max_row_div2 + @max_row_div4 + @max_row;
20179
# check multiple-5 success: 1
20180
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20182
SET f_int1 = @cur_value , f_int2 = @cur_value,
20183
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20184
f_charbig = '#SINGLE#';
20186
# check single-1 success: 1
20187
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20189
SET f_int1 = @cur_value , f_int2 = @cur_value,
20190
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20191
f_charbig = '#SINGLE#';
20193
# check single-2 success: 1
20194
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20195
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20196
UPDATE t1 SET f_int1 = @cur_value2
20197
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20199
# check single-3 success: 1
20200
SET @cur_value1= -1;
20201
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20202
UPDATE t1 SET f_int1 = @cur_value1
20203
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20205
# check single-4 success: 1
20206
SELECT MAX(f_int1) INTO @cur_value FROM t1;
20207
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20209
# check single-5 success: 1
20210
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20212
# check single-6 success: 1
20213
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20214
ERROR HY000: Table has no partition for value 2147483647
20215
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20216
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20217
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20218
f_charbig = '#NULL#';
20220
SET f_int1 = NULL , f_int2 = -@max_row,
20221
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20222
f_charbig = '#NULL#';
20223
# check null success: 1
20225
# check null-1 success: 1
20226
UPDATE t1 SET f_int1 = -@max_row
20227
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20228
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20230
# check null-2 success: 1
20231
UPDATE t1 SET f_int1 = NULL
20232
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20233
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20235
# check null-3 success: 1
20237
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20238
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20240
# check null-4 success: 1
20242
WHERE f_int1 = 0 AND f_int2 = 0
20243
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20244
AND f_charbig = '#NULL#';
20246
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20247
SELECT f_int1, f_int1, '', '', 'was inserted'
20248
FROM t0_template source_tab
20249
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20251
# check transactions-1 success: 1
20254
# check transactions-2 success: 1
20257
# check transactions-3 success: 1
20258
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20262
# check transactions-4 success: 1
20263
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20264
SELECT f_int1, f_int1, '', '', 'was inserted'
20265
FROM t0_template source_tab
20266
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20268
# check transactions-5 success: 1
20271
# check transactions-6 success: 1
20272
# INFO: Storage engine used for t1 seems to be transactional.
20275
# check transactions-7 success: 1
20276
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20278
SET @@session.sql_mode = 'traditional';
20279
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20280
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20281
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20282
'', '', 'was inserted' FROM t0_template
20283
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20284
ERROR 22012: Division by 0
20287
# check transactions-8 success: 1
20288
# INFO: Storage engine used for t1 seems to be able to revert
20289
# changes made by the failing statement.
20290
SET @@session.sql_mode = '';
20292
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20294
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20296
# check special-1 success: 1
20297
UPDATE t1 SET f_charbig = '';
20299
# check special-2 success: 1
20300
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20301
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20302
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20303
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20304
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20305
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20306
'just inserted' FROM t0_template
20307
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20308
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20310
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20311
f_charbig = 'updated by trigger'
20312
WHERE f_int1 = new.f_int1;
20314
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20315
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20316
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20318
# check trigger-1 success: 1
20319
DROP TRIGGER trg_1;
20320
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20321
f_int2 = CAST(f_char1 AS SIGNED INT),
20322
f_charbig = 'just inserted'
20323
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20325
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20326
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20327
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20328
'just inserted' FROM t0_template
20329
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20330
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20332
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20333
f_charbig = 'updated by trigger'
20334
WHERE f_int1 = new.f_int1;
20336
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20337
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20338
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20340
# check trigger-2 success: 1
20341
DROP TRIGGER trg_1;
20342
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20343
f_int2 = CAST(f_char1 AS SIGNED INT),
20344
f_charbig = 'just inserted'
20345
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20347
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20348
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20349
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20350
'just inserted' FROM t0_template
20351
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20352
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20354
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20355
f_charbig = 'updated by trigger'
20356
WHERE f_int1 = new.f_int1;
20358
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20359
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20361
# check trigger-3 success: 1
20362
DROP TRIGGER trg_1;
20363
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20364
f_int2 = CAST(f_char1 AS SIGNED INT),
20365
f_charbig = 'just inserted'
20366
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20368
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20369
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20370
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20371
'just inserted' FROM t0_template
20372
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20373
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20375
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20376
f_charbig = 'updated by trigger'
20377
WHERE f_int1 = - old.f_int1;
20379
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20380
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20382
# check trigger-4 success: 1
20383
DROP TRIGGER trg_1;
20384
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20385
f_int2 = CAST(f_char1 AS SIGNED INT),
20386
f_charbig = 'just inserted'
20387
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20389
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20390
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20391
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20392
'just inserted' FROM t0_template
20393
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20394
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20396
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20397
f_charbig = 'updated by trigger'
20398
WHERE f_int1 = new.f_int1;
20400
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20401
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20403
# check trigger-5 success: 1
20404
DROP TRIGGER trg_1;
20405
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20406
f_int2 = CAST(f_char1 AS SIGNED INT),
20407
f_charbig = 'just inserted'
20408
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20410
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20411
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20412
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20413
'just inserted' FROM t0_template
20414
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20415
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20417
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20418
f_charbig = 'updated by trigger'
20419
WHERE f_int1 = - old.f_int1;
20421
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20422
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20424
# check trigger-6 success: 1
20425
DROP TRIGGER trg_1;
20426
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20427
f_int2 = CAST(f_char1 AS SIGNED INT),
20428
f_charbig = 'just inserted'
20429
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20431
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20432
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20433
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20434
'just inserted' FROM t0_template
20435
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20436
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20438
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20439
f_charbig = 'updated by trigger'
20440
WHERE f_int1 = - old.f_int1;
20443
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20445
# check trigger-7 success: 1
20446
DROP TRIGGER trg_1;
20447
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20448
f_int2 = CAST(f_char1 AS SIGNED INT),
20449
f_charbig = 'just inserted'
20450
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20452
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20453
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20454
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20455
'just inserted' FROM t0_template
20456
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20457
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20459
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20460
f_charbig = 'updated by trigger'
20461
WHERE f_int1 = - old.f_int1;
20464
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20466
# check trigger-8 success: 1
20467
DROP TRIGGER trg_1;
20468
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20469
f_int2 = CAST(f_char1 AS SIGNED INT),
20470
f_charbig = 'just inserted'
20471
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20473
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20475
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20476
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20478
SET new.f_int1 = old.f_int1 + @max_row,
20479
new.f_int2 = old.f_int2 - @max_row,
20480
new.f_charbig = '####updated per update trigger####';
20483
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20484
f_charbig = '####updated per update statement itself####';
20486
# check trigger-9 success: 1
20487
DROP TRIGGER trg_2;
20488
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20489
f_int2 = CAST(f_char1 AS SIGNED INT),
20490
f_charbig = CONCAT('===',f_char1,'===');
20491
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20493
SET new.f_int1 = new.f_int1 + @max_row,
20494
new.f_int2 = new.f_int2 - @max_row,
20495
new.f_charbig = '####updated per update trigger####';
20498
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20499
f_charbig = '####updated per update statement itself####';
20501
# check trigger-10 success: 1
20502
DROP TRIGGER trg_2;
20503
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20504
f_int2 = CAST(f_char1 AS SIGNED INT),
20505
f_charbig = CONCAT('===',f_char1,'===');
20506
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20508
SET new.f_int1 = @my_max1 + @counter,
20509
new.f_int2 = @my_min2 - @counter,
20510
new.f_charbig = '####updated per insert trigger####';
20511
SET @counter = @counter + 1;
20514
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20515
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20516
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20517
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20518
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20520
DROP TRIGGER trg_3;
20522
# check trigger-11 success: 1
20524
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20525
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20526
AND f_charbig = '####updated per insert trigger####';
20527
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20529
SET new.f_int1 = @my_max1 + @counter,
20530
new.f_int2 = @my_min2 - @counter,
20531
new.f_charbig = '####updated per insert trigger####';
20532
SET @counter = @counter + 1;
20535
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20536
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20537
SELECT CAST(f_int1 AS CHAR),
20538
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20539
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20541
DROP TRIGGER trg_3;
20543
# check trigger-12 success: 1
20545
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20546
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20547
AND f_charbig = '####updated per insert trigger####';
20549
Table Op Msg_type Msg_text
20550
test.t1 analyze note The storage engine for the table doesn't support analyze
20551
CHECK TABLE t1 EXTENDED;
20552
Table Op Msg_type Msg_text
20553
test.t1 check note The storage engine for the table doesn't support check
20554
CHECKSUM TABLE t1 EXTENDED;
20556
test.t1 <some_value>
20558
Table Op Msg_type Msg_text
20559
test.t1 optimize note The storage engine for the table doesn't support optimize
20560
# check layout success: 1
20561
REPAIR TABLE t1 EXTENDED;
20562
Table Op Msg_type Msg_text
20563
test.t1 repair note The storage engine for the table doesn't support repair
20564
# check layout success: 1
20567
# check TRUNCATE success: 1
20568
# check layout success: 1
20569
# End usability test (inc/partition_check.inc)
20576
f_charbig VARCHAR(1000)
20577
, UNIQUE INDEX uidx1 (f_int1,f_int2)
20579
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
20580
(PARTITION part1 VALUES IN (0)
20581
(SUBPARTITION sp11, SUBPARTITION sp12),
20582
PARTITION part2 VALUES IN (1)
20583
(SUBPARTITION sp21, SUBPARTITION sp22),
20584
PARTITION part3 VALUES IN (2)
20585
(SUBPARTITION sp31, SUBPARTITION sp32),
20586
PARTITION part4 VALUES IN (NULL)
20587
(SUBPARTITION sp41, SUBPARTITION sp42));
20588
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20589
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20590
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20591
ALTER TABLE t1 DROP INDEX uidx1;
20592
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20593
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20594
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20595
# Start usability test (inc/partition_check.inc)
20597
SHOW CREATE TABLE t1;
20599
t1 CREATE TABLE `t1` (
20600
`f_int1` int(11) DEFAULT NULL,
20601
`f_int2` int(11) DEFAULT NULL,
20602
`f_char1` char(20) DEFAULT NULL,
20603
`f_char2` char(20) DEFAULT NULL,
20604
`f_charbig` varchar(1000) DEFAULT NULL
20605
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
20607
# check prerequisites-1 success: 1
20608
# check COUNT(*) success: 1
20609
# check MIN/MAX(f_int1) success: 1
20610
# check MIN/MAX(f_int2) success: 1
20611
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20612
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20613
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20614
WHERE f_int1 IN (2,3);
20615
# check prerequisites-3 success: 1
20616
DELETE FROM t1 WHERE f_charbig = 'delete me';
20617
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
20618
# check read via f_int1 success: 1
20619
# check read via f_int2 success: 1
20621
# check multiple-1 success: 1
20622
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20624
# check multiple-2 success: 1
20625
INSERT INTO t1 SELECT * FROM t0_template
20626
WHERE MOD(f_int1,3) = 0;
20628
# check multiple-3 success: 1
20629
UPDATE t1 SET f_int1 = f_int1 + @max_row
20630
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20631
AND @max_row_div2 + @max_row_div4;
20633
# check multiple-4 success: 1
20635
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20636
AND @max_row_div2 + @max_row_div4 + @max_row;
20638
# check multiple-5 success: 1
20639
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20641
SET f_int1 = @cur_value , f_int2 = @cur_value,
20642
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20643
f_charbig = '#SINGLE#';
20645
# check single-1 success: 1
20646
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20648
SET f_int1 = @cur_value , f_int2 = @cur_value,
20649
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20650
f_charbig = '#SINGLE#';
20652
# check single-2 success: 1
20653
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20654
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20655
UPDATE t1 SET f_int1 = @cur_value2
20656
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20658
# check single-3 success: 1
20659
SET @cur_value1= -1;
20660
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20661
UPDATE t1 SET f_int1 = @cur_value1
20662
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20664
# check single-4 success: 1
20665
SELECT MAX(f_int1) INTO @cur_value FROM t1;
20666
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20668
# check single-5 success: 1
20669
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20671
# check single-6 success: 1
20672
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20674
# check single-7 success: 1
20675
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20676
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20677
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20678
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20679
f_charbig = '#NULL#';
20681
SET f_int1 = NULL , f_int2 = -@max_row,
20682
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20683
f_charbig = '#NULL#';
20684
# check null success: 1
20686
# check null-1 success: 1
20687
UPDATE t1 SET f_int1 = -@max_row
20688
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20689
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20691
# check null-2 success: 1
20692
UPDATE t1 SET f_int1 = NULL
20693
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20694
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20696
# check null-3 success: 1
20698
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20699
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20701
# check null-4 success: 1
20703
WHERE f_int1 = 0 AND f_int2 = 0
20704
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20705
AND f_charbig = '#NULL#';
20707
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20708
SELECT f_int1, f_int1, '', '', 'was inserted'
20709
FROM t0_template source_tab
20710
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20712
# check transactions-1 success: 1
20715
# check transactions-2 success: 1
20718
# check transactions-3 success: 1
20719
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20723
# check transactions-4 success: 1
20724
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20725
SELECT f_int1, f_int1, '', '', 'was inserted'
20726
FROM t0_template source_tab
20727
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20729
# check transactions-5 success: 1
20732
# check transactions-6 success: 1
20733
# INFO: Storage engine used for t1 seems to be transactional.
20736
# check transactions-7 success: 1
20737
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20739
SET @@session.sql_mode = 'traditional';
20740
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20741
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20742
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20743
'', '', 'was inserted' FROM t0_template
20744
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20745
ERROR 22012: Division by 0
20748
# check transactions-8 success: 1
20749
# INFO: Storage engine used for t1 seems to be able to revert
20750
# changes made by the failing statement.
20751
SET @@session.sql_mode = '';
20753
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20755
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20757
# check special-1 success: 1
20758
UPDATE t1 SET f_charbig = '';
20760
# check special-2 success: 1
20761
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20762
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20763
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20764
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20765
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20766
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20767
'just inserted' FROM t0_template
20768
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20769
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20771
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20772
f_charbig = 'updated by trigger'
20773
WHERE f_int1 = new.f_int1;
20775
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20776
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20779
# check trigger-1 success: 1
20780
DROP TRIGGER trg_1;
20781
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20782
f_int2 = CAST(f_char1 AS SIGNED INT),
20783
f_charbig = 'just inserted'
20784
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20786
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20787
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20788
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20789
'just inserted' FROM t0_template
20790
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20791
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20793
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20794
f_charbig = 'updated by trigger'
20795
WHERE f_int1 = new.f_int1;
20797
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20798
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20799
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20801
# check trigger-2 success: 1
20802
DROP TRIGGER trg_1;
20803
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20804
f_int2 = CAST(f_char1 AS SIGNED INT),
20805
f_charbig = 'just inserted'
20806
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20808
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20809
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20810
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20811
'just inserted' FROM t0_template
20812
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20813
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20815
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20816
f_charbig = 'updated by trigger'
20817
WHERE f_int1 = new.f_int1;
20819
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20820
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20822
# check trigger-3 success: 1
20823
DROP TRIGGER trg_1;
20824
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20825
f_int2 = CAST(f_char1 AS SIGNED INT),
20826
f_charbig = 'just inserted'
20827
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20829
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20830
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20831
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20832
'just inserted' FROM t0_template
20833
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20834
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20836
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20837
f_charbig = 'updated by trigger'
20838
WHERE f_int1 = - old.f_int1;
20840
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20841
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20843
# check trigger-4 success: 1
20844
DROP TRIGGER trg_1;
20845
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20846
f_int2 = CAST(f_char1 AS SIGNED INT),
20847
f_charbig = 'just inserted'
20848
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20850
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20851
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20852
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20853
'just inserted' FROM t0_template
20854
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20855
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20857
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20858
f_charbig = 'updated by trigger'
20859
WHERE f_int1 = new.f_int1;
20861
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20862
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20864
# check trigger-5 success: 1
20865
DROP TRIGGER trg_1;
20866
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20867
f_int2 = CAST(f_char1 AS SIGNED INT),
20868
f_charbig = 'just inserted'
20869
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20871
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20872
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20873
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20874
'just inserted' FROM t0_template
20875
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20876
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20878
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20879
f_charbig = 'updated by trigger'
20880
WHERE f_int1 = - old.f_int1;
20882
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20883
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20885
# check trigger-6 success: 1
20886
DROP TRIGGER trg_1;
20887
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20888
f_int2 = CAST(f_char1 AS SIGNED INT),
20889
f_charbig = 'just inserted'
20890
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20892
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20893
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20894
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20895
'just inserted' FROM t0_template
20896
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20897
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20899
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20900
f_charbig = 'updated by trigger'
20901
WHERE f_int1 = - old.f_int1;
20904
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20906
# check trigger-7 success: 1
20907
DROP TRIGGER trg_1;
20908
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20909
f_int2 = CAST(f_char1 AS SIGNED INT),
20910
f_charbig = 'just inserted'
20911
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20913
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20914
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20915
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20916
'just inserted' FROM t0_template
20917
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20918
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20920
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20921
f_charbig = 'updated by trigger'
20922
WHERE f_int1 = - old.f_int1;
20925
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20927
# check trigger-8 success: 1
20928
DROP TRIGGER trg_1;
20929
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20930
f_int2 = CAST(f_char1 AS SIGNED INT),
20931
f_charbig = 'just inserted'
20932
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20934
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20936
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20937
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20939
SET new.f_int1 = old.f_int1 + @max_row,
20940
new.f_int2 = old.f_int2 - @max_row,
20941
new.f_charbig = '####updated per update trigger####';
20944
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20945
f_charbig = '####updated per update statement itself####';
20947
# check trigger-9 success: 1
20948
DROP TRIGGER trg_2;
20949
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20950
f_int2 = CAST(f_char1 AS SIGNED INT),
20951
f_charbig = CONCAT('===',f_char1,'===');
20952
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20954
SET new.f_int1 = new.f_int1 + @max_row,
20955
new.f_int2 = new.f_int2 - @max_row,
20956
new.f_charbig = '####updated per update trigger####';
20959
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20960
f_charbig = '####updated per update statement itself####';
20962
# check trigger-10 success: 1
20963
DROP TRIGGER trg_2;
20964
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20965
f_int2 = CAST(f_char1 AS SIGNED INT),
20966
f_charbig = CONCAT('===',f_char1,'===');
20967
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20969
SET new.f_int1 = @my_max1 + @counter,
20970
new.f_int2 = @my_min2 - @counter,
20971
new.f_charbig = '####updated per insert trigger####';
20972
SET @counter = @counter + 1;
20975
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20976
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20977
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20978
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20979
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20981
DROP TRIGGER trg_3;
20983
# check trigger-11 success: 1
20985
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20986
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20987
AND f_charbig = '####updated per insert trigger####';
20988
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20990
SET new.f_int1 = @my_max1 + @counter,
20991
new.f_int2 = @my_min2 - @counter,
20992
new.f_charbig = '####updated per insert trigger####';
20993
SET @counter = @counter + 1;
20996
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20997
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20998
SELECT CAST(f_int1 AS CHAR),
20999
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21000
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21002
DROP TRIGGER trg_3;
21004
# check trigger-12 success: 1
21006
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21007
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21008
AND f_charbig = '####updated per insert trigger####';
21010
Table Op Msg_type Msg_text
21011
test.t1 analyze note The storage engine for the table doesn't support analyze
21012
CHECK TABLE t1 EXTENDED;
21013
Table Op Msg_type Msg_text
21014
test.t1 check note The storage engine for the table doesn't support check
21015
CHECKSUM TABLE t1 EXTENDED;
21017
test.t1 <some_value>
21019
Table Op Msg_type Msg_text
21020
test.t1 optimize note The storage engine for the table doesn't support optimize
21021
# check layout success: 1
21022
REPAIR TABLE t1 EXTENDED;
21023
Table Op Msg_type Msg_text
21024
test.t1 repair note The storage engine for the table doesn't support repair
21025
# check layout success: 1
21028
# check TRUNCATE success: 1
21029
# check layout success: 1
21030
# End usability test (inc/partition_check.inc)
21037
f_charbig VARCHAR(1000)
21038
, UNIQUE INDEX uidx1 (f_int1,f_int2)
21040
PARTITION BY LIST(ABS(MOD(f_int1,2)))
21041
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
21042
(PARTITION part1 VALUES IN (0),
21043
PARTITION part2 VALUES IN (1),
21044
PARTITION part3 VALUES IN (NULL));
21045
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21046
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21047
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21048
ALTER TABLE t1 DROP INDEX uidx1;
21049
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21050
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21051
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21052
# Start usability test (inc/partition_check.inc)
21054
SHOW CREATE TABLE t1;
21056
t1 CREATE TABLE `t1` (
21057
`f_int1` int(11) DEFAULT NULL,
21058
`f_int2` int(11) DEFAULT NULL,
21059
`f_char1` char(20) DEFAULT NULL,
21060
`f_char2` char(20) DEFAULT NULL,
21061
`f_charbig` varchar(1000) DEFAULT NULL
21062
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
21064
# check prerequisites-1 success: 1
21065
# check COUNT(*) success: 1
21066
# check MIN/MAX(f_int1) success: 1
21067
# check MIN/MAX(f_int2) success: 1
21068
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21069
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21070
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21071
WHERE f_int1 IN (2,3);
21072
# check prerequisites-3 success: 1
21073
DELETE FROM t1 WHERE f_charbig = 'delete me';
21074
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21075
# check read via f_int1 success: 1
21076
# check read via f_int2 success: 1
21078
# check multiple-1 success: 1
21079
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21081
# check multiple-2 success: 1
21082
INSERT INTO t1 SELECT * FROM t0_template
21083
WHERE MOD(f_int1,3) = 0;
21085
# check multiple-3 success: 1
21086
UPDATE t1 SET f_int1 = f_int1 + @max_row
21087
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21088
AND @max_row_div2 + @max_row_div4;
21090
# check multiple-4 success: 1
21092
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21093
AND @max_row_div2 + @max_row_div4 + @max_row;
21095
# check multiple-5 success: 1
21096
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21098
SET f_int1 = @cur_value , f_int2 = @cur_value,
21099
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21100
f_charbig = '#SINGLE#';
21102
# check single-1 success: 1
21103
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21105
SET f_int1 = @cur_value , f_int2 = @cur_value,
21106
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21107
f_charbig = '#SINGLE#';
21109
# check single-2 success: 1
21110
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21111
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21112
UPDATE t1 SET f_int1 = @cur_value2
21113
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21115
# check single-3 success: 1
21116
SET @cur_value1= -1;
21117
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21118
UPDATE t1 SET f_int1 = @cur_value1
21119
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21121
# check single-4 success: 1
21122
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21123
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21125
# check single-5 success: 1
21126
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21128
# check single-6 success: 1
21129
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21131
# check single-7 success: 1
21132
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21133
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21134
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21135
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21136
f_charbig = '#NULL#';
21138
SET f_int1 = NULL , f_int2 = -@max_row,
21139
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21140
f_charbig = '#NULL#';
21141
# check null success: 1
21143
# check null-1 success: 1
21144
UPDATE t1 SET f_int1 = -@max_row
21145
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21146
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21148
# check null-2 success: 1
21149
UPDATE t1 SET f_int1 = NULL
21150
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21151
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21153
# check null-3 success: 1
21155
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21156
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21158
# check null-4 success: 1
21160
WHERE f_int1 = 0 AND f_int2 = 0
21161
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21162
AND f_charbig = '#NULL#';
21164
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21165
SELECT f_int1, f_int1, '', '', 'was inserted'
21166
FROM t0_template source_tab
21167
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21169
# check transactions-1 success: 1
21172
# check transactions-2 success: 1
21175
# check transactions-3 success: 1
21176
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21180
# check transactions-4 success: 1
21181
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21182
SELECT f_int1, f_int1, '', '', 'was inserted'
21183
FROM t0_template source_tab
21184
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21186
# check transactions-5 success: 1
21189
# check transactions-6 success: 1
21190
# INFO: Storage engine used for t1 seems to be transactional.
21193
# check transactions-7 success: 1
21194
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21196
SET @@session.sql_mode = 'traditional';
21197
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21198
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21199
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21200
'', '', 'was inserted' FROM t0_template
21201
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21202
ERROR 22012: Division by 0
21205
# check transactions-8 success: 1
21206
# INFO: Storage engine used for t1 seems to be able to revert
21207
# changes made by the failing statement.
21208
SET @@session.sql_mode = '';
21210
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21212
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21214
# check special-1 success: 1
21215
UPDATE t1 SET f_charbig = '';
21217
# check special-2 success: 1
21218
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21219
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21220
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21221
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21222
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21223
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21224
'just inserted' FROM t0_template
21225
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21226
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21228
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21229
f_charbig = 'updated by trigger'
21230
WHERE f_int1 = new.f_int1;
21232
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21233
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21236
# check trigger-1 success: 1
21237
DROP TRIGGER trg_1;
21238
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21239
f_int2 = CAST(f_char1 AS SIGNED INT),
21240
f_charbig = 'just inserted'
21241
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21243
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21244
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21245
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21246
'just inserted' FROM t0_template
21247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21248
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21250
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21251
f_charbig = 'updated by trigger'
21252
WHERE f_int1 = new.f_int1;
21254
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21255
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21256
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21258
# check trigger-2 success: 1
21259
DROP TRIGGER trg_1;
21260
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21261
f_int2 = CAST(f_char1 AS SIGNED INT),
21262
f_charbig = 'just inserted'
21263
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21265
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21266
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21267
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21268
'just inserted' FROM t0_template
21269
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21270
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21272
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21273
f_charbig = 'updated by trigger'
21274
WHERE f_int1 = new.f_int1;
21276
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21277
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21279
# check trigger-3 success: 1
21280
DROP TRIGGER trg_1;
21281
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21282
f_int2 = CAST(f_char1 AS SIGNED INT),
21283
f_charbig = 'just inserted'
21284
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21286
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21287
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21288
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21289
'just inserted' FROM t0_template
21290
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21291
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21293
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21294
f_charbig = 'updated by trigger'
21295
WHERE f_int1 = - old.f_int1;
21297
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21298
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21300
# check trigger-4 success: 1
21301
DROP TRIGGER trg_1;
21302
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21303
f_int2 = CAST(f_char1 AS SIGNED INT),
21304
f_charbig = 'just inserted'
21305
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21307
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21308
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21309
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21310
'just inserted' FROM t0_template
21311
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21312
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21314
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21315
f_charbig = 'updated by trigger'
21316
WHERE f_int1 = new.f_int1;
21318
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21319
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21321
# check trigger-5 success: 1
21322
DROP TRIGGER trg_1;
21323
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21324
f_int2 = CAST(f_char1 AS SIGNED INT),
21325
f_charbig = 'just inserted'
21326
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21328
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21329
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21330
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21331
'just inserted' FROM t0_template
21332
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21333
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21335
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21336
f_charbig = 'updated by trigger'
21337
WHERE f_int1 = - old.f_int1;
21339
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21340
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21342
# check trigger-6 success: 1
21343
DROP TRIGGER trg_1;
21344
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21345
f_int2 = CAST(f_char1 AS SIGNED INT),
21346
f_charbig = 'just inserted'
21347
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21349
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21350
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21351
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21352
'just inserted' FROM t0_template
21353
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21354
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21356
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21357
f_charbig = 'updated by trigger'
21358
WHERE f_int1 = - old.f_int1;
21361
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21363
# check trigger-7 success: 1
21364
DROP TRIGGER trg_1;
21365
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21366
f_int2 = CAST(f_char1 AS SIGNED INT),
21367
f_charbig = 'just inserted'
21368
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21370
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21371
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21372
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21373
'just inserted' FROM t0_template
21374
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21375
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21377
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21378
f_charbig = 'updated by trigger'
21379
WHERE f_int1 = - old.f_int1;
21382
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21384
# check trigger-8 success: 1
21385
DROP TRIGGER trg_1;
21386
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21387
f_int2 = CAST(f_char1 AS SIGNED INT),
21388
f_charbig = 'just inserted'
21389
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21391
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21393
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21394
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21396
SET new.f_int1 = old.f_int1 + @max_row,
21397
new.f_int2 = old.f_int2 - @max_row,
21398
new.f_charbig = '####updated per update trigger####';
21401
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21402
f_charbig = '####updated per update statement itself####';
21404
# check trigger-9 success: 1
21405
DROP TRIGGER trg_2;
21406
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21407
f_int2 = CAST(f_char1 AS SIGNED INT),
21408
f_charbig = CONCAT('===',f_char1,'===');
21409
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21411
SET new.f_int1 = new.f_int1 + @max_row,
21412
new.f_int2 = new.f_int2 - @max_row,
21413
new.f_charbig = '####updated per update trigger####';
21416
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21417
f_charbig = '####updated per update statement itself####';
21419
# check trigger-10 success: 1
21420
DROP TRIGGER trg_2;
21421
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21422
f_int2 = CAST(f_char1 AS SIGNED INT),
21423
f_charbig = CONCAT('===',f_char1,'===');
21424
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21426
SET new.f_int1 = @my_max1 + @counter,
21427
new.f_int2 = @my_min2 - @counter,
21428
new.f_charbig = '####updated per insert trigger####';
21429
SET @counter = @counter + 1;
21432
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21433
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21434
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21435
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21436
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21438
DROP TRIGGER trg_3;
21440
# check trigger-11 success: 1
21442
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21443
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21444
AND f_charbig = '####updated per insert trigger####';
21445
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21447
SET new.f_int1 = @my_max1 + @counter,
21448
new.f_int2 = @my_min2 - @counter,
21449
new.f_charbig = '####updated per insert trigger####';
21450
SET @counter = @counter + 1;
21453
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21454
INSERT INTO t1 (f_char1, f_char2, f_charbig)
21455
SELECT CAST(f_int1 AS CHAR),
21456
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21457
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21459
DROP TRIGGER trg_3;
21461
# check trigger-12 success: 1
21463
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21464
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21465
AND f_charbig = '####updated per insert trigger####';
21467
Table Op Msg_type Msg_text
21468
test.t1 analyze note The storage engine for the table doesn't support analyze
21469
CHECK TABLE t1 EXTENDED;
21470
Table Op Msg_type Msg_text
21471
test.t1 check note The storage engine for the table doesn't support check
21472
CHECKSUM TABLE t1 EXTENDED;
21474
test.t1 <some_value>
21476
Table Op Msg_type Msg_text
21477
test.t1 optimize note The storage engine for the table doesn't support optimize
21478
# check layout success: 1
21479
REPAIR TABLE t1 EXTENDED;
21480
Table Op Msg_type Msg_text
21481
test.t1 repair note The storage engine for the table doesn't support repair
21482
# check layout success: 1
21485
# check TRUNCATE success: 1
21486
# check layout success: 1
21487
# End usability test (inc/partition_check.inc)
21489
DROP TABLE IF EXISTS t1;
21495
f_charbig VARCHAR(1000)
21496
, UNIQUE INDEX uidx1 (f_int2,f_int1)
21498
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
21499
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21500
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21501
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21502
ALTER TABLE t1 DROP INDEX uidx1;
21503
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21504
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21505
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21506
# Start usability test (inc/partition_check.inc)
21508
SHOW CREATE TABLE t1;
21510
t1 CREATE TABLE `t1` (
21511
`f_int1` int(11) DEFAULT NULL,
21512
`f_int2` int(11) DEFAULT NULL,
21513
`f_char1` char(20) DEFAULT NULL,
21514
`f_char2` char(20) DEFAULT NULL,
21515
`f_charbig` varchar(1000) DEFAULT NULL
21516
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
21518
# check prerequisites-1 success: 1
21519
# check COUNT(*) success: 1
21520
# check MIN/MAX(f_int1) success: 1
21521
# check MIN/MAX(f_int2) success: 1
21522
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21523
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21524
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21525
WHERE f_int1 IN (2,3);
21526
# check prerequisites-3 success: 1
21527
DELETE FROM t1 WHERE f_charbig = 'delete me';
21528
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21529
# check read via f_int1 success: 1
21530
# check read via f_int2 success: 1
21532
# check multiple-1 success: 1
21533
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21535
# check multiple-2 success: 1
21536
INSERT INTO t1 SELECT * FROM t0_template
21537
WHERE MOD(f_int1,3) = 0;
21539
# check multiple-3 success: 1
21540
UPDATE t1 SET f_int1 = f_int1 + @max_row
21541
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21542
AND @max_row_div2 + @max_row_div4;
21544
# check multiple-4 success: 1
21546
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21547
AND @max_row_div2 + @max_row_div4 + @max_row;
21549
# check multiple-5 success: 1
21550
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21552
SET f_int1 = @cur_value , f_int2 = @cur_value,
21553
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21554
f_charbig = '#SINGLE#';
21556
# check single-1 success: 1
21557
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21559
SET f_int1 = @cur_value , f_int2 = @cur_value,
21560
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21561
f_charbig = '#SINGLE#';
21563
# check single-2 success: 1
21564
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21565
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21566
UPDATE t1 SET f_int1 = @cur_value2
21567
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21569
# check single-3 success: 1
21570
SET @cur_value1= -1;
21571
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21572
UPDATE t1 SET f_int1 = @cur_value1
21573
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21575
# check single-4 success: 1
21576
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21577
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21579
# check single-5 success: 1
21580
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21582
# check single-6 success: 1
21583
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21585
# check single-7 success: 1
21586
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21587
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21588
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21589
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21590
f_charbig = '#NULL#';
21592
SET f_int1 = NULL , f_int2 = -@max_row,
21593
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21594
f_charbig = '#NULL#';
21595
# check null success: 1
21597
# check null-1 success: 1
21598
UPDATE t1 SET f_int1 = -@max_row
21599
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21600
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21602
# check null-2 success: 1
21603
UPDATE t1 SET f_int1 = NULL
21604
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21605
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21607
# check null-3 success: 1
21609
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21610
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21612
# check null-4 success: 1
21614
WHERE f_int1 = 0 AND f_int2 = 0
21615
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21616
AND f_charbig = '#NULL#';
21618
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21619
SELECT f_int1, f_int1, '', '', 'was inserted'
21620
FROM t0_template source_tab
21621
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21623
# check transactions-1 success: 1
21626
# check transactions-2 success: 1
21629
# check transactions-3 success: 1
21630
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21634
# check transactions-4 success: 1
21635
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21636
SELECT f_int1, f_int1, '', '', 'was inserted'
21637
FROM t0_template source_tab
21638
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21640
# check transactions-5 success: 1
21643
# check transactions-6 success: 1
21644
# INFO: Storage engine used for t1 seems to be transactional.
21647
# check transactions-7 success: 1
21648
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21650
SET @@session.sql_mode = 'traditional';
21651
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21652
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21653
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21654
'', '', 'was inserted' FROM t0_template
21655
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21656
ERROR 22012: Division by 0
21659
# check transactions-8 success: 1
21660
# INFO: Storage engine used for t1 seems to be able to revert
21661
# changes made by the failing statement.
21662
SET @@session.sql_mode = '';
21664
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21666
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21668
# check special-1 success: 1
21669
UPDATE t1 SET f_charbig = '';
21671
# check special-2 success: 1
21672
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21673
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21674
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21676
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21677
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21678
'just inserted' FROM t0_template
21679
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21680
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21682
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21683
f_charbig = 'updated by trigger'
21684
WHERE f_int1 = new.f_int1;
21686
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21687
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21688
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21690
# check trigger-1 success: 1
21691
DROP TRIGGER trg_1;
21692
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21693
f_int2 = CAST(f_char1 AS SIGNED INT),
21694
f_charbig = 'just inserted'
21695
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21697
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21698
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21699
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21700
'just inserted' FROM t0_template
21701
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21702
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21704
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21705
f_charbig = 'updated by trigger'
21706
WHERE f_int1 = new.f_int1;
21708
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21709
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21710
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21712
# check trigger-2 success: 1
21713
DROP TRIGGER trg_1;
21714
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21715
f_int2 = CAST(f_char1 AS SIGNED INT),
21716
f_charbig = 'just inserted'
21717
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21719
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21720
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21721
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21722
'just inserted' FROM t0_template
21723
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21724
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21726
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21727
f_charbig = 'updated by trigger'
21728
WHERE f_int1 = new.f_int1;
21730
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21731
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21733
# check trigger-3 success: 1
21734
DROP TRIGGER trg_1;
21735
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21736
f_int2 = CAST(f_char1 AS SIGNED INT),
21737
f_charbig = 'just inserted'
21738
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21740
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21741
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21742
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21743
'just inserted' FROM t0_template
21744
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21745
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21747
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21748
f_charbig = 'updated by trigger'
21749
WHERE f_int1 = - old.f_int1;
21751
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21752
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21754
# check trigger-4 success: 1
21755
DROP TRIGGER trg_1;
21756
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21757
f_int2 = CAST(f_char1 AS SIGNED INT),
21758
f_charbig = 'just inserted'
21759
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21761
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21762
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21763
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21764
'just inserted' FROM t0_template
21765
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21766
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21768
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21769
f_charbig = 'updated by trigger'
21770
WHERE f_int1 = new.f_int1;
21772
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21773
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21775
# check trigger-5 success: 1
21776
DROP TRIGGER trg_1;
21777
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21778
f_int2 = CAST(f_char1 AS SIGNED INT),
21779
f_charbig = 'just inserted'
21780
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21782
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21783
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21784
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21785
'just inserted' FROM t0_template
21786
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21787
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21789
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21790
f_charbig = 'updated by trigger'
21791
WHERE f_int1 = - old.f_int1;
21793
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21794
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21796
# check trigger-6 success: 1
21797
DROP TRIGGER trg_1;
21798
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21799
f_int2 = CAST(f_char1 AS SIGNED INT),
21800
f_charbig = 'just inserted'
21801
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21803
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21804
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21805
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21806
'just inserted' FROM t0_template
21807
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21808
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21810
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21811
f_charbig = 'updated by trigger'
21812
WHERE f_int1 = - old.f_int1;
21815
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21817
# check trigger-7 success: 1
21818
DROP TRIGGER trg_1;
21819
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21820
f_int2 = CAST(f_char1 AS SIGNED INT),
21821
f_charbig = 'just inserted'
21822
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21824
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21825
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21826
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21827
'just inserted' FROM t0_template
21828
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21829
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21831
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21832
f_charbig = 'updated by trigger'
21833
WHERE f_int1 = - old.f_int1;
21836
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21838
# check trigger-8 success: 1
21839
DROP TRIGGER trg_1;
21840
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21841
f_int2 = CAST(f_char1 AS SIGNED INT),
21842
f_charbig = 'just inserted'
21843
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21845
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21847
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21848
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21850
SET new.f_int1 = old.f_int1 + @max_row,
21851
new.f_int2 = old.f_int2 - @max_row,
21852
new.f_charbig = '####updated per update trigger####';
21855
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21856
f_charbig = '####updated per update statement itself####';
21858
# check trigger-9 success: 1
21859
DROP TRIGGER trg_2;
21860
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21861
f_int2 = CAST(f_char1 AS SIGNED INT),
21862
f_charbig = CONCAT('===',f_char1,'===');
21863
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21865
SET new.f_int1 = new.f_int1 + @max_row,
21866
new.f_int2 = new.f_int2 - @max_row,
21867
new.f_charbig = '####updated per update trigger####';
21870
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21871
f_charbig = '####updated per update statement itself####';
21873
# check trigger-10 success: 1
21874
DROP TRIGGER trg_2;
21875
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21876
f_int2 = CAST(f_char1 AS SIGNED INT),
21877
f_charbig = CONCAT('===',f_char1,'===');
21878
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21880
SET new.f_int1 = @my_max1 + @counter,
21881
new.f_int2 = @my_min2 - @counter,
21882
new.f_charbig = '####updated per insert trigger####';
21883
SET @counter = @counter + 1;
21886
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21887
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21888
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21889
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21890
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21892
DROP TRIGGER trg_3;
21894
# check trigger-11 success: 1
21896
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21897
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21898
AND f_charbig = '####updated per insert trigger####';
21899
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21901
SET new.f_int1 = @my_max1 + @counter,
21902
new.f_int2 = @my_min2 - @counter,
21903
new.f_charbig = '####updated per insert trigger####';
21904
SET @counter = @counter + 1;
21907
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21908
INSERT INTO t1 (f_char1, f_char2, f_charbig)
21909
SELECT CAST(f_int1 AS CHAR),
21910
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21911
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21913
DROP TRIGGER trg_3;
21915
# check trigger-12 success: 1
21917
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21918
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21919
AND f_charbig = '####updated per insert trigger####';
21921
Table Op Msg_type Msg_text
21922
test.t1 analyze note The storage engine for the table doesn't support analyze
21923
CHECK TABLE t1 EXTENDED;
21924
Table Op Msg_type Msg_text
21925
test.t1 check note The storage engine for the table doesn't support check
21926
CHECKSUM TABLE t1 EXTENDED;
21928
test.t1 <some_value>
21930
Table Op Msg_type Msg_text
21931
test.t1 optimize note The storage engine for the table doesn't support optimize
21932
# check layout success: 1
21933
REPAIR TABLE t1 EXTENDED;
21934
Table Op Msg_type Msg_text
21935
test.t1 repair note The storage engine for the table doesn't support repair
21936
# check layout success: 1
21939
# check TRUNCATE success: 1
21940
# check layout success: 1
21941
# End usability test (inc/partition_check.inc)
21948
f_charbig VARCHAR(1000)
21949
, UNIQUE INDEX uidx1 (f_int2,f_int1)
21951
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
21952
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21953
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21954
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21955
ALTER TABLE t1 DROP INDEX uidx1;
21956
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21957
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21958
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21959
# Start usability test (inc/partition_check.inc)
21961
SHOW CREATE TABLE t1;
21963
t1 CREATE TABLE `t1` (
21964
`f_int1` int(11) DEFAULT NULL,
21965
`f_int2` int(11) DEFAULT NULL,
21966
`f_char1` char(20) DEFAULT NULL,
21967
`f_char2` char(20) DEFAULT NULL,
21968
`f_charbig` varchar(1000) DEFAULT NULL
21969
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
21971
# check prerequisites-1 success: 1
21972
# check COUNT(*) success: 1
21973
# check MIN/MAX(f_int1) success: 1
21974
# check MIN/MAX(f_int2) success: 1
21975
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21976
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21977
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21978
WHERE f_int1 IN (2,3);
21979
# check prerequisites-3 success: 1
21980
DELETE FROM t1 WHERE f_charbig = 'delete me';
21981
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21982
# check read via f_int1 success: 1
21983
# check read via f_int2 success: 1
21985
# check multiple-1 success: 1
21986
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21988
# check multiple-2 success: 1
21989
INSERT INTO t1 SELECT * FROM t0_template
21990
WHERE MOD(f_int1,3) = 0;
21992
# check multiple-3 success: 1
21993
UPDATE t1 SET f_int1 = f_int1 + @max_row
21994
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21995
AND @max_row_div2 + @max_row_div4;
21997
# check multiple-4 success: 1
21999
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22000
AND @max_row_div2 + @max_row_div4 + @max_row;
22002
# check multiple-5 success: 1
22003
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22005
SET f_int1 = @cur_value , f_int2 = @cur_value,
22006
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22007
f_charbig = '#SINGLE#';
22009
# check single-1 success: 1
22010
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22012
SET f_int1 = @cur_value , f_int2 = @cur_value,
22013
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22014
f_charbig = '#SINGLE#';
22016
# check single-2 success: 1
22017
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22018
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22019
UPDATE t1 SET f_int1 = @cur_value2
22020
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22022
# check single-3 success: 1
22023
SET @cur_value1= -1;
22024
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22025
UPDATE t1 SET f_int1 = @cur_value1
22026
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22028
# check single-4 success: 1
22029
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22030
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22032
# check single-5 success: 1
22033
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22035
# check single-6 success: 1
22036
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22038
# check single-7 success: 1
22039
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22040
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22041
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22042
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22043
f_charbig = '#NULL#';
22045
SET f_int1 = NULL , f_int2 = -@max_row,
22046
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22047
f_charbig = '#NULL#';
22048
# check null success: 1
22050
# check null-1 success: 1
22051
UPDATE t1 SET f_int1 = -@max_row
22052
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22053
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22055
# check null-2 success: 1
22056
UPDATE t1 SET f_int1 = NULL
22057
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22058
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22060
# check null-3 success: 1
22062
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22063
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22065
# check null-4 success: 1
22067
WHERE f_int1 = 0 AND f_int2 = 0
22068
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22069
AND f_charbig = '#NULL#';
22071
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22072
SELECT f_int1, f_int1, '', '', 'was inserted'
22073
FROM t0_template source_tab
22074
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22076
# check transactions-1 success: 1
22079
# check transactions-2 success: 1
22082
# check transactions-3 success: 1
22083
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22087
# check transactions-4 success: 1
22088
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22089
SELECT f_int1, f_int1, '', '', 'was inserted'
22090
FROM t0_template source_tab
22091
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22093
# check transactions-5 success: 1
22096
# check transactions-6 success: 1
22097
# INFO: Storage engine used for t1 seems to be transactional.
22100
# check transactions-7 success: 1
22101
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22103
SET @@session.sql_mode = 'traditional';
22104
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22105
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22106
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22107
'', '', 'was inserted' FROM t0_template
22108
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22109
ERROR 22012: Division by 0
22112
# check transactions-8 success: 1
22113
# INFO: Storage engine used for t1 seems to be able to revert
22114
# changes made by the failing statement.
22115
SET @@session.sql_mode = '';
22117
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22119
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22121
# check special-1 success: 1
22122
UPDATE t1 SET f_charbig = '';
22124
# check special-2 success: 1
22125
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22126
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22127
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22128
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22129
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22130
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22131
'just inserted' FROM t0_template
22132
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22133
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22135
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22136
f_charbig = 'updated by trigger'
22137
WHERE f_int1 = new.f_int1;
22139
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22140
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22141
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22143
# check trigger-1 success: 1
22144
DROP TRIGGER trg_1;
22145
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22146
f_int2 = CAST(f_char1 AS SIGNED INT),
22147
f_charbig = 'just inserted'
22148
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22150
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22151
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22152
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22153
'just inserted' FROM t0_template
22154
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22155
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22157
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22158
f_charbig = 'updated by trigger'
22159
WHERE f_int1 = new.f_int1;
22161
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22162
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22163
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22165
# check trigger-2 success: 1
22166
DROP TRIGGER trg_1;
22167
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22168
f_int2 = CAST(f_char1 AS SIGNED INT),
22169
f_charbig = 'just inserted'
22170
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22172
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22173
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22174
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22175
'just inserted' FROM t0_template
22176
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22177
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22179
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22180
f_charbig = 'updated by trigger'
22181
WHERE f_int1 = new.f_int1;
22183
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22184
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22186
# check trigger-3 success: 1
22187
DROP TRIGGER trg_1;
22188
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22189
f_int2 = CAST(f_char1 AS SIGNED INT),
22190
f_charbig = 'just inserted'
22191
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22193
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22194
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22195
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22196
'just inserted' FROM t0_template
22197
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22198
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22200
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22201
f_charbig = 'updated by trigger'
22202
WHERE f_int1 = - old.f_int1;
22204
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22205
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22207
# check trigger-4 success: 1
22208
DROP TRIGGER trg_1;
22209
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22210
f_int2 = CAST(f_char1 AS SIGNED INT),
22211
f_charbig = 'just inserted'
22212
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22214
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22215
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22216
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22217
'just inserted' FROM t0_template
22218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22219
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22221
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22222
f_charbig = 'updated by trigger'
22223
WHERE f_int1 = new.f_int1;
22225
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22226
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22228
# check trigger-5 success: 1
22229
DROP TRIGGER trg_1;
22230
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22231
f_int2 = CAST(f_char1 AS SIGNED INT),
22232
f_charbig = 'just inserted'
22233
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22235
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22236
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22237
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22238
'just inserted' FROM t0_template
22239
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22240
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22242
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22243
f_charbig = 'updated by trigger'
22244
WHERE f_int1 = - old.f_int1;
22246
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22247
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22249
# check trigger-6 success: 1
22250
DROP TRIGGER trg_1;
22251
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22252
f_int2 = CAST(f_char1 AS SIGNED INT),
22253
f_charbig = 'just inserted'
22254
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22256
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22257
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22258
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22259
'just inserted' FROM t0_template
22260
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22261
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22263
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22264
f_charbig = 'updated by trigger'
22265
WHERE f_int1 = - old.f_int1;
22268
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22270
# check trigger-7 success: 1
22271
DROP TRIGGER trg_1;
22272
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22273
f_int2 = CAST(f_char1 AS SIGNED INT),
22274
f_charbig = 'just inserted'
22275
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22277
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22278
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22279
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22280
'just inserted' FROM t0_template
22281
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22282
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22284
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22285
f_charbig = 'updated by trigger'
22286
WHERE f_int1 = - old.f_int1;
22289
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22291
# check trigger-8 success: 1
22292
DROP TRIGGER trg_1;
22293
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22294
f_int2 = CAST(f_char1 AS SIGNED INT),
22295
f_charbig = 'just inserted'
22296
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22298
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22300
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22301
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22303
SET new.f_int1 = old.f_int1 + @max_row,
22304
new.f_int2 = old.f_int2 - @max_row,
22305
new.f_charbig = '####updated per update trigger####';
22308
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22309
f_charbig = '####updated per update statement itself####';
22311
# check trigger-9 success: 1
22312
DROP TRIGGER trg_2;
22313
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22314
f_int2 = CAST(f_char1 AS SIGNED INT),
22315
f_charbig = CONCAT('===',f_char1,'===');
22316
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22318
SET new.f_int1 = new.f_int1 + @max_row,
22319
new.f_int2 = new.f_int2 - @max_row,
22320
new.f_charbig = '####updated per update trigger####';
22323
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22324
f_charbig = '####updated per update statement itself####';
22326
# check trigger-10 success: 1
22327
DROP TRIGGER trg_2;
22328
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22329
f_int2 = CAST(f_char1 AS SIGNED INT),
22330
f_charbig = CONCAT('===',f_char1,'===');
22331
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22333
SET new.f_int1 = @my_max1 + @counter,
22334
new.f_int2 = @my_min2 - @counter,
22335
new.f_charbig = '####updated per insert trigger####';
22336
SET @counter = @counter + 1;
22339
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22340
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22341
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22342
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22343
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22345
DROP TRIGGER trg_3;
22347
# check trigger-11 success: 1
22349
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22350
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22351
AND f_charbig = '####updated per insert trigger####';
22352
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22354
SET new.f_int1 = @my_max1 + @counter,
22355
new.f_int2 = @my_min2 - @counter,
22356
new.f_charbig = '####updated per insert trigger####';
22357
SET @counter = @counter + 1;
22360
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22361
INSERT INTO t1 (f_char1, f_char2, f_charbig)
22362
SELECT CAST(f_int1 AS CHAR),
22363
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22364
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22366
DROP TRIGGER trg_3;
22368
# check trigger-12 success: 1
22370
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22371
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22372
AND f_charbig = '####updated per insert trigger####';
22374
Table Op Msg_type Msg_text
22375
test.t1 analyze note The storage engine for the table doesn't support analyze
22376
CHECK TABLE t1 EXTENDED;
22377
Table Op Msg_type Msg_text
22378
test.t1 check note The storage engine for the table doesn't support check
22379
CHECKSUM TABLE t1 EXTENDED;
22381
test.t1 <some_value>
22383
Table Op Msg_type Msg_text
22384
test.t1 optimize note The storage engine for the table doesn't support optimize
22385
# check layout success: 1
22386
REPAIR TABLE t1 EXTENDED;
22387
Table Op Msg_type Msg_text
22388
test.t1 repair note The storage engine for the table doesn't support repair
22389
# check layout success: 1
22392
# check TRUNCATE success: 1
22393
# check layout success: 1
22394
# End usability test (inc/partition_check.inc)
22401
f_charbig VARCHAR(1000)
22402
, UNIQUE INDEX uidx1 (f_int2,f_int1)
22404
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
22405
(PARTITION part_3 VALUES IN (-3),
22406
PARTITION part_2 VALUES IN (-2),
22407
PARTITION part_1 VALUES IN (-1),
22408
PARTITION part_N VALUES IN (NULL),
22409
PARTITION part0 VALUES IN (0),
22410
PARTITION part1 VALUES IN (1),
22411
PARTITION part2 VALUES IN (2),
22412
PARTITION part3 VALUES IN (3));
22413
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22414
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22415
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22416
ALTER TABLE t1 DROP INDEX uidx1;
22417
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22418
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22419
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22420
# Start usability test (inc/partition_check.inc)
22422
SHOW CREATE TABLE t1;
22424
t1 CREATE TABLE `t1` (
22425
`f_int1` int(11) DEFAULT NULL,
22426
`f_int2` int(11) DEFAULT NULL,
22427
`f_char1` char(20) DEFAULT NULL,
22428
`f_char2` char(20) DEFAULT NULL,
22429
`f_charbig` varchar(1000) DEFAULT NULL
22430
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,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) */
22432
# check prerequisites-1 success: 1
22433
# check COUNT(*) success: 1
22434
# check MIN/MAX(f_int1) success: 1
22435
# check MIN/MAX(f_int2) success: 1
22436
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22437
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22438
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22439
WHERE f_int1 IN (2,3);
22440
# check prerequisites-3 success: 1
22441
DELETE FROM t1 WHERE f_charbig = 'delete me';
22442
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
22443
# check read via f_int1 success: 1
22444
# check read via f_int2 success: 1
22446
# check multiple-1 success: 1
22447
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22449
# check multiple-2 success: 1
22450
INSERT INTO t1 SELECT * FROM t0_template
22451
WHERE MOD(f_int1,3) = 0;
22453
# check multiple-3 success: 1
22454
UPDATE t1 SET f_int1 = f_int1 + @max_row
22455
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22456
AND @max_row_div2 + @max_row_div4;
22458
# check multiple-4 success: 1
22460
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22461
AND @max_row_div2 + @max_row_div4 + @max_row;
22463
# check multiple-5 success: 1
22464
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22466
SET f_int1 = @cur_value , f_int2 = @cur_value,
22467
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22468
f_charbig = '#SINGLE#';
22470
# check single-1 success: 1
22471
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22473
SET f_int1 = @cur_value , f_int2 = @cur_value,
22474
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22475
f_charbig = '#SINGLE#';
22477
# check single-2 success: 1
22478
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22479
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22480
UPDATE t1 SET f_int1 = @cur_value2
22481
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22483
# check single-3 success: 1
22484
SET @cur_value1= -1;
22485
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22486
UPDATE t1 SET f_int1 = @cur_value1
22487
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22489
# check single-4 success: 1
22490
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22491
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22493
# check single-5 success: 1
22494
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22496
# check single-6 success: 1
22497
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22499
# check single-7 success: 1
22500
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22501
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22502
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22503
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22504
f_charbig = '#NULL#';
22506
SET f_int1 = NULL , f_int2 = -@max_row,
22507
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22508
f_charbig = '#NULL#';
22509
# check null success: 1
22511
# check null-1 success: 1
22512
UPDATE t1 SET f_int1 = -@max_row
22513
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22514
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22516
# check null-2 success: 1
22517
UPDATE t1 SET f_int1 = NULL
22518
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22519
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22521
# check null-3 success: 1
22523
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22524
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22526
# check null-4 success: 1
22528
WHERE f_int1 = 0 AND f_int2 = 0
22529
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22530
AND f_charbig = '#NULL#';
22532
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22533
SELECT f_int1, f_int1, '', '', 'was inserted'
22534
FROM t0_template source_tab
22535
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22537
# check transactions-1 success: 1
22540
# check transactions-2 success: 1
22543
# check transactions-3 success: 1
22544
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22548
# check transactions-4 success: 1
22549
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22550
SELECT f_int1, f_int1, '', '', 'was inserted'
22551
FROM t0_template source_tab
22552
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22554
# check transactions-5 success: 1
22557
# check transactions-6 success: 1
22558
# INFO: Storage engine used for t1 seems to be transactional.
22561
# check transactions-7 success: 1
22562
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22564
SET @@session.sql_mode = 'traditional';
22565
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22566
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22567
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22568
'', '', 'was inserted' FROM t0_template
22569
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22570
ERROR 22012: Division by 0
22573
# check transactions-8 success: 1
22574
# INFO: Storage engine used for t1 seems to be able to revert
22575
# changes made by the failing statement.
22576
SET @@session.sql_mode = '';
22578
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22580
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22582
# check special-1 success: 1
22583
UPDATE t1 SET f_charbig = '';
22585
# check special-2 success: 1
22586
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22587
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22588
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22590
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22591
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22592
'just inserted' FROM t0_template
22593
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22594
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22596
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22597
f_charbig = 'updated by trigger'
22598
WHERE f_int1 = new.f_int1;
22600
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22601
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22602
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22604
# check trigger-1 success: 1
22605
DROP TRIGGER trg_1;
22606
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22607
f_int2 = CAST(f_char1 AS SIGNED INT),
22608
f_charbig = 'just inserted'
22609
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22611
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22612
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22613
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22614
'just inserted' FROM t0_template
22615
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22616
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22618
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22619
f_charbig = 'updated by trigger'
22620
WHERE f_int1 = new.f_int1;
22622
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22623
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22624
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22626
# check trigger-2 success: 1
22627
DROP TRIGGER trg_1;
22628
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22629
f_int2 = CAST(f_char1 AS SIGNED INT),
22630
f_charbig = 'just inserted'
22631
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22633
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22634
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22635
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22636
'just inserted' FROM t0_template
22637
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22638
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22640
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22641
f_charbig = 'updated by trigger'
22642
WHERE f_int1 = new.f_int1;
22644
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22645
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22647
# check trigger-3 success: 1
22648
DROP TRIGGER trg_1;
22649
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22650
f_int2 = CAST(f_char1 AS SIGNED INT),
22651
f_charbig = 'just inserted'
22652
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22654
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22655
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22656
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22657
'just inserted' FROM t0_template
22658
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22659
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22661
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22662
f_charbig = 'updated by trigger'
22663
WHERE f_int1 = - old.f_int1;
22665
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22666
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22668
# check trigger-4 success: 1
22669
DROP TRIGGER trg_1;
22670
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22671
f_int2 = CAST(f_char1 AS SIGNED INT),
22672
f_charbig = 'just inserted'
22673
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22675
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22676
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22677
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22678
'just inserted' FROM t0_template
22679
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22680
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22682
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22683
f_charbig = 'updated by trigger'
22684
WHERE f_int1 = new.f_int1;
22686
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22687
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22689
# check trigger-5 success: 1
22690
DROP TRIGGER trg_1;
22691
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22692
f_int2 = CAST(f_char1 AS SIGNED INT),
22693
f_charbig = 'just inserted'
22694
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22696
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22697
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22698
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22699
'just inserted' FROM t0_template
22700
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22701
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22703
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22704
f_charbig = 'updated by trigger'
22705
WHERE f_int1 = - old.f_int1;
22707
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22708
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22710
# check trigger-6 success: 1
22711
DROP TRIGGER trg_1;
22712
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22713
f_int2 = CAST(f_char1 AS SIGNED INT),
22714
f_charbig = 'just inserted'
22715
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22717
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22718
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22719
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22720
'just inserted' FROM t0_template
22721
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22722
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22724
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22725
f_charbig = 'updated by trigger'
22726
WHERE f_int1 = - old.f_int1;
22729
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22731
# check trigger-7 success: 1
22732
DROP TRIGGER trg_1;
22733
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22734
f_int2 = CAST(f_char1 AS SIGNED INT),
22735
f_charbig = 'just inserted'
22736
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22738
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22739
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22740
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22741
'just inserted' FROM t0_template
22742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22743
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22745
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22746
f_charbig = 'updated by trigger'
22747
WHERE f_int1 = - old.f_int1;
22750
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22752
# check trigger-8 success: 1
22753
DROP TRIGGER trg_1;
22754
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22755
f_int2 = CAST(f_char1 AS SIGNED INT),
22756
f_charbig = 'just inserted'
22757
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22759
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22761
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22762
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22764
SET new.f_int1 = old.f_int1 + @max_row,
22765
new.f_int2 = old.f_int2 - @max_row,
22766
new.f_charbig = '####updated per update trigger####';
22769
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22770
f_charbig = '####updated per update statement itself####';
22772
# check trigger-9 success: 1
22773
DROP TRIGGER trg_2;
22774
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22775
f_int2 = CAST(f_char1 AS SIGNED INT),
22776
f_charbig = CONCAT('===',f_char1,'===');
22777
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22779
SET new.f_int1 = new.f_int1 + @max_row,
22780
new.f_int2 = new.f_int2 - @max_row,
22781
new.f_charbig = '####updated per update trigger####';
22784
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22785
f_charbig = '####updated per update statement itself####';
22787
# check trigger-10 success: 1
22788
DROP TRIGGER trg_2;
22789
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22790
f_int2 = CAST(f_char1 AS SIGNED INT),
22791
f_charbig = CONCAT('===',f_char1,'===');
22792
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22794
SET new.f_int1 = @my_max1 + @counter,
22795
new.f_int2 = @my_min2 - @counter,
22796
new.f_charbig = '####updated per insert trigger####';
22797
SET @counter = @counter + 1;
22800
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22801
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22802
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22803
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22804
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22806
DROP TRIGGER trg_3;
22808
# check trigger-11 success: 1
22810
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22811
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22812
AND f_charbig = '####updated per insert trigger####';
22813
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22815
SET new.f_int1 = @my_max1 + @counter,
22816
new.f_int2 = @my_min2 - @counter,
22817
new.f_charbig = '####updated per insert trigger####';
22818
SET @counter = @counter + 1;
22821
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22822
INSERT INTO t1 (f_char1, f_char2, f_charbig)
22823
SELECT CAST(f_int1 AS CHAR),
22824
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22825
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22827
DROP TRIGGER trg_3;
22829
# check trigger-12 success: 1
22831
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22832
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22833
AND f_charbig = '####updated per insert trigger####';
22835
Table Op Msg_type Msg_text
22836
test.t1 analyze note The storage engine for the table doesn't support analyze
22837
CHECK TABLE t1 EXTENDED;
22838
Table Op Msg_type Msg_text
22839
test.t1 check note The storage engine for the table doesn't support check
22840
CHECKSUM TABLE t1 EXTENDED;
22842
test.t1 <some_value>
22844
Table Op Msg_type Msg_text
22845
test.t1 optimize note The storage engine for the table doesn't support optimize
22846
# check layout success: 1
22847
REPAIR TABLE t1 EXTENDED;
22848
Table Op Msg_type Msg_text
22849
test.t1 repair note The storage engine for the table doesn't support repair
22850
# check layout success: 1
22853
# check TRUNCATE success: 1
22854
# check layout success: 1
22855
# End usability test (inc/partition_check.inc)
22862
f_charbig VARCHAR(1000)
22863
, UNIQUE INDEX uidx1 (f_int2,f_int1)
22865
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
22866
(PARTITION parta VALUES LESS THAN (0),
22867
PARTITION partb VALUES LESS THAN (5),
22868
PARTITION partc VALUES LESS THAN (10),
22869
PARTITION partd VALUES LESS THAN (10 + 5),
22870
PARTITION parte VALUES LESS THAN (20),
22871
PARTITION partf VALUES LESS THAN (2147483646));
22872
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22873
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22874
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22875
ALTER TABLE t1 DROP INDEX uidx1;
22876
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22877
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22878
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22879
# Start usability test (inc/partition_check.inc)
22881
SHOW CREATE TABLE t1;
22883
t1 CREATE TABLE `t1` (
22884
`f_int1` int(11) DEFAULT NULL,
22885
`f_int2` int(11) DEFAULT NULL,
22886
`f_char1` char(20) DEFAULT NULL,
22887
`f_char2` char(20) DEFAULT NULL,
22888
`f_charbig` varchar(1000) DEFAULT NULL
22889
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
22891
# check prerequisites-1 success: 1
22892
# check COUNT(*) success: 1
22893
# check MIN/MAX(f_int1) success: 1
22894
# check MIN/MAX(f_int2) success: 1
22895
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22896
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22897
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22898
WHERE f_int1 IN (2,3);
22899
# check prerequisites-3 success: 1
22900
DELETE FROM t1 WHERE f_charbig = 'delete me';
22901
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
22902
# check read via f_int1 success: 1
22903
# check read via f_int2 success: 1
22905
# check multiple-1 success: 1
22906
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22908
# check multiple-2 success: 1
22909
INSERT INTO t1 SELECT * FROM t0_template
22910
WHERE MOD(f_int1,3) = 0;
22912
# check multiple-3 success: 1
22913
UPDATE t1 SET f_int1 = f_int1 + @max_row
22914
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22915
AND @max_row_div2 + @max_row_div4;
22917
# check multiple-4 success: 1
22919
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22920
AND @max_row_div2 + @max_row_div4 + @max_row;
22922
# check multiple-5 success: 1
22923
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22925
SET f_int1 = @cur_value , f_int2 = @cur_value,
22926
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22927
f_charbig = '#SINGLE#';
22929
# check single-1 success: 1
22930
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22932
SET f_int1 = @cur_value , f_int2 = @cur_value,
22933
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22934
f_charbig = '#SINGLE#';
22936
# check single-2 success: 1
22937
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22938
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22939
UPDATE t1 SET f_int1 = @cur_value2
22940
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22942
# check single-3 success: 1
22943
SET @cur_value1= -1;
22944
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22945
UPDATE t1 SET f_int1 = @cur_value1
22946
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22948
# check single-4 success: 1
22949
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22950
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22952
# check single-5 success: 1
22953
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22955
# check single-6 success: 1
22956
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22957
ERROR HY000: Table has no partition for value 2147483647
22958
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22959
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22960
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22961
f_charbig = '#NULL#';
22963
SET f_int1 = NULL , f_int2 = -@max_row,
22964
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22965
f_charbig = '#NULL#';
22966
# check null success: 1
22968
# check null-1 success: 1
22969
UPDATE t1 SET f_int1 = -@max_row
22970
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22971
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22973
# check null-2 success: 1
22974
UPDATE t1 SET f_int1 = NULL
22975
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22976
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22978
# check null-3 success: 1
22980
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22981
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22983
# check null-4 success: 1
22985
WHERE f_int1 = 0 AND f_int2 = 0
22986
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22987
AND f_charbig = '#NULL#';
22989
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22990
SELECT f_int1, f_int1, '', '', 'was inserted'
22991
FROM t0_template source_tab
22992
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22994
# check transactions-1 success: 1
22997
# check transactions-2 success: 1
23000
# check transactions-3 success: 1
23001
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23005
# check transactions-4 success: 1
23006
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23007
SELECT f_int1, f_int1, '', '', 'was inserted'
23008
FROM t0_template source_tab
23009
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23011
# check transactions-5 success: 1
23014
# check transactions-6 success: 1
23015
# INFO: Storage engine used for t1 seems to be transactional.
23018
# check transactions-7 success: 1
23019
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23021
SET @@session.sql_mode = 'traditional';
23022
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23023
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23024
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23025
'', '', 'was inserted' FROM t0_template
23026
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23027
ERROR 22012: Division by 0
23030
# check transactions-8 success: 1
23031
# INFO: Storage engine used for t1 seems to be able to revert
23032
# changes made by the failing statement.
23033
SET @@session.sql_mode = '';
23035
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23037
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23039
# check special-1 success: 1
23040
UPDATE t1 SET f_charbig = '';
23042
# check special-2 success: 1
23043
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23044
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23045
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23046
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23047
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23048
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23049
'just inserted' FROM t0_template
23050
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23051
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23053
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23054
f_charbig = 'updated by trigger'
23055
WHERE f_int1 = new.f_int1;
23057
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23058
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23059
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23061
# check trigger-1 success: 1
23062
DROP TRIGGER trg_1;
23063
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23064
f_int2 = CAST(f_char1 AS SIGNED INT),
23065
f_charbig = 'just inserted'
23066
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23068
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23069
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23070
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23071
'just inserted' FROM t0_template
23072
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23073
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23075
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23076
f_charbig = 'updated by trigger'
23077
WHERE f_int1 = new.f_int1;
23079
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23080
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23081
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23083
# check trigger-2 success: 1
23084
DROP TRIGGER trg_1;
23085
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23086
f_int2 = CAST(f_char1 AS SIGNED INT),
23087
f_charbig = 'just inserted'
23088
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23090
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23091
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23092
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23093
'just inserted' FROM t0_template
23094
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23095
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23097
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23098
f_charbig = 'updated by trigger'
23099
WHERE f_int1 = new.f_int1;
23101
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23102
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23104
# check trigger-3 success: 1
23105
DROP TRIGGER trg_1;
23106
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23107
f_int2 = CAST(f_char1 AS SIGNED INT),
23108
f_charbig = 'just inserted'
23109
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23111
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23112
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23113
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23114
'just inserted' FROM t0_template
23115
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23116
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23118
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23119
f_charbig = 'updated by trigger'
23120
WHERE f_int1 = - old.f_int1;
23122
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23123
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23125
# check trigger-4 success: 1
23126
DROP TRIGGER trg_1;
23127
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23128
f_int2 = CAST(f_char1 AS SIGNED INT),
23129
f_charbig = 'just inserted'
23130
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23132
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23133
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23134
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23135
'just inserted' FROM t0_template
23136
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23137
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23139
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23140
f_charbig = 'updated by trigger'
23141
WHERE f_int1 = new.f_int1;
23143
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23144
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23146
# check trigger-5 success: 1
23147
DROP TRIGGER trg_1;
23148
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23149
f_int2 = CAST(f_char1 AS SIGNED INT),
23150
f_charbig = 'just inserted'
23151
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23153
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23154
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23155
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23156
'just inserted' FROM t0_template
23157
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23158
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23160
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23161
f_charbig = 'updated by trigger'
23162
WHERE f_int1 = - old.f_int1;
23164
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23165
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23167
# check trigger-6 success: 1
23168
DROP TRIGGER trg_1;
23169
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23170
f_int2 = CAST(f_char1 AS SIGNED INT),
23171
f_charbig = 'just inserted'
23172
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23174
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23175
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23176
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23177
'just inserted' FROM t0_template
23178
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23179
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23181
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23182
f_charbig = 'updated by trigger'
23183
WHERE f_int1 = - old.f_int1;
23186
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23188
# check trigger-7 success: 1
23189
DROP TRIGGER trg_1;
23190
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23191
f_int2 = CAST(f_char1 AS SIGNED INT),
23192
f_charbig = 'just inserted'
23193
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23195
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23196
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23197
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23198
'just inserted' FROM t0_template
23199
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23200
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23202
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23203
f_charbig = 'updated by trigger'
23204
WHERE f_int1 = - old.f_int1;
23207
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23209
# check trigger-8 success: 1
23210
DROP TRIGGER trg_1;
23211
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23212
f_int2 = CAST(f_char1 AS SIGNED INT),
23213
f_charbig = 'just inserted'
23214
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23216
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23219
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23221
SET new.f_int1 = old.f_int1 + @max_row,
23222
new.f_int2 = old.f_int2 - @max_row,
23223
new.f_charbig = '####updated per update trigger####';
23226
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23227
f_charbig = '####updated per update statement itself####';
23229
# check trigger-9 success: 1
23230
DROP TRIGGER trg_2;
23231
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23232
f_int2 = CAST(f_char1 AS SIGNED INT),
23233
f_charbig = CONCAT('===',f_char1,'===');
23234
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23236
SET new.f_int1 = new.f_int1 + @max_row,
23237
new.f_int2 = new.f_int2 - @max_row,
23238
new.f_charbig = '####updated per update trigger####';
23241
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23242
f_charbig = '####updated per update statement itself####';
23244
# check trigger-10 success: 1
23245
DROP TRIGGER trg_2;
23246
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23247
f_int2 = CAST(f_char1 AS SIGNED INT),
23248
f_charbig = CONCAT('===',f_char1,'===');
23249
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23251
SET new.f_int1 = @my_max1 + @counter,
23252
new.f_int2 = @my_min2 - @counter,
23253
new.f_charbig = '####updated per insert trigger####';
23254
SET @counter = @counter + 1;
23257
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23258
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23259
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23260
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23261
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23263
DROP TRIGGER trg_3;
23265
# check trigger-11 success: 1
23267
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23268
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23269
AND f_charbig = '####updated per insert trigger####';
23270
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23272
SET new.f_int1 = @my_max1 + @counter,
23273
new.f_int2 = @my_min2 - @counter,
23274
new.f_charbig = '####updated per insert trigger####';
23275
SET @counter = @counter + 1;
23278
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23279
INSERT INTO t1 (f_char1, f_char2, f_charbig)
23280
SELECT CAST(f_int1 AS CHAR),
23281
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23282
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23284
DROP TRIGGER trg_3;
23286
# check trigger-12 success: 1
23288
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23289
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23290
AND f_charbig = '####updated per insert trigger####';
23292
Table Op Msg_type Msg_text
23293
test.t1 analyze note The storage engine for the table doesn't support analyze
23294
CHECK TABLE t1 EXTENDED;
23295
Table Op Msg_type Msg_text
23296
test.t1 check note The storage engine for the table doesn't support check
23297
CHECKSUM TABLE t1 EXTENDED;
23299
test.t1 <some_value>
23301
Table Op Msg_type Msg_text
23302
test.t1 optimize note The storage engine for the table doesn't support optimize
23303
# check layout success: 1
23304
REPAIR TABLE t1 EXTENDED;
23305
Table Op Msg_type Msg_text
23306
test.t1 repair note The storage engine for the table doesn't support repair
23307
# check layout success: 1
23310
# check TRUNCATE success: 1
23311
# check layout success: 1
23312
# End usability test (inc/partition_check.inc)
23319
f_charbig VARCHAR(1000)
23320
, UNIQUE INDEX uidx1 (f_int2,f_int1)
23322
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
23323
(PARTITION parta VALUES LESS THAN (0),
23324
PARTITION partb VALUES LESS THAN (5),
23325
PARTITION partc VALUES LESS THAN (10),
23326
PARTITION partd VALUES LESS THAN (2147483646));
23327
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23328
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23329
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23330
ALTER TABLE t1 DROP INDEX uidx1;
23331
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23332
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23333
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23334
# Start usability test (inc/partition_check.inc)
23336
SHOW CREATE TABLE t1;
23338
t1 CREATE TABLE `t1` (
23339
`f_int1` int(11) DEFAULT NULL,
23340
`f_int2` int(11) DEFAULT NULL,
23341
`f_char1` char(20) DEFAULT NULL,
23342
`f_char2` char(20) DEFAULT NULL,
23343
`f_charbig` varchar(1000) DEFAULT NULL
23344
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
23346
# check prerequisites-1 success: 1
23347
# check COUNT(*) success: 1
23348
# check MIN/MAX(f_int1) success: 1
23349
# check MIN/MAX(f_int2) success: 1
23350
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23351
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23352
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23353
WHERE f_int1 IN (2,3);
23354
# check prerequisites-3 success: 1
23355
DELETE FROM t1 WHERE f_charbig = 'delete me';
23356
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23357
# check read via f_int1 success: 1
23358
# check read via f_int2 success: 1
23360
# check multiple-1 success: 1
23361
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23363
# check multiple-2 success: 1
23364
INSERT INTO t1 SELECT * FROM t0_template
23365
WHERE MOD(f_int1,3) = 0;
23367
# check multiple-3 success: 1
23368
UPDATE t1 SET f_int1 = f_int1 + @max_row
23369
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23370
AND @max_row_div2 + @max_row_div4;
23372
# check multiple-4 success: 1
23374
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23375
AND @max_row_div2 + @max_row_div4 + @max_row;
23377
# check multiple-5 success: 1
23378
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23380
SET f_int1 = @cur_value , f_int2 = @cur_value,
23381
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23382
f_charbig = '#SINGLE#';
23384
# check single-1 success: 1
23385
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23387
SET f_int1 = @cur_value , f_int2 = @cur_value,
23388
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23389
f_charbig = '#SINGLE#';
23391
# check single-2 success: 1
23392
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23393
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23394
UPDATE t1 SET f_int1 = @cur_value2
23395
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23397
# check single-3 success: 1
23398
SET @cur_value1= -1;
23399
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23400
UPDATE t1 SET f_int1 = @cur_value1
23401
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23403
# check single-4 success: 1
23404
SELECT MAX(f_int1) INTO @cur_value FROM t1;
23405
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23407
# check single-5 success: 1
23408
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23410
# check single-6 success: 1
23411
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23412
ERROR HY000: Table has no partition for value 2147483647
23413
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23414
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23415
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23416
f_charbig = '#NULL#';
23418
SET f_int1 = NULL , f_int2 = -@max_row,
23419
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23420
f_charbig = '#NULL#';
23421
# check null success: 1
23423
# check null-1 success: 1
23424
UPDATE t1 SET f_int1 = -@max_row
23425
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23426
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23428
# check null-2 success: 1
23429
UPDATE t1 SET f_int1 = NULL
23430
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23431
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23433
# check null-3 success: 1
23435
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23436
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23438
# check null-4 success: 1
23440
WHERE f_int1 = 0 AND f_int2 = 0
23441
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23442
AND f_charbig = '#NULL#';
23444
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23445
SELECT f_int1, f_int1, '', '', 'was inserted'
23446
FROM t0_template source_tab
23447
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23449
# check transactions-1 success: 1
23452
# check transactions-2 success: 1
23455
# check transactions-3 success: 1
23456
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23460
# check transactions-4 success: 1
23461
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23462
SELECT f_int1, f_int1, '', '', 'was inserted'
23463
FROM t0_template source_tab
23464
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23466
# check transactions-5 success: 1
23469
# check transactions-6 success: 1
23470
# INFO: Storage engine used for t1 seems to be transactional.
23473
# check transactions-7 success: 1
23474
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23476
SET @@session.sql_mode = 'traditional';
23477
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23478
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23479
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23480
'', '', 'was inserted' FROM t0_template
23481
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23482
ERROR 22012: Division by 0
23485
# check transactions-8 success: 1
23486
# INFO: Storage engine used for t1 seems to be able to revert
23487
# changes made by the failing statement.
23488
SET @@session.sql_mode = '';
23490
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23492
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23494
# check special-1 success: 1
23495
UPDATE t1 SET f_charbig = '';
23497
# check special-2 success: 1
23498
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23499
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23500
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23501
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23502
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23503
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23504
'just inserted' FROM t0_template
23505
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23506
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23508
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23509
f_charbig = 'updated by trigger'
23510
WHERE f_int1 = new.f_int1;
23512
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23513
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23514
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23516
# check trigger-1 success: 1
23517
DROP TRIGGER trg_1;
23518
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23519
f_int2 = CAST(f_char1 AS SIGNED INT),
23520
f_charbig = 'just inserted'
23521
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23523
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23524
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23525
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23526
'just inserted' FROM t0_template
23527
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23528
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23530
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23531
f_charbig = 'updated by trigger'
23532
WHERE f_int1 = new.f_int1;
23534
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23535
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23536
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23538
# check trigger-2 success: 1
23539
DROP TRIGGER trg_1;
23540
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23541
f_int2 = CAST(f_char1 AS SIGNED INT),
23542
f_charbig = 'just inserted'
23543
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23545
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23546
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23547
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23548
'just inserted' FROM t0_template
23549
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23550
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23552
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23553
f_charbig = 'updated by trigger'
23554
WHERE f_int1 = new.f_int1;
23556
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23557
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23559
# check trigger-3 success: 1
23560
DROP TRIGGER trg_1;
23561
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23562
f_int2 = CAST(f_char1 AS SIGNED INT),
23563
f_charbig = 'just inserted'
23564
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23566
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23567
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23568
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23569
'just inserted' FROM t0_template
23570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23571
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23573
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23574
f_charbig = 'updated by trigger'
23575
WHERE f_int1 = - old.f_int1;
23577
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23578
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23580
# check trigger-4 success: 1
23581
DROP TRIGGER trg_1;
23582
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23583
f_int2 = CAST(f_char1 AS SIGNED INT),
23584
f_charbig = 'just inserted'
23585
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23587
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23588
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23589
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23590
'just inserted' FROM t0_template
23591
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23592
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23594
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23595
f_charbig = 'updated by trigger'
23596
WHERE f_int1 = new.f_int1;
23598
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23599
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23601
# check trigger-5 success: 1
23602
DROP TRIGGER trg_1;
23603
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23604
f_int2 = CAST(f_char1 AS SIGNED INT),
23605
f_charbig = 'just inserted'
23606
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23608
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23609
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23610
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23611
'just inserted' FROM t0_template
23612
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23613
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23615
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23616
f_charbig = 'updated by trigger'
23617
WHERE f_int1 = - old.f_int1;
23619
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23620
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23622
# check trigger-6 success: 1
23623
DROP TRIGGER trg_1;
23624
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23625
f_int2 = CAST(f_char1 AS SIGNED INT),
23626
f_charbig = 'just inserted'
23627
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23629
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23630
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23631
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23632
'just inserted' FROM t0_template
23633
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23634
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23636
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23637
f_charbig = 'updated by trigger'
23638
WHERE f_int1 = - old.f_int1;
23641
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23643
# check trigger-7 success: 1
23644
DROP TRIGGER trg_1;
23645
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23646
f_int2 = CAST(f_char1 AS SIGNED INT),
23647
f_charbig = 'just inserted'
23648
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23650
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23651
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23652
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23653
'just inserted' FROM t0_template
23654
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23655
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23657
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23658
f_charbig = 'updated by trigger'
23659
WHERE f_int1 = - old.f_int1;
23662
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23664
# check trigger-8 success: 1
23665
DROP TRIGGER trg_1;
23666
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23667
f_int2 = CAST(f_char1 AS SIGNED INT),
23668
f_charbig = 'just inserted'
23669
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23671
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23674
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23676
SET new.f_int1 = old.f_int1 + @max_row,
23677
new.f_int2 = old.f_int2 - @max_row,
23678
new.f_charbig = '####updated per update trigger####';
23681
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23682
f_charbig = '####updated per update statement itself####';
23684
# check trigger-9 success: 1
23685
DROP TRIGGER trg_2;
23686
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23687
f_int2 = CAST(f_char1 AS SIGNED INT),
23688
f_charbig = CONCAT('===',f_char1,'===');
23689
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23691
SET new.f_int1 = new.f_int1 + @max_row,
23692
new.f_int2 = new.f_int2 - @max_row,
23693
new.f_charbig = '####updated per update trigger####';
23696
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23697
f_charbig = '####updated per update statement itself####';
23699
# check trigger-10 success: 1
23700
DROP TRIGGER trg_2;
23701
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23702
f_int2 = CAST(f_char1 AS SIGNED INT),
23703
f_charbig = CONCAT('===',f_char1,'===');
23704
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23706
SET new.f_int1 = @my_max1 + @counter,
23707
new.f_int2 = @my_min2 - @counter,
23708
new.f_charbig = '####updated per insert trigger####';
23709
SET @counter = @counter + 1;
23712
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23713
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23714
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23715
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23716
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23718
DROP TRIGGER trg_3;
23720
# check trigger-11 success: 1
23722
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23723
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23724
AND f_charbig = '####updated per insert trigger####';
23725
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23727
SET new.f_int1 = @my_max1 + @counter,
23728
new.f_int2 = @my_min2 - @counter,
23729
new.f_charbig = '####updated per insert trigger####';
23730
SET @counter = @counter + 1;
23733
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23734
INSERT INTO t1 (f_char1, f_char2, f_charbig)
23735
SELECT CAST(f_int1 AS CHAR),
23736
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23737
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23739
DROP TRIGGER trg_3;
23741
# check trigger-12 success: 1
23743
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23744
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23745
AND f_charbig = '####updated per insert trigger####';
23747
Table Op Msg_type Msg_text
23748
test.t1 analyze note The storage engine for the table doesn't support analyze
23749
CHECK TABLE t1 EXTENDED;
23750
Table Op Msg_type Msg_text
23751
test.t1 check note The storage engine for the table doesn't support check
23752
CHECKSUM TABLE t1 EXTENDED;
23754
test.t1 <some_value>
23756
Table Op Msg_type Msg_text
23757
test.t1 optimize note The storage engine for the table doesn't support optimize
23758
# check layout success: 1
23759
REPAIR TABLE t1 EXTENDED;
23760
Table Op Msg_type Msg_text
23761
test.t1 repair note The storage engine for the table doesn't support repair
23762
# check layout success: 1
23765
# check TRUNCATE success: 1
23766
# check layout success: 1
23767
# End usability test (inc/partition_check.inc)
23774
f_charbig VARCHAR(1000)
23775
, UNIQUE INDEX uidx1 (f_int2,f_int1)
23777
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
23778
(PARTITION part1 VALUES LESS THAN (0)
23779
(SUBPARTITION subpart11, SUBPARTITION subpart12),
23780
PARTITION part2 VALUES LESS THAN (5)
23781
(SUBPARTITION subpart21, SUBPARTITION subpart22),
23782
PARTITION part3 VALUES LESS THAN (10)
23783
(SUBPARTITION subpart31, SUBPARTITION subpart32),
23784
PARTITION part4 VALUES LESS THAN (2147483646)
23785
(SUBPARTITION subpart41, SUBPARTITION subpart42));
23786
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23787
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23788
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23789
ALTER TABLE t1 DROP INDEX uidx1;
23790
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23791
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23792
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23793
# Start usability test (inc/partition_check.inc)
23795
SHOW CREATE TABLE t1;
23797
t1 CREATE TABLE `t1` (
23798
`f_int1` int(11) DEFAULT NULL,
23799
`f_int2` int(11) DEFAULT NULL,
23800
`f_char1` char(20) DEFAULT NULL,
23801
`f_char2` char(20) DEFAULT NULL,
23802
`f_charbig` varchar(1000) DEFAULT NULL
23803
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
23805
# check prerequisites-1 success: 1
23806
# check COUNT(*) success: 1
23807
# check MIN/MAX(f_int1) success: 1
23808
# check MIN/MAX(f_int2) success: 1
23809
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23810
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23811
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23812
WHERE f_int1 IN (2,3);
23813
# check prerequisites-3 success: 1
23814
DELETE FROM t1 WHERE f_charbig = 'delete me';
23815
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23816
# check read via f_int1 success: 1
23817
# check read via f_int2 success: 1
23819
# check multiple-1 success: 1
23820
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23822
# check multiple-2 success: 1
23823
INSERT INTO t1 SELECT * FROM t0_template
23824
WHERE MOD(f_int1,3) = 0;
23826
# check multiple-3 success: 1
23827
UPDATE t1 SET f_int1 = f_int1 + @max_row
23828
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23829
AND @max_row_div2 + @max_row_div4;
23831
# check multiple-4 success: 1
23833
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23834
AND @max_row_div2 + @max_row_div4 + @max_row;
23836
# check multiple-5 success: 1
23837
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23839
SET f_int1 = @cur_value , f_int2 = @cur_value,
23840
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23841
f_charbig = '#SINGLE#';
23843
# check single-1 success: 1
23844
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23846
SET f_int1 = @cur_value , f_int2 = @cur_value,
23847
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23848
f_charbig = '#SINGLE#';
23850
# check single-2 success: 1
23851
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23852
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23853
UPDATE t1 SET f_int1 = @cur_value2
23854
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23856
# check single-3 success: 1
23857
SET @cur_value1= -1;
23858
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23859
UPDATE t1 SET f_int1 = @cur_value1
23860
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23862
# check single-4 success: 1
23863
SELECT MAX(f_int1) INTO @cur_value FROM t1;
23864
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23866
# check single-5 success: 1
23867
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23869
# check single-6 success: 1
23870
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23871
ERROR HY000: Table has no partition for value 2147483647
23872
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23873
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23874
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23875
f_charbig = '#NULL#';
23877
SET f_int1 = NULL , f_int2 = -@max_row,
23878
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23879
f_charbig = '#NULL#';
23880
# check null success: 1
23882
# check null-1 success: 1
23883
UPDATE t1 SET f_int1 = -@max_row
23884
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23885
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23887
# check null-2 success: 1
23888
UPDATE t1 SET f_int1 = NULL
23889
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23890
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23892
# check null-3 success: 1
23894
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23895
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23897
# check null-4 success: 1
23899
WHERE f_int1 = 0 AND f_int2 = 0
23900
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23901
AND f_charbig = '#NULL#';
23903
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23904
SELECT f_int1, f_int1, '', '', 'was inserted'
23905
FROM t0_template source_tab
23906
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23908
# check transactions-1 success: 1
23911
# check transactions-2 success: 1
23914
# check transactions-3 success: 1
23915
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23919
# check transactions-4 success: 1
23920
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23921
SELECT f_int1, f_int1, '', '', 'was inserted'
23922
FROM t0_template source_tab
23923
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23925
# check transactions-5 success: 1
23928
# check transactions-6 success: 1
23929
# INFO: Storage engine used for t1 seems to be transactional.
23932
# check transactions-7 success: 1
23933
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23935
SET @@session.sql_mode = 'traditional';
23936
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23937
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23938
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23939
'', '', 'was inserted' FROM t0_template
23940
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23941
ERROR 22012: Division by 0
23944
# check transactions-8 success: 1
23945
# INFO: Storage engine used for t1 seems to be able to revert
23946
# changes made by the failing statement.
23947
SET @@session.sql_mode = '';
23949
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23951
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23953
# check special-1 success: 1
23954
UPDATE t1 SET f_charbig = '';
23956
# check special-2 success: 1
23957
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23958
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23959
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23960
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23961
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23962
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23963
'just inserted' FROM t0_template
23964
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23965
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23967
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23968
f_charbig = 'updated by trigger'
23969
WHERE f_int1 = new.f_int1;
23971
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23972
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23973
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23975
# check trigger-1 success: 1
23976
DROP TRIGGER trg_1;
23977
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23978
f_int2 = CAST(f_char1 AS SIGNED INT),
23979
f_charbig = 'just inserted'
23980
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23982
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23983
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23984
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23985
'just inserted' FROM t0_template
23986
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23987
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23989
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23990
f_charbig = 'updated by trigger'
23991
WHERE f_int1 = new.f_int1;
23993
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23994
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23995
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23997
# check trigger-2 success: 1
23998
DROP TRIGGER trg_1;
23999
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24000
f_int2 = CAST(f_char1 AS SIGNED INT),
24001
f_charbig = 'just inserted'
24002
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24004
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24005
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24006
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24007
'just inserted' FROM t0_template
24008
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24009
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24011
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24012
f_charbig = 'updated by trigger'
24013
WHERE f_int1 = new.f_int1;
24015
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24016
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24018
# check trigger-3 success: 1
24019
DROP TRIGGER trg_1;
24020
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24021
f_int2 = CAST(f_char1 AS SIGNED INT),
24022
f_charbig = 'just inserted'
24023
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24025
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24026
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24027
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24028
'just inserted' FROM t0_template
24029
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24030
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24032
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24033
f_charbig = 'updated by trigger'
24034
WHERE f_int1 = - old.f_int1;
24036
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24037
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24039
# check trigger-4 success: 1
24040
DROP TRIGGER trg_1;
24041
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24042
f_int2 = CAST(f_char1 AS SIGNED INT),
24043
f_charbig = 'just inserted'
24044
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24046
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24047
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24048
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24049
'just inserted' FROM t0_template
24050
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24051
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24053
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24054
f_charbig = 'updated by trigger'
24055
WHERE f_int1 = new.f_int1;
24057
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24058
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24060
# check trigger-5 success: 1
24061
DROP TRIGGER trg_1;
24062
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24063
f_int2 = CAST(f_char1 AS SIGNED INT),
24064
f_charbig = 'just inserted'
24065
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24067
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24068
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24069
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24070
'just inserted' FROM t0_template
24071
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24072
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24074
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24075
f_charbig = 'updated by trigger'
24076
WHERE f_int1 = - old.f_int1;
24078
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24079
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24081
# check trigger-6 success: 1
24082
DROP TRIGGER trg_1;
24083
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24084
f_int2 = CAST(f_char1 AS SIGNED INT),
24085
f_charbig = 'just inserted'
24086
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24088
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24089
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24090
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24091
'just inserted' FROM t0_template
24092
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24093
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24095
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24096
f_charbig = 'updated by trigger'
24097
WHERE f_int1 = - old.f_int1;
24100
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24102
# check trigger-7 success: 1
24103
DROP TRIGGER trg_1;
24104
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24105
f_int2 = CAST(f_char1 AS SIGNED INT),
24106
f_charbig = 'just inserted'
24107
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24109
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24110
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24111
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24112
'just inserted' FROM t0_template
24113
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24114
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24116
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24117
f_charbig = 'updated by trigger'
24118
WHERE f_int1 = - old.f_int1;
24121
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24123
# check trigger-8 success: 1
24124
DROP TRIGGER trg_1;
24125
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24126
f_int2 = CAST(f_char1 AS SIGNED INT),
24127
f_charbig = 'just inserted'
24128
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24130
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24132
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24133
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24135
SET new.f_int1 = old.f_int1 + @max_row,
24136
new.f_int2 = old.f_int2 - @max_row,
24137
new.f_charbig = '####updated per update trigger####';
24140
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24141
f_charbig = '####updated per update statement itself####';
24143
# check trigger-9 success: 1
24144
DROP TRIGGER trg_2;
24145
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24146
f_int2 = CAST(f_char1 AS SIGNED INT),
24147
f_charbig = CONCAT('===',f_char1,'===');
24148
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24150
SET new.f_int1 = new.f_int1 + @max_row,
24151
new.f_int2 = new.f_int2 - @max_row,
24152
new.f_charbig = '####updated per update trigger####';
24155
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24156
f_charbig = '####updated per update statement itself####';
24158
# check trigger-10 success: 1
24159
DROP TRIGGER trg_2;
24160
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24161
f_int2 = CAST(f_char1 AS SIGNED INT),
24162
f_charbig = CONCAT('===',f_char1,'===');
24163
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24165
SET new.f_int1 = @my_max1 + @counter,
24166
new.f_int2 = @my_min2 - @counter,
24167
new.f_charbig = '####updated per insert trigger####';
24168
SET @counter = @counter + 1;
24171
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24172
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24173
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24174
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24175
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24177
DROP TRIGGER trg_3;
24179
# check trigger-11 success: 1
24181
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24182
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24183
AND f_charbig = '####updated per insert trigger####';
24184
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24186
SET new.f_int1 = @my_max1 + @counter,
24187
new.f_int2 = @my_min2 - @counter,
24188
new.f_charbig = '####updated per insert trigger####';
24189
SET @counter = @counter + 1;
24192
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24193
INSERT INTO t1 (f_char1, f_char2, f_charbig)
24194
SELECT CAST(f_int1 AS CHAR),
24195
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24196
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24198
DROP TRIGGER trg_3;
24200
# check trigger-12 success: 1
24202
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24203
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24204
AND f_charbig = '####updated per insert trigger####';
24206
Table Op Msg_type Msg_text
24207
test.t1 analyze note The storage engine for the table doesn't support analyze
24208
CHECK TABLE t1 EXTENDED;
24209
Table Op Msg_type Msg_text
24210
test.t1 check note The storage engine for the table doesn't support check
24211
CHECKSUM TABLE t1 EXTENDED;
24213
test.t1 <some_value>
24215
Table Op Msg_type Msg_text
24216
test.t1 optimize note The storage engine for the table doesn't support optimize
24217
# check layout success: 1
24218
REPAIR TABLE t1 EXTENDED;
24219
Table Op Msg_type Msg_text
24220
test.t1 repair note The storage engine for the table doesn't support repair
24221
# check layout success: 1
24224
# check TRUNCATE success: 1
24225
# check layout success: 1
24226
# End usability test (inc/partition_check.inc)
24233
f_charbig VARCHAR(1000)
24234
, UNIQUE INDEX uidx1 (f_int2,f_int1)
24236
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
24237
(PARTITION part1 VALUES IN (0)
24238
(SUBPARTITION sp11, SUBPARTITION sp12),
24239
PARTITION part2 VALUES IN (1)
24240
(SUBPARTITION sp21, SUBPARTITION sp22),
24241
PARTITION part3 VALUES IN (2)
24242
(SUBPARTITION sp31, SUBPARTITION sp32),
24243
PARTITION part4 VALUES IN (NULL)
24244
(SUBPARTITION sp41, SUBPARTITION sp42));
24245
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24246
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24247
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24248
ALTER TABLE t1 DROP INDEX uidx1;
24249
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24250
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24251
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24252
# Start usability test (inc/partition_check.inc)
24254
SHOW CREATE TABLE t1;
24256
t1 CREATE TABLE `t1` (
24257
`f_int1` int(11) DEFAULT NULL,
24258
`f_int2` int(11) DEFAULT NULL,
24259
`f_char1` char(20) DEFAULT NULL,
24260
`f_char2` char(20) DEFAULT NULL,
24261
`f_charbig` varchar(1000) DEFAULT NULL
24262
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
24264
# check prerequisites-1 success: 1
24265
# check COUNT(*) success: 1
24266
# check MIN/MAX(f_int1) success: 1
24267
# check MIN/MAX(f_int2) success: 1
24268
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24269
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24270
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24271
WHERE f_int1 IN (2,3);
24272
# check prerequisites-3 success: 1
24273
DELETE FROM t1 WHERE f_charbig = 'delete me';
24274
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
24275
# check read via f_int1 success: 1
24276
# check read via f_int2 success: 1
24278
# check multiple-1 success: 1
24279
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24281
# check multiple-2 success: 1
24282
INSERT INTO t1 SELECT * FROM t0_template
24283
WHERE MOD(f_int1,3) = 0;
24285
# check multiple-3 success: 1
24286
UPDATE t1 SET f_int1 = f_int1 + @max_row
24287
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24288
AND @max_row_div2 + @max_row_div4;
24290
# check multiple-4 success: 1
24292
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24293
AND @max_row_div2 + @max_row_div4 + @max_row;
24295
# check multiple-5 success: 1
24296
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24298
SET f_int1 = @cur_value , f_int2 = @cur_value,
24299
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24300
f_charbig = '#SINGLE#';
24302
# check single-1 success: 1
24303
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24305
SET f_int1 = @cur_value , f_int2 = @cur_value,
24306
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24307
f_charbig = '#SINGLE#';
24309
# check single-2 success: 1
24310
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24311
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24312
UPDATE t1 SET f_int1 = @cur_value2
24313
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24315
# check single-3 success: 1
24316
SET @cur_value1= -1;
24317
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24318
UPDATE t1 SET f_int1 = @cur_value1
24319
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24321
# check single-4 success: 1
24322
SELECT MAX(f_int1) INTO @cur_value FROM t1;
24323
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24325
# check single-5 success: 1
24326
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24328
# check single-6 success: 1
24329
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24331
# check single-7 success: 1
24332
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24333
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24334
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24335
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24336
f_charbig = '#NULL#';
24338
SET f_int1 = NULL , f_int2 = -@max_row,
24339
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24340
f_charbig = '#NULL#';
24341
# check null success: 1
24343
# check null-1 success: 1
24344
UPDATE t1 SET f_int1 = -@max_row
24345
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24346
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24348
# check null-2 success: 1
24349
UPDATE t1 SET f_int1 = NULL
24350
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24351
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24353
# check null-3 success: 1
24355
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24356
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24358
# check null-4 success: 1
24360
WHERE f_int1 = 0 AND f_int2 = 0
24361
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24362
AND f_charbig = '#NULL#';
24364
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24365
SELECT f_int1, f_int1, '', '', 'was inserted'
24366
FROM t0_template source_tab
24367
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24369
# check transactions-1 success: 1
24372
# check transactions-2 success: 1
24375
# check transactions-3 success: 1
24376
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24380
# check transactions-4 success: 1
24381
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24382
SELECT f_int1, f_int1, '', '', 'was inserted'
24383
FROM t0_template source_tab
24384
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24386
# check transactions-5 success: 1
24389
# check transactions-6 success: 1
24390
# INFO: Storage engine used for t1 seems to be transactional.
24393
# check transactions-7 success: 1
24394
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24396
SET @@session.sql_mode = 'traditional';
24397
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24398
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24399
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24400
'', '', 'was inserted' FROM t0_template
24401
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24402
ERROR 22012: Division by 0
24405
# check transactions-8 success: 1
24406
# INFO: Storage engine used for t1 seems to be able to revert
24407
# changes made by the failing statement.
24408
SET @@session.sql_mode = '';
24410
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24412
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24414
# check special-1 success: 1
24415
UPDATE t1 SET f_charbig = '';
24417
# check special-2 success: 1
24418
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24419
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24420
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24421
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24422
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24423
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24424
'just inserted' FROM t0_template
24425
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24426
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24428
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24429
f_charbig = 'updated by trigger'
24430
WHERE f_int1 = new.f_int1;
24432
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24433
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24434
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24436
# check trigger-1 success: 1
24437
DROP TRIGGER trg_1;
24438
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24439
f_int2 = CAST(f_char1 AS SIGNED INT),
24440
f_charbig = 'just inserted'
24441
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24443
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24444
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24445
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24446
'just inserted' FROM t0_template
24447
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24448
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24450
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24451
f_charbig = 'updated by trigger'
24452
WHERE f_int1 = new.f_int1;
24454
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24455
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24456
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24458
# check trigger-2 success: 1
24459
DROP TRIGGER trg_1;
24460
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24461
f_int2 = CAST(f_char1 AS SIGNED INT),
24462
f_charbig = 'just inserted'
24463
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24465
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24466
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24467
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24468
'just inserted' FROM t0_template
24469
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24470
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24472
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24473
f_charbig = 'updated by trigger'
24474
WHERE f_int1 = new.f_int1;
24476
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24477
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24479
# check trigger-3 success: 1
24480
DROP TRIGGER trg_1;
24481
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24482
f_int2 = CAST(f_char1 AS SIGNED INT),
24483
f_charbig = 'just inserted'
24484
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24486
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24487
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24488
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24489
'just inserted' FROM t0_template
24490
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24491
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24493
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24494
f_charbig = 'updated by trigger'
24495
WHERE f_int1 = - old.f_int1;
24497
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24498
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24500
# check trigger-4 success: 1
24501
DROP TRIGGER trg_1;
24502
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24503
f_int2 = CAST(f_char1 AS SIGNED INT),
24504
f_charbig = 'just inserted'
24505
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24507
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24508
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24509
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24510
'just inserted' FROM t0_template
24511
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24512
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24514
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24515
f_charbig = 'updated by trigger'
24516
WHERE f_int1 = new.f_int1;
24518
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24519
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24521
# check trigger-5 success: 1
24522
DROP TRIGGER trg_1;
24523
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24524
f_int2 = CAST(f_char1 AS SIGNED INT),
24525
f_charbig = 'just inserted'
24526
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24528
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24529
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24530
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24531
'just inserted' FROM t0_template
24532
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24533
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24535
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24536
f_charbig = 'updated by trigger'
24537
WHERE f_int1 = - old.f_int1;
24539
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24540
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24542
# check trigger-6 success: 1
24543
DROP TRIGGER trg_1;
24544
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24545
f_int2 = CAST(f_char1 AS SIGNED INT),
24546
f_charbig = 'just inserted'
24547
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24549
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24550
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24551
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24552
'just inserted' FROM t0_template
24553
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24554
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24556
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24557
f_charbig = 'updated by trigger'
24558
WHERE f_int1 = - old.f_int1;
24561
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24563
# check trigger-7 success: 1
24564
DROP TRIGGER trg_1;
24565
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24566
f_int2 = CAST(f_char1 AS SIGNED INT),
24567
f_charbig = 'just inserted'
24568
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24570
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24571
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24572
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24573
'just inserted' FROM t0_template
24574
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24575
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24577
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24578
f_charbig = 'updated by trigger'
24579
WHERE f_int1 = - old.f_int1;
24582
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24584
# check trigger-8 success: 1
24585
DROP TRIGGER trg_1;
24586
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24587
f_int2 = CAST(f_char1 AS SIGNED INT),
24588
f_charbig = 'just inserted'
24589
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24591
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24593
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24594
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24596
SET new.f_int1 = old.f_int1 + @max_row,
24597
new.f_int2 = old.f_int2 - @max_row,
24598
new.f_charbig = '####updated per update trigger####';
24601
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24602
f_charbig = '####updated per update statement itself####';
24604
# check trigger-9 success: 1
24605
DROP TRIGGER trg_2;
24606
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24607
f_int2 = CAST(f_char1 AS SIGNED INT),
24608
f_charbig = CONCAT('===',f_char1,'===');
24609
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24611
SET new.f_int1 = new.f_int1 + @max_row,
24612
new.f_int2 = new.f_int2 - @max_row,
24613
new.f_charbig = '####updated per update trigger####';
24616
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24617
f_charbig = '####updated per update statement itself####';
24619
# check trigger-10 success: 1
24620
DROP TRIGGER trg_2;
24621
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24622
f_int2 = CAST(f_char1 AS SIGNED INT),
24623
f_charbig = CONCAT('===',f_char1,'===');
24624
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24626
SET new.f_int1 = @my_max1 + @counter,
24627
new.f_int2 = @my_min2 - @counter,
24628
new.f_charbig = '####updated per insert trigger####';
24629
SET @counter = @counter + 1;
24632
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24633
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24634
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24635
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24636
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24638
DROP TRIGGER trg_3;
24640
# check trigger-11 success: 1
24642
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24643
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24644
AND f_charbig = '####updated per insert trigger####';
24645
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24647
SET new.f_int1 = @my_max1 + @counter,
24648
new.f_int2 = @my_min2 - @counter,
24649
new.f_charbig = '####updated per insert trigger####';
24650
SET @counter = @counter + 1;
24653
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24654
INSERT INTO t1 (f_char1, f_char2, f_charbig)
24655
SELECT CAST(f_int1 AS CHAR),
24656
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24657
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24659
DROP TRIGGER trg_3;
24661
# check trigger-12 success: 1
24663
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24664
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24665
AND f_charbig = '####updated per insert trigger####';
24667
Table Op Msg_type Msg_text
24668
test.t1 analyze note The storage engine for the table doesn't support analyze
24669
CHECK TABLE t1 EXTENDED;
24670
Table Op Msg_type Msg_text
24671
test.t1 check note The storage engine for the table doesn't support check
24672
CHECKSUM TABLE t1 EXTENDED;
24674
test.t1 <some_value>
24676
Table Op Msg_type Msg_text
24677
test.t1 optimize note The storage engine for the table doesn't support optimize
24678
# check layout success: 1
24679
REPAIR TABLE t1 EXTENDED;
24680
Table Op Msg_type Msg_text
24681
test.t1 repair note The storage engine for the table doesn't support repair
24682
# check layout success: 1
24685
# check TRUNCATE success: 1
24686
# check layout success: 1
24687
# End usability test (inc/partition_check.inc)
24694
f_charbig VARCHAR(1000)
24695
, UNIQUE INDEX uidx1 (f_int2,f_int1)
24697
PARTITION BY LIST(ABS(MOD(f_int1,2)))
24698
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
24699
(PARTITION part1 VALUES IN (0),
24700
PARTITION part2 VALUES IN (1),
24701
PARTITION part3 VALUES IN (NULL));
24702
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24703
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24704
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24705
ALTER TABLE t1 DROP INDEX uidx1;
24706
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24707
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24708
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24709
# Start usability test (inc/partition_check.inc)
24711
SHOW CREATE TABLE t1;
24713
t1 CREATE TABLE `t1` (
24714
`f_int1` int(11) DEFAULT NULL,
24715
`f_int2` int(11) DEFAULT NULL,
24716
`f_char1` char(20) DEFAULT NULL,
24717
`f_char2` char(20) DEFAULT NULL,
24718
`f_charbig` varchar(1000) DEFAULT NULL
24719
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
24721
# check prerequisites-1 success: 1
24722
# check COUNT(*) success: 1
24723
# check MIN/MAX(f_int1) success: 1
24724
# check MIN/MAX(f_int2) success: 1
24725
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24726
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24727
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24728
WHERE f_int1 IN (2,3);
24729
# check prerequisites-3 success: 1
24730
DELETE FROM t1 WHERE f_charbig = 'delete me';
24731
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
24732
# check read via f_int1 success: 1
24733
# check read via f_int2 success: 1
24735
# check multiple-1 success: 1
24736
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24738
# check multiple-2 success: 1
24739
INSERT INTO t1 SELECT * FROM t0_template
24740
WHERE MOD(f_int1,3) = 0;
24742
# check multiple-3 success: 1
24743
UPDATE t1 SET f_int1 = f_int1 + @max_row
24744
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24745
AND @max_row_div2 + @max_row_div4;
24747
# check multiple-4 success: 1
24749
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24750
AND @max_row_div2 + @max_row_div4 + @max_row;
24752
# check multiple-5 success: 1
24753
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24755
SET f_int1 = @cur_value , f_int2 = @cur_value,
24756
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24757
f_charbig = '#SINGLE#';
24759
# check single-1 success: 1
24760
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24762
SET f_int1 = @cur_value , f_int2 = @cur_value,
24763
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24764
f_charbig = '#SINGLE#';
24766
# check single-2 success: 1
24767
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24768
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24769
UPDATE t1 SET f_int1 = @cur_value2
24770
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24772
# check single-3 success: 1
24773
SET @cur_value1= -1;
24774
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24775
UPDATE t1 SET f_int1 = @cur_value1
24776
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24778
# check single-4 success: 1
24779
SELECT MAX(f_int1) INTO @cur_value FROM t1;
24780
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24782
# check single-5 success: 1
24783
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24785
# check single-6 success: 1
24786
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24788
# check single-7 success: 1
24789
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24790
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24791
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24792
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24793
f_charbig = '#NULL#';
24795
SET f_int1 = NULL , f_int2 = -@max_row,
24796
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24797
f_charbig = '#NULL#';
24798
# check null success: 1
24800
# check null-1 success: 1
24801
UPDATE t1 SET f_int1 = -@max_row
24802
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24803
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24805
# check null-2 success: 1
24806
UPDATE t1 SET f_int1 = NULL
24807
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24808
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24810
# check null-3 success: 1
24812
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24813
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24815
# check null-4 success: 1
24817
WHERE f_int1 = 0 AND f_int2 = 0
24818
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24819
AND f_charbig = '#NULL#';
24821
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24822
SELECT f_int1, f_int1, '', '', 'was inserted'
24823
FROM t0_template source_tab
24824
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24826
# check transactions-1 success: 1
24829
# check transactions-2 success: 1
24832
# check transactions-3 success: 1
24833
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24837
# check transactions-4 success: 1
24838
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24839
SELECT f_int1, f_int1, '', '', 'was inserted'
24840
FROM t0_template source_tab
24841
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24843
# check transactions-5 success: 1
24846
# check transactions-6 success: 1
24847
# INFO: Storage engine used for t1 seems to be transactional.
24850
# check transactions-7 success: 1
24851
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24853
SET @@session.sql_mode = 'traditional';
24854
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24855
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24856
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24857
'', '', 'was inserted' FROM t0_template
24858
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24859
ERROR 22012: Division by 0
24862
# check transactions-8 success: 1
24863
# INFO: Storage engine used for t1 seems to be able to revert
24864
# changes made by the failing statement.
24865
SET @@session.sql_mode = '';
24867
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24869
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24871
# check special-1 success: 1
24872
UPDATE t1 SET f_charbig = '';
24874
# check special-2 success: 1
24875
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24876
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24877
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24878
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24879
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24880
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24881
'just inserted' FROM t0_template
24882
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24883
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24885
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24886
f_charbig = 'updated by trigger'
24887
WHERE f_int1 = new.f_int1;
24889
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24890
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24891
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24893
# check trigger-1 success: 1
24894
DROP TRIGGER trg_1;
24895
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24896
f_int2 = CAST(f_char1 AS SIGNED INT),
24897
f_charbig = 'just inserted'
24898
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24900
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24901
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24902
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24903
'just inserted' FROM t0_template
24904
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24905
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24907
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24908
f_charbig = 'updated by trigger'
24909
WHERE f_int1 = new.f_int1;
24911
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24912
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24913
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24915
# check trigger-2 success: 1
24916
DROP TRIGGER trg_1;
24917
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24918
f_int2 = CAST(f_char1 AS SIGNED INT),
24919
f_charbig = 'just inserted'
24920
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24922
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24923
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24924
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24925
'just inserted' FROM t0_template
24926
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24927
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24929
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24930
f_charbig = 'updated by trigger'
24931
WHERE f_int1 = new.f_int1;
24933
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24934
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24936
# check trigger-3 success: 1
24937
DROP TRIGGER trg_1;
24938
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24939
f_int2 = CAST(f_char1 AS SIGNED INT),
24940
f_charbig = 'just inserted'
24941
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24943
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24944
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24945
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24946
'just inserted' FROM t0_template
24947
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24948
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24950
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24951
f_charbig = 'updated by trigger'
24952
WHERE f_int1 = - old.f_int1;
24954
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24955
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24957
# check trigger-4 success: 1
24958
DROP TRIGGER trg_1;
24959
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24960
f_int2 = CAST(f_char1 AS SIGNED INT),
24961
f_charbig = 'just inserted'
24962
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24964
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24965
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24966
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24967
'just inserted' FROM t0_template
24968
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24969
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24971
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24972
f_charbig = 'updated by trigger'
24973
WHERE f_int1 = new.f_int1;
24975
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24976
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24978
# check trigger-5 success: 1
24979
DROP TRIGGER trg_1;
24980
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24981
f_int2 = CAST(f_char1 AS SIGNED INT),
24982
f_charbig = 'just inserted'
24983
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24985
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24986
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24987
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24988
'just inserted' FROM t0_template
24989
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24990
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24992
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24993
f_charbig = 'updated by trigger'
24994
WHERE f_int1 = - old.f_int1;
24996
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24997
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24999
# check trigger-6 success: 1
25000
DROP TRIGGER trg_1;
25001
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25002
f_int2 = CAST(f_char1 AS SIGNED INT),
25003
f_charbig = 'just inserted'
25004
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25006
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25007
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25008
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25009
'just inserted' FROM t0_template
25010
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25011
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25013
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25014
f_charbig = 'updated by trigger'
25015
WHERE f_int1 = - old.f_int1;
25018
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25020
# check trigger-7 success: 1
25021
DROP TRIGGER trg_1;
25022
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25023
f_int2 = CAST(f_char1 AS SIGNED INT),
25024
f_charbig = 'just inserted'
25025
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25027
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25028
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25029
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25030
'just inserted' FROM t0_template
25031
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25032
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25034
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25035
f_charbig = 'updated by trigger'
25036
WHERE f_int1 = - old.f_int1;
25039
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25041
# check trigger-8 success: 1
25042
DROP TRIGGER trg_1;
25043
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25044
f_int2 = CAST(f_char1 AS SIGNED INT),
25045
f_charbig = 'just inserted'
25046
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25048
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25050
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25051
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25053
SET new.f_int1 = old.f_int1 + @max_row,
25054
new.f_int2 = old.f_int2 - @max_row,
25055
new.f_charbig = '####updated per update trigger####';
25058
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25059
f_charbig = '####updated per update statement itself####';
25061
# check trigger-9 success: 1
25062
DROP TRIGGER trg_2;
25063
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25064
f_int2 = CAST(f_char1 AS SIGNED INT),
25065
f_charbig = CONCAT('===',f_char1,'===');
25066
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25068
SET new.f_int1 = new.f_int1 + @max_row,
25069
new.f_int2 = new.f_int2 - @max_row,
25070
new.f_charbig = '####updated per update trigger####';
25073
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25074
f_charbig = '####updated per update statement itself####';
25076
# check trigger-10 success: 1
25077
DROP TRIGGER trg_2;
25078
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25079
f_int2 = CAST(f_char1 AS SIGNED INT),
25080
f_charbig = CONCAT('===',f_char1,'===');
25081
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25083
SET new.f_int1 = @my_max1 + @counter,
25084
new.f_int2 = @my_min2 - @counter,
25085
new.f_charbig = '####updated per insert trigger####';
25086
SET @counter = @counter + 1;
25089
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25090
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25091
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25092
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25093
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25095
DROP TRIGGER trg_3;
25097
# check trigger-11 success: 1
25099
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25100
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25101
AND f_charbig = '####updated per insert trigger####';
25102
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25104
SET new.f_int1 = @my_max1 + @counter,
25105
new.f_int2 = @my_min2 - @counter,
25106
new.f_charbig = '####updated per insert trigger####';
25107
SET @counter = @counter + 1;
25110
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25111
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25112
SELECT CAST(f_int1 AS CHAR),
25113
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25114
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25116
DROP TRIGGER trg_3;
25118
# check trigger-12 success: 1
25120
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25121
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25122
AND f_charbig = '####updated per insert trigger####';
25124
Table Op Msg_type Msg_text
25125
test.t1 analyze note The storage engine for the table doesn't support analyze
25126
CHECK TABLE t1 EXTENDED;
25127
Table Op Msg_type Msg_text
25128
test.t1 check note The storage engine for the table doesn't support check
25129
CHECKSUM TABLE t1 EXTENDED;
25131
test.t1 <some_value>
25133
Table Op Msg_type Msg_text
25134
test.t1 optimize note The storage engine for the table doesn't support optimize
25135
# check layout success: 1
25136
REPAIR TABLE t1 EXTENDED;
25137
Table Op Msg_type Msg_text
25138
test.t1 repair note The storage engine for the table doesn't support repair
25139
# check layout success: 1
25142
# check TRUNCATE success: 1
25143
# check layout success: 1
25144
# End usability test (inc/partition_check.inc)
25146
# 2.2.3 DROP PRIMARY KEY + UNIQUE INDEX consisting of two columns
25147
DROP TABLE IF EXISTS t1;
25153
f_charbig VARCHAR(1000)
25154
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
25156
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
25157
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25158
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25159
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25160
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
25161
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25162
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25163
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25164
# Start usability test (inc/partition_check.inc)
25166
SHOW CREATE TABLE t1;
25168
t1 CREATE TABLE `t1` (
25169
`f_int1` int(11) NOT NULL DEFAULT '0',
25170
`f_int2` int(11) NOT NULL DEFAULT '0',
25171
`f_char1` char(20) DEFAULT NULL,
25172
`f_char2` char(20) DEFAULT NULL,
25173
`f_charbig` varchar(1000) DEFAULT NULL
25174
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
25176
# check prerequisites-1 success: 1
25177
# check COUNT(*) success: 1
25178
# check MIN/MAX(f_int1) success: 1
25179
# check MIN/MAX(f_int2) success: 1
25180
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25181
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25182
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25183
WHERE f_int1 IN (2,3);
25184
# check prerequisites-3 success: 1
25185
DELETE FROM t1 WHERE f_charbig = 'delete me';
25186
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25187
# check read via f_int1 success: 1
25188
# check read via f_int2 success: 1
25190
# check multiple-1 success: 1
25191
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25193
# check multiple-2 success: 1
25194
INSERT INTO t1 SELECT * FROM t0_template
25195
WHERE MOD(f_int1,3) = 0;
25197
# check multiple-3 success: 1
25198
UPDATE t1 SET f_int1 = f_int1 + @max_row
25199
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25200
AND @max_row_div2 + @max_row_div4;
25202
# check multiple-4 success: 1
25204
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25205
AND @max_row_div2 + @max_row_div4 + @max_row;
25207
# check multiple-5 success: 1
25208
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25210
SET f_int1 = @cur_value , f_int2 = @cur_value,
25211
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25212
f_charbig = '#SINGLE#';
25214
# check single-1 success: 1
25215
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25217
SET f_int1 = @cur_value , f_int2 = @cur_value,
25218
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25219
f_charbig = '#SINGLE#';
25221
# check single-2 success: 1
25222
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25223
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25224
UPDATE t1 SET f_int1 = @cur_value2
25225
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25227
# check single-3 success: 1
25228
SET @cur_value1= -1;
25229
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25230
UPDATE t1 SET f_int1 = @cur_value1
25231
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25233
# check single-4 success: 1
25234
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25235
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25237
# check single-5 success: 1
25238
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25240
# check single-6 success: 1
25241
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25243
# check single-7 success: 1
25244
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25245
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25246
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25247
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25248
f_charbig = '#NULL#';
25250
SET f_int1 = NULL , f_int2 = -@max_row,
25251
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25252
f_charbig = '#NULL#';
25253
ERROR 23000: Column 'f_int1' cannot be null
25254
# check null success: 1
25256
WHERE f_int1 = 0 AND f_int2 = 0
25257
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25258
AND f_charbig = '#NULL#';
25260
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25261
SELECT f_int1, f_int1, '', '', 'was inserted'
25262
FROM t0_template source_tab
25263
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25265
# check transactions-1 success: 1
25268
# check transactions-2 success: 1
25271
# check transactions-3 success: 1
25272
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25276
# check transactions-4 success: 1
25277
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25278
SELECT f_int1, f_int1, '', '', 'was inserted'
25279
FROM t0_template source_tab
25280
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25282
# check transactions-5 success: 1
25285
# check transactions-6 success: 1
25286
# INFO: Storage engine used for t1 seems to be transactional.
25289
# check transactions-7 success: 1
25290
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25292
SET @@session.sql_mode = 'traditional';
25293
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25294
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25295
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25296
'', '', 'was inserted' FROM t0_template
25297
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25298
ERROR 22012: Division by 0
25301
# check transactions-8 success: 1
25302
# INFO: Storage engine used for t1 seems to be able to revert
25303
# changes made by the failing statement.
25304
SET @@session.sql_mode = '';
25306
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25308
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25310
# check special-1 success: 1
25311
UPDATE t1 SET f_charbig = '';
25313
# check special-2 success: 1
25314
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25315
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25316
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25317
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25318
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25319
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25320
'just inserted' FROM t0_template
25321
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25322
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25324
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25325
f_charbig = 'updated by trigger'
25326
WHERE f_int1 = new.f_int1;
25328
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25329
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25330
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25332
# check trigger-1 success: 1
25333
DROP TRIGGER trg_1;
25334
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25335
f_int2 = CAST(f_char1 AS SIGNED INT),
25336
f_charbig = 'just inserted'
25337
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25339
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25340
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25341
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25342
'just inserted' FROM t0_template
25343
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25344
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25346
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25347
f_charbig = 'updated by trigger'
25348
WHERE f_int1 = new.f_int1;
25350
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25351
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25352
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25354
# check trigger-2 success: 1
25355
DROP TRIGGER trg_1;
25356
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25357
f_int2 = CAST(f_char1 AS SIGNED INT),
25358
f_charbig = 'just inserted'
25359
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25361
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25362
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25363
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25364
'just inserted' FROM t0_template
25365
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25366
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25368
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25369
f_charbig = 'updated by trigger'
25370
WHERE f_int1 = new.f_int1;
25372
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25373
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25375
# check trigger-3 success: 1
25376
DROP TRIGGER trg_1;
25377
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25378
f_int2 = CAST(f_char1 AS SIGNED INT),
25379
f_charbig = 'just inserted'
25380
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25382
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25383
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25384
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25385
'just inserted' FROM t0_template
25386
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25387
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25389
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25390
f_charbig = 'updated by trigger'
25391
WHERE f_int1 = - old.f_int1;
25393
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25394
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25396
# check trigger-4 success: 1
25397
DROP TRIGGER trg_1;
25398
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25399
f_int2 = CAST(f_char1 AS SIGNED INT),
25400
f_charbig = 'just inserted'
25401
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25403
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25404
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25405
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25406
'just inserted' FROM t0_template
25407
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25408
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25410
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25411
f_charbig = 'updated by trigger'
25412
WHERE f_int1 = new.f_int1;
25414
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25415
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25417
# check trigger-5 success: 1
25418
DROP TRIGGER trg_1;
25419
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25420
f_int2 = CAST(f_char1 AS SIGNED INT),
25421
f_charbig = 'just inserted'
25422
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25424
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25425
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25426
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25427
'just inserted' FROM t0_template
25428
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25429
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25431
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25432
f_charbig = 'updated by trigger'
25433
WHERE f_int1 = - old.f_int1;
25435
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25436
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25438
# check trigger-6 success: 1
25439
DROP TRIGGER trg_1;
25440
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25441
f_int2 = CAST(f_char1 AS SIGNED INT),
25442
f_charbig = 'just inserted'
25443
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25445
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25446
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25447
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25448
'just inserted' FROM t0_template
25449
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25450
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25452
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25453
f_charbig = 'updated by trigger'
25454
WHERE f_int1 = - old.f_int1;
25457
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25459
# check trigger-7 success: 1
25460
DROP TRIGGER trg_1;
25461
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25462
f_int2 = CAST(f_char1 AS SIGNED INT),
25463
f_charbig = 'just inserted'
25464
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25466
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25467
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25468
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25469
'just inserted' FROM t0_template
25470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25471
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25473
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25474
f_charbig = 'updated by trigger'
25475
WHERE f_int1 = - old.f_int1;
25478
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25480
# check trigger-8 success: 1
25481
DROP TRIGGER trg_1;
25482
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25483
f_int2 = CAST(f_char1 AS SIGNED INT),
25484
f_charbig = 'just inserted'
25485
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25487
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25489
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25490
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25492
SET new.f_int1 = old.f_int1 + @max_row,
25493
new.f_int2 = old.f_int2 - @max_row,
25494
new.f_charbig = '####updated per update trigger####';
25497
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25498
f_charbig = '####updated per update statement itself####';
25500
# check trigger-9 success: 1
25501
DROP TRIGGER trg_2;
25502
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25503
f_int2 = CAST(f_char1 AS SIGNED INT),
25504
f_charbig = CONCAT('===',f_char1,'===');
25505
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25507
SET new.f_int1 = new.f_int1 + @max_row,
25508
new.f_int2 = new.f_int2 - @max_row,
25509
new.f_charbig = '####updated per update trigger####';
25512
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25513
f_charbig = '####updated per update statement itself####';
25515
# check trigger-10 success: 1
25516
DROP TRIGGER trg_2;
25517
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25518
f_int2 = CAST(f_char1 AS SIGNED INT),
25519
f_charbig = CONCAT('===',f_char1,'===');
25520
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25522
SET new.f_int1 = @my_max1 + @counter,
25523
new.f_int2 = @my_min2 - @counter,
25524
new.f_charbig = '####updated per insert trigger####';
25525
SET @counter = @counter + 1;
25528
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25529
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25530
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25531
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25532
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25534
DROP TRIGGER trg_3;
25536
# check trigger-11 success: 1
25538
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25539
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25540
AND f_charbig = '####updated per insert trigger####';
25541
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25543
SET new.f_int1 = @my_max1 + @counter,
25544
new.f_int2 = @my_min2 - @counter,
25545
new.f_charbig = '####updated per insert trigger####';
25546
SET @counter = @counter + 1;
25549
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25550
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25551
SELECT CAST(f_int1 AS CHAR),
25552
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25553
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25555
DROP TRIGGER trg_3;
25557
# check trigger-12 success: 1
25559
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25560
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25561
AND f_charbig = '####updated per insert trigger####';
25563
Table Op Msg_type Msg_text
25564
test.t1 analyze note The storage engine for the table doesn't support analyze
25565
CHECK TABLE t1 EXTENDED;
25566
Table Op Msg_type Msg_text
25567
test.t1 check note The storage engine for the table doesn't support check
25568
CHECKSUM TABLE t1 EXTENDED;
25570
test.t1 <some_value>
25572
Table Op Msg_type Msg_text
25573
test.t1 optimize note The storage engine for the table doesn't support optimize
25574
# check layout success: 1
25575
REPAIR TABLE t1 EXTENDED;
25576
Table Op Msg_type Msg_text
25577
test.t1 repair note The storage engine for the table doesn't support repair
25578
# check layout success: 1
25581
# check TRUNCATE success: 1
25582
# check layout success: 1
25583
# End usability test (inc/partition_check.inc)
25590
f_charbig VARCHAR(1000)
25591
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
25593
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
25594
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25595
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25596
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25597
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
25598
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25599
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25600
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25601
# Start usability test (inc/partition_check.inc)
25603
SHOW CREATE TABLE t1;
25605
t1 CREATE TABLE `t1` (
25606
`f_int1` int(11) NOT NULL DEFAULT '0',
25607
`f_int2` int(11) NOT NULL DEFAULT '0',
25608
`f_char1` char(20) DEFAULT NULL,
25609
`f_char2` char(20) DEFAULT NULL,
25610
`f_charbig` varchar(1000) DEFAULT NULL
25611
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
25613
# check prerequisites-1 success: 1
25614
# check COUNT(*) success: 1
25615
# check MIN/MAX(f_int1) success: 1
25616
# check MIN/MAX(f_int2) success: 1
25617
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25618
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25619
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25620
WHERE f_int1 IN (2,3);
25621
# check prerequisites-3 success: 1
25622
DELETE FROM t1 WHERE f_charbig = 'delete me';
25623
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25624
# check read via f_int1 success: 1
25625
# check read via f_int2 success: 1
25627
# check multiple-1 success: 1
25628
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25630
# check multiple-2 success: 1
25631
INSERT INTO t1 SELECT * FROM t0_template
25632
WHERE MOD(f_int1,3) = 0;
25634
# check multiple-3 success: 1
25635
UPDATE t1 SET f_int1 = f_int1 + @max_row
25636
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25637
AND @max_row_div2 + @max_row_div4;
25639
# check multiple-4 success: 1
25641
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25642
AND @max_row_div2 + @max_row_div4 + @max_row;
25644
# check multiple-5 success: 1
25645
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25647
SET f_int1 = @cur_value , f_int2 = @cur_value,
25648
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25649
f_charbig = '#SINGLE#';
25651
# check single-1 success: 1
25652
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25654
SET f_int1 = @cur_value , f_int2 = @cur_value,
25655
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25656
f_charbig = '#SINGLE#';
25658
# check single-2 success: 1
25659
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25660
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25661
UPDATE t1 SET f_int1 = @cur_value2
25662
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25664
# check single-3 success: 1
25665
SET @cur_value1= -1;
25666
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25667
UPDATE t1 SET f_int1 = @cur_value1
25668
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25670
# check single-4 success: 1
25671
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25672
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25674
# check single-5 success: 1
25675
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25677
# check single-6 success: 1
25678
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25680
# check single-7 success: 1
25681
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25682
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25683
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25684
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25685
f_charbig = '#NULL#';
25687
SET f_int1 = NULL , f_int2 = -@max_row,
25688
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25689
f_charbig = '#NULL#';
25690
ERROR 23000: Column 'f_int1' cannot be null
25691
# check null success: 1
25693
WHERE f_int1 = 0 AND f_int2 = 0
25694
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25695
AND f_charbig = '#NULL#';
25697
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25698
SELECT f_int1, f_int1, '', '', 'was inserted'
25699
FROM t0_template source_tab
25700
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25702
# check transactions-1 success: 1
25705
# check transactions-2 success: 1
25708
# check transactions-3 success: 1
25709
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25713
# check transactions-4 success: 1
25714
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25715
SELECT f_int1, f_int1, '', '', 'was inserted'
25716
FROM t0_template source_tab
25717
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25719
# check transactions-5 success: 1
25722
# check transactions-6 success: 1
25723
# INFO: Storage engine used for t1 seems to be transactional.
25726
# check transactions-7 success: 1
25727
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25729
SET @@session.sql_mode = 'traditional';
25730
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25731
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25732
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25733
'', '', 'was inserted' FROM t0_template
25734
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25735
ERROR 22012: Division by 0
25738
# check transactions-8 success: 1
25739
# INFO: Storage engine used for t1 seems to be able to revert
25740
# changes made by the failing statement.
25741
SET @@session.sql_mode = '';
25743
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25745
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25747
# check special-1 success: 1
25748
UPDATE t1 SET f_charbig = '';
25750
# check special-2 success: 1
25751
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25752
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25753
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25754
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25755
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25756
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25757
'just inserted' FROM t0_template
25758
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25759
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25761
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25762
f_charbig = 'updated by trigger'
25763
WHERE f_int1 = new.f_int1;
25765
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25766
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25767
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25769
# check trigger-1 success: 1
25770
DROP TRIGGER trg_1;
25771
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25772
f_int2 = CAST(f_char1 AS SIGNED INT),
25773
f_charbig = 'just inserted'
25774
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25776
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25777
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25778
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25779
'just inserted' FROM t0_template
25780
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25781
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25783
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25784
f_charbig = 'updated by trigger'
25785
WHERE f_int1 = new.f_int1;
25787
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25788
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25789
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25791
# check trigger-2 success: 1
25792
DROP TRIGGER trg_1;
25793
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25794
f_int2 = CAST(f_char1 AS SIGNED INT),
25795
f_charbig = 'just inserted'
25796
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25798
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25799
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25800
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25801
'just inserted' FROM t0_template
25802
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25803
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25805
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25806
f_charbig = 'updated by trigger'
25807
WHERE f_int1 = new.f_int1;
25809
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25810
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25812
# check trigger-3 success: 1
25813
DROP TRIGGER trg_1;
25814
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25815
f_int2 = CAST(f_char1 AS SIGNED INT),
25816
f_charbig = 'just inserted'
25817
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25819
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25820
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25821
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25822
'just inserted' FROM t0_template
25823
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25824
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25826
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25827
f_charbig = 'updated by trigger'
25828
WHERE f_int1 = - old.f_int1;
25830
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25831
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25833
# check trigger-4 success: 1
25834
DROP TRIGGER trg_1;
25835
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25836
f_int2 = CAST(f_char1 AS SIGNED INT),
25837
f_charbig = 'just inserted'
25838
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25840
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25841
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25842
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25843
'just inserted' FROM t0_template
25844
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25845
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25847
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25848
f_charbig = 'updated by trigger'
25849
WHERE f_int1 = new.f_int1;
25851
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25852
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25854
# check trigger-5 success: 1
25855
DROP TRIGGER trg_1;
25856
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25857
f_int2 = CAST(f_char1 AS SIGNED INT),
25858
f_charbig = 'just inserted'
25859
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25861
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25862
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25863
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25864
'just inserted' FROM t0_template
25865
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25866
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25868
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25869
f_charbig = 'updated by trigger'
25870
WHERE f_int1 = - old.f_int1;
25872
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25873
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25875
# check trigger-6 success: 1
25876
DROP TRIGGER trg_1;
25877
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25878
f_int2 = CAST(f_char1 AS SIGNED INT),
25879
f_charbig = 'just inserted'
25880
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25882
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25883
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25884
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25885
'just inserted' FROM t0_template
25886
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25887
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25889
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25890
f_charbig = 'updated by trigger'
25891
WHERE f_int1 = - old.f_int1;
25894
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25896
# check trigger-7 success: 1
25897
DROP TRIGGER trg_1;
25898
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25899
f_int2 = CAST(f_char1 AS SIGNED INT),
25900
f_charbig = 'just inserted'
25901
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25903
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25904
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25905
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25906
'just inserted' FROM t0_template
25907
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25908
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25910
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25911
f_charbig = 'updated by trigger'
25912
WHERE f_int1 = - old.f_int1;
25915
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25917
# check trigger-8 success: 1
25918
DROP TRIGGER trg_1;
25919
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25920
f_int2 = CAST(f_char1 AS SIGNED INT),
25921
f_charbig = 'just inserted'
25922
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25924
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25926
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25927
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25929
SET new.f_int1 = old.f_int1 + @max_row,
25930
new.f_int2 = old.f_int2 - @max_row,
25931
new.f_charbig = '####updated per update trigger####';
25934
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25935
f_charbig = '####updated per update statement itself####';
25937
# check trigger-9 success: 1
25938
DROP TRIGGER trg_2;
25939
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25940
f_int2 = CAST(f_char1 AS SIGNED INT),
25941
f_charbig = CONCAT('===',f_char1,'===');
25942
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25944
SET new.f_int1 = new.f_int1 + @max_row,
25945
new.f_int2 = new.f_int2 - @max_row,
25946
new.f_charbig = '####updated per update trigger####';
25949
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25950
f_charbig = '####updated per update statement itself####';
25952
# check trigger-10 success: 1
25953
DROP TRIGGER trg_2;
25954
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25955
f_int2 = CAST(f_char1 AS SIGNED INT),
25956
f_charbig = CONCAT('===',f_char1,'===');
25957
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25959
SET new.f_int1 = @my_max1 + @counter,
25960
new.f_int2 = @my_min2 - @counter,
25961
new.f_charbig = '####updated per insert trigger####';
25962
SET @counter = @counter + 1;
25965
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25966
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25967
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25968
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25969
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25971
DROP TRIGGER trg_3;
25973
# check trigger-11 success: 1
25975
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25976
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25977
AND f_charbig = '####updated per insert trigger####';
25978
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25980
SET new.f_int1 = @my_max1 + @counter,
25981
new.f_int2 = @my_min2 - @counter,
25982
new.f_charbig = '####updated per insert trigger####';
25983
SET @counter = @counter + 1;
25986
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25987
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25988
SELECT CAST(f_int1 AS CHAR),
25989
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25990
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25992
DROP TRIGGER trg_3;
25994
# check trigger-12 success: 1
25996
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25997
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25998
AND f_charbig = '####updated per insert trigger####';
26000
Table Op Msg_type Msg_text
26001
test.t1 analyze note The storage engine for the table doesn't support analyze
26002
CHECK TABLE t1 EXTENDED;
26003
Table Op Msg_type Msg_text
26004
test.t1 check note The storage engine for the table doesn't support check
26005
CHECKSUM TABLE t1 EXTENDED;
26007
test.t1 <some_value>
26009
Table Op Msg_type Msg_text
26010
test.t1 optimize note The storage engine for the table doesn't support optimize
26011
# check layout success: 1
26012
REPAIR TABLE t1 EXTENDED;
26013
Table Op Msg_type Msg_text
26014
test.t1 repair note The storage engine for the table doesn't support repair
26015
# check layout success: 1
26018
# check TRUNCATE success: 1
26019
# check layout success: 1
26020
# End usability test (inc/partition_check.inc)
26027
f_charbig VARCHAR(1000)
26028
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
26030
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
26031
(PARTITION part_3 VALUES IN (-3),
26032
PARTITION part_2 VALUES IN (-2),
26033
PARTITION part_1 VALUES IN (-1),
26034
PARTITION part_N VALUES IN (NULL),
26035
PARTITION part0 VALUES IN (0),
26036
PARTITION part1 VALUES IN (1),
26037
PARTITION part2 VALUES IN (2),
26038
PARTITION part3 VALUES IN (3));
26039
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26040
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26041
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26042
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
26043
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26044
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26045
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26046
# Start usability test (inc/partition_check.inc)
26048
SHOW CREATE TABLE t1;
26050
t1 CREATE TABLE `t1` (
26051
`f_int1` int(11) NOT NULL DEFAULT '0',
26052
`f_int2` int(11) NOT NULL DEFAULT '0',
26053
`f_char1` char(20) DEFAULT NULL,
26054
`f_char2` char(20) DEFAULT NULL,
26055
`f_charbig` varchar(1000) DEFAULT NULL
26056
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,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) */
26058
# check prerequisites-1 success: 1
26059
# check COUNT(*) success: 1
26060
# check MIN/MAX(f_int1) success: 1
26061
# check MIN/MAX(f_int2) success: 1
26062
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26063
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26064
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26065
WHERE f_int1 IN (2,3);
26066
# check prerequisites-3 success: 1
26067
DELETE FROM t1 WHERE f_charbig = 'delete me';
26068
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26069
# check read via f_int1 success: 1
26070
# check read via f_int2 success: 1
26072
# check multiple-1 success: 1
26073
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26075
# check multiple-2 success: 1
26076
INSERT INTO t1 SELECT * FROM t0_template
26077
WHERE MOD(f_int1,3) = 0;
26079
# check multiple-3 success: 1
26080
UPDATE t1 SET f_int1 = f_int1 + @max_row
26081
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26082
AND @max_row_div2 + @max_row_div4;
26084
# check multiple-4 success: 1
26086
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26087
AND @max_row_div2 + @max_row_div4 + @max_row;
26089
# check multiple-5 success: 1
26090
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26092
SET f_int1 = @cur_value , f_int2 = @cur_value,
26093
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26094
f_charbig = '#SINGLE#';
26096
# check single-1 success: 1
26097
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26099
SET f_int1 = @cur_value , f_int2 = @cur_value,
26100
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26101
f_charbig = '#SINGLE#';
26103
# check single-2 success: 1
26104
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26105
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26106
UPDATE t1 SET f_int1 = @cur_value2
26107
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26109
# check single-3 success: 1
26110
SET @cur_value1= -1;
26111
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26112
UPDATE t1 SET f_int1 = @cur_value1
26113
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26115
# check single-4 success: 1
26116
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26117
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26119
# check single-5 success: 1
26120
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26122
# check single-6 success: 1
26123
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26125
# check single-7 success: 1
26126
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
26127
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26128
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26129
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26130
f_charbig = '#NULL#';
26132
SET f_int1 = NULL , f_int2 = -@max_row,
26133
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26134
f_charbig = '#NULL#';
26135
ERROR 23000: Column 'f_int1' cannot be null
26136
# check null success: 1
26138
WHERE f_int1 = 0 AND f_int2 = 0
26139
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26140
AND f_charbig = '#NULL#';
26142
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26143
SELECT f_int1, f_int1, '', '', 'was inserted'
26144
FROM t0_template source_tab
26145
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26147
# check transactions-1 success: 1
26150
# check transactions-2 success: 1
26153
# check transactions-3 success: 1
26154
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26158
# check transactions-4 success: 1
26159
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26160
SELECT f_int1, f_int1, '', '', 'was inserted'
26161
FROM t0_template source_tab
26162
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26164
# check transactions-5 success: 1
26167
# check transactions-6 success: 1
26168
# INFO: Storage engine used for t1 seems to be transactional.
26171
# check transactions-7 success: 1
26172
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26174
SET @@session.sql_mode = 'traditional';
26175
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26176
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26177
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26178
'', '', 'was inserted' FROM t0_template
26179
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26180
ERROR 22012: Division by 0
26183
# check transactions-8 success: 1
26184
# INFO: Storage engine used for t1 seems to be able to revert
26185
# changes made by the failing statement.
26186
SET @@session.sql_mode = '';
26188
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26190
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26192
# check special-1 success: 1
26193
UPDATE t1 SET f_charbig = '';
26195
# check special-2 success: 1
26196
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26197
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26198
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26199
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26200
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26201
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26202
'just inserted' FROM t0_template
26203
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26204
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26206
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26207
f_charbig = 'updated by trigger'
26208
WHERE f_int1 = new.f_int1;
26210
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26211
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26214
# check trigger-1 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 AFTER INSERT 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 = new.f_int1;
26232
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26233
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26236
# check trigger-2 success: 1
26237
DROP TRIGGER trg_1;
26238
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26239
f_int2 = CAST(f_char1 AS SIGNED INT),
26240
f_charbig = 'just inserted'
26241
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26243
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26244
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26245
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26246
'just inserted' FROM t0_template
26247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26248
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26250
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26251
f_charbig = 'updated by trigger'
26252
WHERE f_int1 = new.f_int1;
26254
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26255
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26257
# check trigger-3 success: 1
26258
DROP TRIGGER trg_1;
26259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26260
f_int2 = CAST(f_char1 AS SIGNED INT),
26261
f_charbig = 'just inserted'
26262
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26264
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26265
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26266
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26267
'just inserted' FROM t0_template
26268
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26269
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26271
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26272
f_charbig = 'updated by trigger'
26273
WHERE f_int1 = - old.f_int1;
26275
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26276
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26278
# check trigger-4 success: 1
26279
DROP TRIGGER trg_1;
26280
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26281
f_int2 = CAST(f_char1 AS SIGNED INT),
26282
f_charbig = 'just inserted'
26283
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26285
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26286
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26287
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26288
'just inserted' FROM t0_template
26289
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26290
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26292
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26293
f_charbig = 'updated by trigger'
26294
WHERE f_int1 = new.f_int1;
26296
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26297
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26299
# check trigger-5 success: 1
26300
DROP TRIGGER trg_1;
26301
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26302
f_int2 = CAST(f_char1 AS SIGNED INT),
26303
f_charbig = 'just inserted'
26304
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26306
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26307
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26308
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26309
'just inserted' FROM t0_template
26310
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26311
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26313
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26314
f_charbig = 'updated by trigger'
26315
WHERE f_int1 = - old.f_int1;
26317
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26318
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26320
# check trigger-6 success: 1
26321
DROP TRIGGER trg_1;
26322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26323
f_int2 = CAST(f_char1 AS SIGNED INT),
26324
f_charbig = 'just inserted'
26325
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26327
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26328
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26329
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26330
'just inserted' FROM t0_template
26331
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26332
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26334
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26335
f_charbig = 'updated by trigger'
26336
WHERE f_int1 = - old.f_int1;
26339
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26341
# check trigger-7 success: 1
26342
DROP TRIGGER trg_1;
26343
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26344
f_int2 = CAST(f_char1 AS SIGNED INT),
26345
f_charbig = 'just inserted'
26346
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26348
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26349
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26350
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26351
'just inserted' FROM t0_template
26352
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26353
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26355
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26356
f_charbig = 'updated by trigger'
26357
WHERE f_int1 = - old.f_int1;
26360
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26362
# check trigger-8 success: 1
26363
DROP TRIGGER trg_1;
26364
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26365
f_int2 = CAST(f_char1 AS SIGNED INT),
26366
f_charbig = 'just inserted'
26367
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26369
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26371
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26372
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26374
SET new.f_int1 = old.f_int1 + @max_row,
26375
new.f_int2 = old.f_int2 - @max_row,
26376
new.f_charbig = '####updated per update trigger####';
26379
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26380
f_charbig = '####updated per update statement itself####';
26382
# check trigger-9 success: 1
26383
DROP TRIGGER trg_2;
26384
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26385
f_int2 = CAST(f_char1 AS SIGNED INT),
26386
f_charbig = CONCAT('===',f_char1,'===');
26387
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26389
SET new.f_int1 = new.f_int1 + @max_row,
26390
new.f_int2 = new.f_int2 - @max_row,
26391
new.f_charbig = '####updated per update trigger####';
26394
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26395
f_charbig = '####updated per update statement itself####';
26397
# check trigger-10 success: 1
26398
DROP TRIGGER trg_2;
26399
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26400
f_int2 = CAST(f_char1 AS SIGNED INT),
26401
f_charbig = CONCAT('===',f_char1,'===');
26402
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26404
SET new.f_int1 = @my_max1 + @counter,
26405
new.f_int2 = @my_min2 - @counter,
26406
new.f_charbig = '####updated per insert trigger####';
26407
SET @counter = @counter + 1;
26410
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26411
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26412
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26413
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26414
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26416
DROP TRIGGER trg_3;
26418
# check trigger-11 success: 1
26420
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26421
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26422
AND f_charbig = '####updated per insert trigger####';
26423
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26425
SET new.f_int1 = @my_max1 + @counter,
26426
new.f_int2 = @my_min2 - @counter,
26427
new.f_charbig = '####updated per insert trigger####';
26428
SET @counter = @counter + 1;
26431
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26432
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26433
SELECT CAST(f_int1 AS CHAR),
26434
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26435
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26437
DROP TRIGGER trg_3;
26439
# check trigger-12 success: 1
26441
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26442
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26443
AND f_charbig = '####updated per insert trigger####';
26445
Table Op Msg_type Msg_text
26446
test.t1 analyze note The storage engine for the table doesn't support analyze
26447
CHECK TABLE t1 EXTENDED;
26448
Table Op Msg_type Msg_text
26449
test.t1 check note The storage engine for the table doesn't support check
26450
CHECKSUM TABLE t1 EXTENDED;
26452
test.t1 <some_value>
26454
Table Op Msg_type Msg_text
26455
test.t1 optimize note The storage engine for the table doesn't support optimize
26456
# check layout success: 1
26457
REPAIR TABLE t1 EXTENDED;
26458
Table Op Msg_type Msg_text
26459
test.t1 repair note The storage engine for the table doesn't support repair
26460
# check layout success: 1
26463
# check TRUNCATE success: 1
26464
# check layout success: 1
26465
# End usability test (inc/partition_check.inc)
26472
f_charbig VARCHAR(1000)
26473
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
26475
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
26476
(PARTITION parta VALUES LESS THAN (0),
26477
PARTITION partb VALUES LESS THAN (5),
26478
PARTITION partc VALUES LESS THAN (10),
26479
PARTITION partd VALUES LESS THAN (10 + 5),
26480
PARTITION parte VALUES LESS THAN (20),
26481
PARTITION partf VALUES LESS THAN (2147483646));
26482
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26483
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26484
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26485
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
26486
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26487
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26488
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26489
# Start usability test (inc/partition_check.inc)
26491
SHOW CREATE TABLE t1;
26493
t1 CREATE TABLE `t1` (
26494
`f_int1` int(11) NOT NULL DEFAULT '0',
26495
`f_int2` int(11) NOT NULL DEFAULT '0',
26496
`f_char1` char(20) DEFAULT NULL,
26497
`f_char2` char(20) DEFAULT NULL,
26498
`f_charbig` varchar(1000) DEFAULT NULL
26499
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
26501
# check prerequisites-1 success: 1
26502
# check COUNT(*) success: 1
26503
# check MIN/MAX(f_int1) success: 1
26504
# check MIN/MAX(f_int2) success: 1
26505
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26506
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26507
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26508
WHERE f_int1 IN (2,3);
26509
# check prerequisites-3 success: 1
26510
DELETE FROM t1 WHERE f_charbig = 'delete me';
26511
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26512
# check read via f_int1 success: 1
26513
# check read via f_int2 success: 1
26515
# check multiple-1 success: 1
26516
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26518
# check multiple-2 success: 1
26519
INSERT INTO t1 SELECT * FROM t0_template
26520
WHERE MOD(f_int1,3) = 0;
26522
# check multiple-3 success: 1
26523
UPDATE t1 SET f_int1 = f_int1 + @max_row
26524
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26525
AND @max_row_div2 + @max_row_div4;
26527
# check multiple-4 success: 1
26529
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26530
AND @max_row_div2 + @max_row_div4 + @max_row;
26532
# check multiple-5 success: 1
26533
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26535
SET f_int1 = @cur_value , f_int2 = @cur_value,
26536
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26537
f_charbig = '#SINGLE#';
26539
# check single-1 success: 1
26540
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26542
SET f_int1 = @cur_value , f_int2 = @cur_value,
26543
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26544
f_charbig = '#SINGLE#';
26546
# check single-2 success: 1
26547
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26548
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26549
UPDATE t1 SET f_int1 = @cur_value2
26550
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26552
# check single-3 success: 1
26553
SET @cur_value1= -1;
26554
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26555
UPDATE t1 SET f_int1 = @cur_value1
26556
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26558
# check single-4 success: 1
26559
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26560
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26562
# check single-5 success: 1
26563
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26565
# check single-6 success: 1
26566
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26567
ERROR HY000: Table has no partition for value 2147483647
26568
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26569
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26570
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26571
f_charbig = '#NULL#';
26573
SET f_int1 = NULL , f_int2 = -@max_row,
26574
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26575
f_charbig = '#NULL#';
26576
ERROR 23000: Column 'f_int1' cannot be null
26577
# check null success: 1
26579
WHERE f_int1 = 0 AND f_int2 = 0
26580
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26581
AND f_charbig = '#NULL#';
26583
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26584
SELECT f_int1, f_int1, '', '', 'was inserted'
26585
FROM t0_template source_tab
26586
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26588
# check transactions-1 success: 1
26591
# check transactions-2 success: 1
26594
# check transactions-3 success: 1
26595
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26599
# check transactions-4 success: 1
26600
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26601
SELECT f_int1, f_int1, '', '', 'was inserted'
26602
FROM t0_template source_tab
26603
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26605
# check transactions-5 success: 1
26608
# check transactions-6 success: 1
26609
# INFO: Storage engine used for t1 seems to be transactional.
26612
# check transactions-7 success: 1
26613
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26615
SET @@session.sql_mode = 'traditional';
26616
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26617
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26618
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26619
'', '', 'was inserted' FROM t0_template
26620
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26621
ERROR 22012: Division by 0
26624
# check transactions-8 success: 1
26625
# INFO: Storage engine used for t1 seems to be able to revert
26626
# changes made by the failing statement.
26627
SET @@session.sql_mode = '';
26629
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26631
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26633
# check special-1 success: 1
26634
UPDATE t1 SET f_charbig = '';
26636
# check special-2 success: 1
26637
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26638
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26639
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26640
WHERE 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 BEFORE INSERT 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
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26652
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26653
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26655
# check trigger-1 success: 1
26656
DROP TRIGGER trg_1;
26657
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26658
f_int2 = CAST(f_char1 AS SIGNED INT),
26659
f_charbig = 'just inserted'
26660
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26662
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26663
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26664
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26665
'just inserted' FROM t0_template
26666
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26667
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26669
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26670
f_charbig = 'updated by trigger'
26671
WHERE f_int1 = new.f_int1;
26673
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26674
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26677
# check trigger-2 success: 1
26678
DROP TRIGGER trg_1;
26679
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26680
f_int2 = CAST(f_char1 AS SIGNED INT),
26681
f_charbig = 'just inserted'
26682
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26684
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26685
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26686
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26687
'just inserted' FROM t0_template
26688
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26689
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26691
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26692
f_charbig = 'updated by trigger'
26693
WHERE f_int1 = new.f_int1;
26695
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26696
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26698
# check trigger-3 success: 1
26699
DROP TRIGGER trg_1;
26700
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26701
f_int2 = CAST(f_char1 AS SIGNED INT),
26702
f_charbig = 'just inserted'
26703
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26705
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26706
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26707
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26708
'just inserted' FROM t0_template
26709
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26710
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26712
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26713
f_charbig = 'updated by trigger'
26714
WHERE f_int1 = - old.f_int1;
26716
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26717
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26719
# check trigger-4 success: 1
26720
DROP TRIGGER trg_1;
26721
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26722
f_int2 = CAST(f_char1 AS SIGNED INT),
26723
f_charbig = 'just inserted'
26724
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26726
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26727
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26728
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26729
'just inserted' FROM t0_template
26730
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26731
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26733
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26734
f_charbig = 'updated by trigger'
26735
WHERE f_int1 = new.f_int1;
26737
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26738
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26740
# check trigger-5 success: 1
26741
DROP TRIGGER trg_1;
26742
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26743
f_int2 = CAST(f_char1 AS SIGNED INT),
26744
f_charbig = 'just inserted'
26745
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26747
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26748
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26749
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26750
'just inserted' FROM t0_template
26751
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26752
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26754
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26755
f_charbig = 'updated by trigger'
26756
WHERE f_int1 = - old.f_int1;
26758
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26759
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26761
# check trigger-6 success: 1
26762
DROP TRIGGER trg_1;
26763
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26764
f_int2 = CAST(f_char1 AS SIGNED INT),
26765
f_charbig = 'just inserted'
26766
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26768
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26769
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26770
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26771
'just inserted' FROM t0_template
26772
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26773
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26775
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26776
f_charbig = 'updated by trigger'
26777
WHERE f_int1 = - old.f_int1;
26780
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26782
# check trigger-7 success: 1
26783
DROP TRIGGER trg_1;
26784
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26785
f_int2 = CAST(f_char1 AS SIGNED INT),
26786
f_charbig = 'just inserted'
26787
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26789
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26790
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26791
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26792
'just inserted' FROM t0_template
26793
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26794
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26796
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26797
f_charbig = 'updated by trigger'
26798
WHERE f_int1 = - old.f_int1;
26801
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26803
# check trigger-8 success: 1
26804
DROP TRIGGER trg_1;
26805
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26806
f_int2 = CAST(f_char1 AS SIGNED INT),
26807
f_charbig = 'just inserted'
26808
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26810
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26812
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26813
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26815
SET new.f_int1 = old.f_int1 + @max_row,
26816
new.f_int2 = old.f_int2 - @max_row,
26817
new.f_charbig = '####updated per update trigger####';
26820
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26821
f_charbig = '####updated per update statement itself####';
26823
# check trigger-9 success: 1
26824
DROP TRIGGER trg_2;
26825
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26826
f_int2 = CAST(f_char1 AS SIGNED INT),
26827
f_charbig = CONCAT('===',f_char1,'===');
26828
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26830
SET new.f_int1 = new.f_int1 + @max_row,
26831
new.f_int2 = new.f_int2 - @max_row,
26832
new.f_charbig = '####updated per update trigger####';
26835
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26836
f_charbig = '####updated per update statement itself####';
26838
# check trigger-10 success: 1
26839
DROP TRIGGER trg_2;
26840
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26841
f_int2 = CAST(f_char1 AS SIGNED INT),
26842
f_charbig = CONCAT('===',f_char1,'===');
26843
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26845
SET new.f_int1 = @my_max1 + @counter,
26846
new.f_int2 = @my_min2 - @counter,
26847
new.f_charbig = '####updated per insert trigger####';
26848
SET @counter = @counter + 1;
26851
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26852
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26853
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26854
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26855
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26857
DROP TRIGGER trg_3;
26859
# check trigger-11 success: 1
26861
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26862
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26863
AND f_charbig = '####updated per insert trigger####';
26864
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26866
SET new.f_int1 = @my_max1 + @counter,
26867
new.f_int2 = @my_min2 - @counter,
26868
new.f_charbig = '####updated per insert trigger####';
26869
SET @counter = @counter + 1;
26872
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26873
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26874
SELECT CAST(f_int1 AS CHAR),
26875
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26876
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26878
DROP TRIGGER trg_3;
26880
# check trigger-12 success: 1
26882
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26883
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26884
AND f_charbig = '####updated per insert trigger####';
26886
Table Op Msg_type Msg_text
26887
test.t1 analyze note The storage engine for the table doesn't support analyze
26888
CHECK TABLE t1 EXTENDED;
26889
Table Op Msg_type Msg_text
26890
test.t1 check note The storage engine for the table doesn't support check
26891
CHECKSUM TABLE t1 EXTENDED;
26893
test.t1 <some_value>
26895
Table Op Msg_type Msg_text
26896
test.t1 optimize note The storage engine for the table doesn't support optimize
26897
# check layout success: 1
26898
REPAIR TABLE t1 EXTENDED;
26899
Table Op Msg_type Msg_text
26900
test.t1 repair note The storage engine for the table doesn't support repair
26901
# check layout success: 1
26904
# check TRUNCATE success: 1
26905
# check layout success: 1
26906
# End usability test (inc/partition_check.inc)
26913
f_charbig VARCHAR(1000)
26914
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
26916
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
26917
(PARTITION parta VALUES LESS THAN (0),
26918
PARTITION partb VALUES LESS THAN (5),
26919
PARTITION partc VALUES LESS THAN (10),
26920
PARTITION partd VALUES LESS THAN (2147483646));
26921
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26922
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26923
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26924
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
26925
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26926
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26927
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26928
# Start usability test (inc/partition_check.inc)
26930
SHOW CREATE TABLE t1;
26932
t1 CREATE TABLE `t1` (
26933
`f_int1` int(11) NOT NULL DEFAULT '0',
26934
`f_int2` int(11) NOT NULL DEFAULT '0',
26935
`f_char1` char(20) DEFAULT NULL,
26936
`f_char2` char(20) DEFAULT NULL,
26937
`f_charbig` varchar(1000) DEFAULT NULL
26938
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
26940
# check prerequisites-1 success: 1
26941
# check COUNT(*) success: 1
26942
# check MIN/MAX(f_int1) success: 1
26943
# check MIN/MAX(f_int2) success: 1
26944
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26945
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26946
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26947
WHERE f_int1 IN (2,3);
26948
# check prerequisites-3 success: 1
26949
DELETE FROM t1 WHERE f_charbig = 'delete me';
26950
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26951
# check read via f_int1 success: 1
26952
# check read via f_int2 success: 1
26954
# check multiple-1 success: 1
26955
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26957
# check multiple-2 success: 1
26958
INSERT INTO t1 SELECT * FROM t0_template
26959
WHERE MOD(f_int1,3) = 0;
26961
# check multiple-3 success: 1
26962
UPDATE t1 SET f_int1 = f_int1 + @max_row
26963
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26964
AND @max_row_div2 + @max_row_div4;
26966
# check multiple-4 success: 1
26968
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26969
AND @max_row_div2 + @max_row_div4 + @max_row;
26971
# check multiple-5 success: 1
26972
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26974
SET f_int1 = @cur_value , f_int2 = @cur_value,
26975
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26976
f_charbig = '#SINGLE#';
26978
# check single-1 success: 1
26979
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26981
SET f_int1 = @cur_value , f_int2 = @cur_value,
26982
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26983
f_charbig = '#SINGLE#';
26985
# check single-2 success: 1
26986
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26987
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26988
UPDATE t1 SET f_int1 = @cur_value2
26989
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26991
# check single-3 success: 1
26992
SET @cur_value1= -1;
26993
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26994
UPDATE t1 SET f_int1 = @cur_value1
26995
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26997
# check single-4 success: 1
26998
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26999
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27001
# check single-5 success: 1
27002
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27004
# check single-6 success: 1
27005
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27006
ERROR HY000: Table has no partition for value 2147483647
27007
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27008
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27009
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27010
f_charbig = '#NULL#';
27012
SET f_int1 = NULL , f_int2 = -@max_row,
27013
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27014
f_charbig = '#NULL#';
27015
ERROR 23000: Column 'f_int1' cannot be null
27016
# check null success: 1
27018
WHERE f_int1 = 0 AND f_int2 = 0
27019
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27020
AND f_charbig = '#NULL#';
27022
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27023
SELECT f_int1, f_int1, '', '', 'was inserted'
27024
FROM t0_template source_tab
27025
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27027
# check transactions-1 success: 1
27030
# check transactions-2 success: 1
27033
# check transactions-3 success: 1
27034
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27038
# check transactions-4 success: 1
27039
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27040
SELECT f_int1, f_int1, '', '', 'was inserted'
27041
FROM t0_template source_tab
27042
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27044
# check transactions-5 success: 1
27047
# check transactions-6 success: 1
27048
# INFO: Storage engine used for t1 seems to be transactional.
27051
# check transactions-7 success: 1
27052
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27054
SET @@session.sql_mode = 'traditional';
27055
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27056
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27057
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27058
'', '', 'was inserted' FROM t0_template
27059
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27060
ERROR 22012: Division by 0
27063
# check transactions-8 success: 1
27064
# INFO: Storage engine used for t1 seems to be able to revert
27065
# changes made by the failing statement.
27066
SET @@session.sql_mode = '';
27068
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27070
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27072
# check special-1 success: 1
27073
UPDATE t1 SET f_charbig = '';
27075
# check special-2 success: 1
27076
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27077
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27078
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27079
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27080
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27081
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27082
'just inserted' FROM t0_template
27083
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27084
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27086
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27087
f_charbig = 'updated by trigger'
27088
WHERE f_int1 = new.f_int1;
27090
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27091
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27092
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27094
# check trigger-1 success: 1
27095
DROP TRIGGER trg_1;
27096
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27097
f_int2 = CAST(f_char1 AS SIGNED INT),
27098
f_charbig = 'just inserted'
27099
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27101
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27102
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27103
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27104
'just inserted' FROM t0_template
27105
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27106
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27108
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27109
f_charbig = 'updated by trigger'
27110
WHERE f_int1 = new.f_int1;
27112
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27113
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27114
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27116
# check trigger-2 success: 1
27117
DROP TRIGGER trg_1;
27118
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27119
f_int2 = CAST(f_char1 AS SIGNED INT),
27120
f_charbig = 'just inserted'
27121
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27123
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27124
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27125
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27126
'just inserted' FROM t0_template
27127
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27128
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27130
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27131
f_charbig = 'updated by trigger'
27132
WHERE f_int1 = new.f_int1;
27134
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27135
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27137
# check trigger-3 success: 1
27138
DROP TRIGGER trg_1;
27139
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27140
f_int2 = CAST(f_char1 AS SIGNED INT),
27141
f_charbig = 'just inserted'
27142
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27144
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27145
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27146
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27147
'just inserted' FROM t0_template
27148
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27149
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27151
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27152
f_charbig = 'updated by trigger'
27153
WHERE f_int1 = - old.f_int1;
27155
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27156
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27158
# check trigger-4 success: 1
27159
DROP TRIGGER trg_1;
27160
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27161
f_int2 = CAST(f_char1 AS SIGNED INT),
27162
f_charbig = 'just inserted'
27163
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27165
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27166
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27167
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27168
'just inserted' FROM t0_template
27169
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27170
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27172
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27173
f_charbig = 'updated by trigger'
27174
WHERE f_int1 = new.f_int1;
27176
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27177
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27179
# check trigger-5 success: 1
27180
DROP TRIGGER trg_1;
27181
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27182
f_int2 = CAST(f_char1 AS SIGNED INT),
27183
f_charbig = 'just inserted'
27184
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27186
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27187
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27188
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27189
'just inserted' FROM t0_template
27190
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27191
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27193
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27194
f_charbig = 'updated by trigger'
27195
WHERE f_int1 = - old.f_int1;
27197
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27198
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27200
# check trigger-6 success: 1
27201
DROP TRIGGER trg_1;
27202
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27203
f_int2 = CAST(f_char1 AS SIGNED INT),
27204
f_charbig = 'just inserted'
27205
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27207
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27208
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27209
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27210
'just inserted' FROM t0_template
27211
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27212
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27214
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27215
f_charbig = 'updated by trigger'
27216
WHERE f_int1 = - old.f_int1;
27219
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27221
# check trigger-7 success: 1
27222
DROP TRIGGER trg_1;
27223
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27224
f_int2 = CAST(f_char1 AS SIGNED INT),
27225
f_charbig = 'just inserted'
27226
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27228
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27229
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27230
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27231
'just inserted' FROM t0_template
27232
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27233
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27235
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27236
f_charbig = 'updated by trigger'
27237
WHERE f_int1 = - old.f_int1;
27240
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27242
# check trigger-8 success: 1
27243
DROP TRIGGER trg_1;
27244
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27245
f_int2 = CAST(f_char1 AS SIGNED INT),
27246
f_charbig = 'just inserted'
27247
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27249
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27251
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27252
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27254
SET new.f_int1 = old.f_int1 + @max_row,
27255
new.f_int2 = old.f_int2 - @max_row,
27256
new.f_charbig = '####updated per update trigger####';
27259
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27260
f_charbig = '####updated per update statement itself####';
27262
# check trigger-9 success: 1
27263
DROP TRIGGER trg_2;
27264
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27265
f_int2 = CAST(f_char1 AS SIGNED INT),
27266
f_charbig = CONCAT('===',f_char1,'===');
27267
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27269
SET new.f_int1 = new.f_int1 + @max_row,
27270
new.f_int2 = new.f_int2 - @max_row,
27271
new.f_charbig = '####updated per update trigger####';
27274
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27275
f_charbig = '####updated per update statement itself####';
27277
# check trigger-10 success: 1
27278
DROP TRIGGER trg_2;
27279
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27280
f_int2 = CAST(f_char1 AS SIGNED INT),
27281
f_charbig = CONCAT('===',f_char1,'===');
27282
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27284
SET new.f_int1 = @my_max1 + @counter,
27285
new.f_int2 = @my_min2 - @counter,
27286
new.f_charbig = '####updated per insert trigger####';
27287
SET @counter = @counter + 1;
27290
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27291
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27292
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27293
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27294
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27296
DROP TRIGGER trg_3;
27298
# check trigger-11 success: 1
27300
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27301
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27302
AND f_charbig = '####updated per insert trigger####';
27303
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27305
SET new.f_int1 = @my_max1 + @counter,
27306
new.f_int2 = @my_min2 - @counter,
27307
new.f_charbig = '####updated per insert trigger####';
27308
SET @counter = @counter + 1;
27311
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27312
INSERT INTO t1 (f_char1, f_char2, f_charbig)
27313
SELECT CAST(f_int1 AS CHAR),
27314
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27315
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27317
DROP TRIGGER trg_3;
27319
# check trigger-12 success: 1
27321
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27322
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27323
AND f_charbig = '####updated per insert trigger####';
27325
Table Op Msg_type Msg_text
27326
test.t1 analyze note The storage engine for the table doesn't support analyze
27327
CHECK TABLE t1 EXTENDED;
27328
Table Op Msg_type Msg_text
27329
test.t1 check note The storage engine for the table doesn't support check
27330
CHECKSUM TABLE t1 EXTENDED;
27332
test.t1 <some_value>
27334
Table Op Msg_type Msg_text
27335
test.t1 optimize note The storage engine for the table doesn't support optimize
27336
# check layout success: 1
27337
REPAIR TABLE t1 EXTENDED;
27338
Table Op Msg_type Msg_text
27339
test.t1 repair note The storage engine for the table doesn't support repair
27340
# check layout success: 1
27343
# check TRUNCATE success: 1
27344
# check layout success: 1
27345
# End usability test (inc/partition_check.inc)
27352
f_charbig VARCHAR(1000)
27353
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
27355
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
27356
(PARTITION part1 VALUES LESS THAN (0)
27357
(SUBPARTITION subpart11, SUBPARTITION subpart12),
27358
PARTITION part2 VALUES LESS THAN (5)
27359
(SUBPARTITION subpart21, SUBPARTITION subpart22),
27360
PARTITION part3 VALUES LESS THAN (10)
27361
(SUBPARTITION subpart31, SUBPARTITION subpart32),
27362
PARTITION part4 VALUES LESS THAN (2147483646)
27363
(SUBPARTITION subpart41, SUBPARTITION subpart42));
27364
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27365
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27366
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27367
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
27368
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27369
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27370
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27371
# Start usability test (inc/partition_check.inc)
27373
SHOW CREATE TABLE t1;
27375
t1 CREATE TABLE `t1` (
27376
`f_int1` int(11) NOT NULL DEFAULT '0',
27377
`f_int2` int(11) NOT NULL DEFAULT '0',
27378
`f_char1` char(20) DEFAULT NULL,
27379
`f_char2` char(20) DEFAULT NULL,
27380
`f_charbig` varchar(1000) DEFAULT NULL
27381
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
27383
# check prerequisites-1 success: 1
27384
# check COUNT(*) success: 1
27385
# check MIN/MAX(f_int1) success: 1
27386
# check MIN/MAX(f_int2) success: 1
27387
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27388
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27389
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27390
WHERE f_int1 IN (2,3);
27391
# check prerequisites-3 success: 1
27392
DELETE FROM t1 WHERE f_charbig = 'delete me';
27393
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
27394
# check read via f_int1 success: 1
27395
# check read via f_int2 success: 1
27397
# check multiple-1 success: 1
27398
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27400
# check multiple-2 success: 1
27401
INSERT INTO t1 SELECT * FROM t0_template
27402
WHERE MOD(f_int1,3) = 0;
27404
# check multiple-3 success: 1
27405
UPDATE t1 SET f_int1 = f_int1 + @max_row
27406
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27407
AND @max_row_div2 + @max_row_div4;
27409
# check multiple-4 success: 1
27411
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27412
AND @max_row_div2 + @max_row_div4 + @max_row;
27414
# check multiple-5 success: 1
27415
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27417
SET f_int1 = @cur_value , f_int2 = @cur_value,
27418
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27419
f_charbig = '#SINGLE#';
27421
# check single-1 success: 1
27422
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27424
SET f_int1 = @cur_value , f_int2 = @cur_value,
27425
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27426
f_charbig = '#SINGLE#';
27428
# check single-2 success: 1
27429
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27430
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27431
UPDATE t1 SET f_int1 = @cur_value2
27432
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27434
# check single-3 success: 1
27435
SET @cur_value1= -1;
27436
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27437
UPDATE t1 SET f_int1 = @cur_value1
27438
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27440
# check single-4 success: 1
27441
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27442
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27444
# check single-5 success: 1
27445
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27447
# check single-6 success: 1
27448
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27449
ERROR HY000: Table has no partition for value 2147483647
27450
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27451
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27452
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27453
f_charbig = '#NULL#';
27455
SET f_int1 = NULL , f_int2 = -@max_row,
27456
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27457
f_charbig = '#NULL#';
27458
ERROR 23000: Column 'f_int1' cannot be null
27459
# check null success: 1
27461
WHERE f_int1 = 0 AND f_int2 = 0
27462
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27463
AND f_charbig = '#NULL#';
27465
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27466
SELECT f_int1, f_int1, '', '', 'was inserted'
27467
FROM t0_template source_tab
27468
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27470
# check transactions-1 success: 1
27473
# check transactions-2 success: 1
27476
# check transactions-3 success: 1
27477
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27481
# check transactions-4 success: 1
27482
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27483
SELECT f_int1, f_int1, '', '', 'was inserted'
27484
FROM t0_template source_tab
27485
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27487
# check transactions-5 success: 1
27490
# check transactions-6 success: 1
27491
# INFO: Storage engine used for t1 seems to be transactional.
27494
# check transactions-7 success: 1
27495
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27497
SET @@session.sql_mode = 'traditional';
27498
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27499
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27500
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27501
'', '', 'was inserted' FROM t0_template
27502
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27503
ERROR 22012: Division by 0
27506
# check transactions-8 success: 1
27507
# INFO: Storage engine used for t1 seems to be able to revert
27508
# changes made by the failing statement.
27509
SET @@session.sql_mode = '';
27511
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27513
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27515
# check special-1 success: 1
27516
UPDATE t1 SET f_charbig = '';
27518
# check special-2 success: 1
27519
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27520
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27521
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27522
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27523
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27524
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27525
'just inserted' FROM t0_template
27526
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27527
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27529
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27530
f_charbig = 'updated by trigger'
27531
WHERE f_int1 = new.f_int1;
27533
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27534
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27535
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27537
# check trigger-1 success: 1
27538
DROP TRIGGER trg_1;
27539
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27540
f_int2 = CAST(f_char1 AS SIGNED INT),
27541
f_charbig = 'just inserted'
27542
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27544
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27545
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27546
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27547
'just inserted' FROM t0_template
27548
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27549
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27551
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27552
f_charbig = 'updated by trigger'
27553
WHERE f_int1 = new.f_int1;
27555
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27556
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27557
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27559
# check trigger-2 success: 1
27560
DROP TRIGGER trg_1;
27561
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27562
f_int2 = CAST(f_char1 AS SIGNED INT),
27563
f_charbig = 'just inserted'
27564
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27566
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27567
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27568
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27569
'just inserted' FROM t0_template
27570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27571
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27573
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27574
f_charbig = 'updated by trigger'
27575
WHERE f_int1 = new.f_int1;
27577
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27578
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27580
# check trigger-3 success: 1
27581
DROP TRIGGER trg_1;
27582
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27583
f_int2 = CAST(f_char1 AS SIGNED INT),
27584
f_charbig = 'just inserted'
27585
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27587
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27588
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27589
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27590
'just inserted' FROM t0_template
27591
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27592
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27594
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27595
f_charbig = 'updated by trigger'
27596
WHERE f_int1 = - old.f_int1;
27598
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27599
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27601
# check trigger-4 success: 1
27602
DROP TRIGGER trg_1;
27603
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27604
f_int2 = CAST(f_char1 AS SIGNED INT),
27605
f_charbig = 'just inserted'
27606
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27608
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27609
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27610
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27611
'just inserted' FROM t0_template
27612
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27613
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27615
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27616
f_charbig = 'updated by trigger'
27617
WHERE f_int1 = new.f_int1;
27619
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27620
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27622
# check trigger-5 success: 1
27623
DROP TRIGGER trg_1;
27624
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27625
f_int2 = CAST(f_char1 AS SIGNED INT),
27626
f_charbig = 'just inserted'
27627
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27629
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27630
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27631
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27632
'just inserted' FROM t0_template
27633
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27634
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27636
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27637
f_charbig = 'updated by trigger'
27638
WHERE f_int1 = - old.f_int1;
27640
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27641
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27643
# check trigger-6 success: 1
27644
DROP TRIGGER trg_1;
27645
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27646
f_int2 = CAST(f_char1 AS SIGNED INT),
27647
f_charbig = 'just inserted'
27648
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27650
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27651
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27652
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27653
'just inserted' FROM t0_template
27654
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27655
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27657
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27658
f_charbig = 'updated by trigger'
27659
WHERE f_int1 = - old.f_int1;
27662
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27664
# check trigger-7 success: 1
27665
DROP TRIGGER trg_1;
27666
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27667
f_int2 = CAST(f_char1 AS SIGNED INT),
27668
f_charbig = 'just inserted'
27669
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27671
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27672
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27673
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27674
'just inserted' FROM t0_template
27675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27676
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27678
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27679
f_charbig = 'updated by trigger'
27680
WHERE f_int1 = - old.f_int1;
27683
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27685
# check trigger-8 success: 1
27686
DROP TRIGGER trg_1;
27687
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27688
f_int2 = CAST(f_char1 AS SIGNED INT),
27689
f_charbig = 'just inserted'
27690
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27692
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27695
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27697
SET new.f_int1 = old.f_int1 + @max_row,
27698
new.f_int2 = old.f_int2 - @max_row,
27699
new.f_charbig = '####updated per update trigger####';
27702
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27703
f_charbig = '####updated per update statement itself####';
27705
# check trigger-9 success: 1
27706
DROP TRIGGER trg_2;
27707
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27708
f_int2 = CAST(f_char1 AS SIGNED INT),
27709
f_charbig = CONCAT('===',f_char1,'===');
27710
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27712
SET new.f_int1 = new.f_int1 + @max_row,
27713
new.f_int2 = new.f_int2 - @max_row,
27714
new.f_charbig = '####updated per update trigger####';
27717
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27718
f_charbig = '####updated per update statement itself####';
27720
# check trigger-10 success: 1
27721
DROP TRIGGER trg_2;
27722
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27723
f_int2 = CAST(f_char1 AS SIGNED INT),
27724
f_charbig = CONCAT('===',f_char1,'===');
27725
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27727
SET new.f_int1 = @my_max1 + @counter,
27728
new.f_int2 = @my_min2 - @counter,
27729
new.f_charbig = '####updated per insert trigger####';
27730
SET @counter = @counter + 1;
27733
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27734
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27735
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27736
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27737
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27739
DROP TRIGGER trg_3;
27741
# check trigger-11 success: 1
27743
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27744
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27745
AND f_charbig = '####updated per insert trigger####';
27746
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27748
SET new.f_int1 = @my_max1 + @counter,
27749
new.f_int2 = @my_min2 - @counter,
27750
new.f_charbig = '####updated per insert trigger####';
27751
SET @counter = @counter + 1;
27754
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27755
INSERT INTO t1 (f_char1, f_char2, f_charbig)
27756
SELECT CAST(f_int1 AS CHAR),
27757
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27758
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27760
DROP TRIGGER trg_3;
27762
# check trigger-12 success: 1
27764
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27765
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27766
AND f_charbig = '####updated per insert trigger####';
27768
Table Op Msg_type Msg_text
27769
test.t1 analyze note The storage engine for the table doesn't support analyze
27770
CHECK TABLE t1 EXTENDED;
27771
Table Op Msg_type Msg_text
27772
test.t1 check note The storage engine for the table doesn't support check
27773
CHECKSUM TABLE t1 EXTENDED;
27775
test.t1 <some_value>
27777
Table Op Msg_type Msg_text
27778
test.t1 optimize note The storage engine for the table doesn't support optimize
27779
# check layout success: 1
27780
REPAIR TABLE t1 EXTENDED;
27781
Table Op Msg_type Msg_text
27782
test.t1 repair note The storage engine for the table doesn't support repair
27783
# check layout success: 1
27786
# check TRUNCATE success: 1
27787
# check layout success: 1
27788
# End usability test (inc/partition_check.inc)
27795
f_charbig VARCHAR(1000)
27796
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
27798
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
27799
(PARTITION part1 VALUES IN (0)
27800
(SUBPARTITION sp11, SUBPARTITION sp12),
27801
PARTITION part2 VALUES IN (1)
27802
(SUBPARTITION sp21, SUBPARTITION sp22),
27803
PARTITION part3 VALUES IN (2)
27804
(SUBPARTITION sp31, SUBPARTITION sp32),
27805
PARTITION part4 VALUES IN (NULL)
27806
(SUBPARTITION sp41, SUBPARTITION sp42));
27807
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27808
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27809
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27810
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
27811
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27812
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27813
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27814
# Start usability test (inc/partition_check.inc)
27816
SHOW CREATE TABLE t1;
27818
t1 CREATE TABLE `t1` (
27819
`f_int1` int(11) NOT NULL DEFAULT '0',
27820
`f_int2` int(11) NOT NULL DEFAULT '0',
27821
`f_char1` char(20) DEFAULT NULL,
27822
`f_char2` char(20) DEFAULT NULL,
27823
`f_charbig` varchar(1000) DEFAULT NULL
27824
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
27826
# check prerequisites-1 success: 1
27827
# check COUNT(*) success: 1
27828
# check MIN/MAX(f_int1) success: 1
27829
# check MIN/MAX(f_int2) success: 1
27830
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27831
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27832
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27833
WHERE f_int1 IN (2,3);
27834
# check prerequisites-3 success: 1
27835
DELETE FROM t1 WHERE f_charbig = 'delete me';
27836
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
27837
# check read via f_int1 success: 1
27838
# check read via f_int2 success: 1
27840
# check multiple-1 success: 1
27841
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27843
# check multiple-2 success: 1
27844
INSERT INTO t1 SELECT * FROM t0_template
27845
WHERE MOD(f_int1,3) = 0;
27847
# check multiple-3 success: 1
27848
UPDATE t1 SET f_int1 = f_int1 + @max_row
27849
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27850
AND @max_row_div2 + @max_row_div4;
27852
# check multiple-4 success: 1
27854
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27855
AND @max_row_div2 + @max_row_div4 + @max_row;
27857
# check multiple-5 success: 1
27858
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27860
SET f_int1 = @cur_value , f_int2 = @cur_value,
27861
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27862
f_charbig = '#SINGLE#';
27864
# check single-1 success: 1
27865
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27867
SET f_int1 = @cur_value , f_int2 = @cur_value,
27868
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27869
f_charbig = '#SINGLE#';
27871
# check single-2 success: 1
27872
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27873
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27874
UPDATE t1 SET f_int1 = @cur_value2
27875
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27877
# check single-3 success: 1
27878
SET @cur_value1= -1;
27879
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27880
UPDATE t1 SET f_int1 = @cur_value1
27881
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27883
# check single-4 success: 1
27884
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27885
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27887
# check single-5 success: 1
27888
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27890
# check single-6 success: 1
27891
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27893
# check single-7 success: 1
27894
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
27895
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27896
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27897
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27898
f_charbig = '#NULL#';
27900
SET f_int1 = NULL , f_int2 = -@max_row,
27901
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27902
f_charbig = '#NULL#';
27903
ERROR 23000: Column 'f_int1' cannot be null
27904
# check null success: 1
27906
WHERE f_int1 = 0 AND f_int2 = 0
27907
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27908
AND f_charbig = '#NULL#';
27910
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27911
SELECT f_int1, f_int1, '', '', 'was inserted'
27912
FROM t0_template source_tab
27913
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27915
# check transactions-1 success: 1
27918
# check transactions-2 success: 1
27921
# check transactions-3 success: 1
27922
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27926
# check transactions-4 success: 1
27927
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27928
SELECT f_int1, f_int1, '', '', 'was inserted'
27929
FROM t0_template source_tab
27930
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27932
# check transactions-5 success: 1
27935
# check transactions-6 success: 1
27936
# INFO: Storage engine used for t1 seems to be transactional.
27939
# check transactions-7 success: 1
27940
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27942
SET @@session.sql_mode = 'traditional';
27943
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27944
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27945
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27946
'', '', 'was inserted' FROM t0_template
27947
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27948
ERROR 22012: Division by 0
27951
# check transactions-8 success: 1
27952
# INFO: Storage engine used for t1 seems to be able to revert
27953
# changes made by the failing statement.
27954
SET @@session.sql_mode = '';
27956
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27958
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27960
# check special-1 success: 1
27961
UPDATE t1 SET f_charbig = '';
27963
# check special-2 success: 1
27964
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27965
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27966
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27967
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27968
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27969
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27970
'just inserted' FROM t0_template
27971
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27972
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27974
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27975
f_charbig = 'updated by trigger'
27976
WHERE f_int1 = new.f_int1;
27978
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27979
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27980
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27982
# check trigger-1 success: 1
27983
DROP TRIGGER trg_1;
27984
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27985
f_int2 = CAST(f_char1 AS SIGNED INT),
27986
f_charbig = 'just inserted'
27987
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27989
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27990
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27991
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27992
'just inserted' FROM t0_template
27993
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27994
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27996
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27997
f_charbig = 'updated by trigger'
27998
WHERE f_int1 = new.f_int1;
28000
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28001
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28002
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28004
# check trigger-2 success: 1
28005
DROP TRIGGER trg_1;
28006
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28007
f_int2 = CAST(f_char1 AS SIGNED INT),
28008
f_charbig = 'just inserted'
28009
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28011
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28012
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28013
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28014
'just inserted' FROM t0_template
28015
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28016
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28018
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28019
f_charbig = 'updated by trigger'
28020
WHERE f_int1 = new.f_int1;
28022
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28023
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28025
# check trigger-3 success: 1
28026
DROP TRIGGER trg_1;
28027
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28028
f_int2 = CAST(f_char1 AS SIGNED INT),
28029
f_charbig = 'just inserted'
28030
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28032
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28033
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28034
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28035
'just inserted' FROM t0_template
28036
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28037
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28039
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28040
f_charbig = 'updated by trigger'
28041
WHERE f_int1 = - old.f_int1;
28043
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28044
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28046
# check trigger-4 success: 1
28047
DROP TRIGGER trg_1;
28048
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28049
f_int2 = CAST(f_char1 AS SIGNED INT),
28050
f_charbig = 'just inserted'
28051
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28053
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28054
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28055
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28056
'just inserted' FROM t0_template
28057
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28058
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28060
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28061
f_charbig = 'updated by trigger'
28062
WHERE f_int1 = new.f_int1;
28064
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28065
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28067
# check trigger-5 success: 1
28068
DROP TRIGGER trg_1;
28069
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28070
f_int2 = CAST(f_char1 AS SIGNED INT),
28071
f_charbig = 'just inserted'
28072
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28074
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28075
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28076
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28077
'just inserted' FROM t0_template
28078
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28079
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28081
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28082
f_charbig = 'updated by trigger'
28083
WHERE f_int1 = - old.f_int1;
28085
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28086
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28088
# check trigger-6 success: 1
28089
DROP TRIGGER trg_1;
28090
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28091
f_int2 = CAST(f_char1 AS SIGNED INT),
28092
f_charbig = 'just inserted'
28093
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28095
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28096
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28097
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28098
'just inserted' FROM t0_template
28099
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28100
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28102
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28103
f_charbig = 'updated by trigger'
28104
WHERE f_int1 = - old.f_int1;
28107
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28109
# check trigger-7 success: 1
28110
DROP TRIGGER trg_1;
28111
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28112
f_int2 = CAST(f_char1 AS SIGNED INT),
28113
f_charbig = 'just inserted'
28114
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28116
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28117
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28118
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28119
'just inserted' FROM t0_template
28120
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28121
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28123
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28124
f_charbig = 'updated by trigger'
28125
WHERE f_int1 = - old.f_int1;
28128
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28130
# check trigger-8 success: 1
28131
DROP TRIGGER trg_1;
28132
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28133
f_int2 = CAST(f_char1 AS SIGNED INT),
28134
f_charbig = 'just inserted'
28135
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28137
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28139
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28140
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28142
SET new.f_int1 = old.f_int1 + @max_row,
28143
new.f_int2 = old.f_int2 - @max_row,
28144
new.f_charbig = '####updated per update trigger####';
28147
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28148
f_charbig = '####updated per update statement itself####';
28150
# check trigger-9 success: 1
28151
DROP TRIGGER trg_2;
28152
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28153
f_int2 = CAST(f_char1 AS SIGNED INT),
28154
f_charbig = CONCAT('===',f_char1,'===');
28155
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28157
SET new.f_int1 = new.f_int1 + @max_row,
28158
new.f_int2 = new.f_int2 - @max_row,
28159
new.f_charbig = '####updated per update trigger####';
28162
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28163
f_charbig = '####updated per update statement itself####';
28165
# check trigger-10 success: 1
28166
DROP TRIGGER trg_2;
28167
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28168
f_int2 = CAST(f_char1 AS SIGNED INT),
28169
f_charbig = CONCAT('===',f_char1,'===');
28170
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28172
SET new.f_int1 = @my_max1 + @counter,
28173
new.f_int2 = @my_min2 - @counter,
28174
new.f_charbig = '####updated per insert trigger####';
28175
SET @counter = @counter + 1;
28178
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28179
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28180
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28181
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28182
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28184
DROP TRIGGER trg_3;
28186
# check trigger-11 success: 1
28188
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28189
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28190
AND f_charbig = '####updated per insert trigger####';
28191
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28193
SET new.f_int1 = @my_max1 + @counter,
28194
new.f_int2 = @my_min2 - @counter,
28195
new.f_charbig = '####updated per insert trigger####';
28196
SET @counter = @counter + 1;
28199
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28200
INSERT INTO t1 (f_char1, f_char2, f_charbig)
28201
SELECT CAST(f_int1 AS CHAR),
28202
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28203
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28205
DROP TRIGGER trg_3;
28207
# check trigger-12 success: 1
28209
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28210
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28211
AND f_charbig = '####updated per insert trigger####';
28213
Table Op Msg_type Msg_text
28214
test.t1 analyze note The storage engine for the table doesn't support analyze
28215
CHECK TABLE t1 EXTENDED;
28216
Table Op Msg_type Msg_text
28217
test.t1 check note The storage engine for the table doesn't support check
28218
CHECKSUM TABLE t1 EXTENDED;
28220
test.t1 <some_value>
28222
Table Op Msg_type Msg_text
28223
test.t1 optimize note The storage engine for the table doesn't support optimize
28224
# check layout success: 1
28225
REPAIR TABLE t1 EXTENDED;
28226
Table Op Msg_type Msg_text
28227
test.t1 repair note The storage engine for the table doesn't support repair
28228
# check layout success: 1
28231
# check TRUNCATE success: 1
28232
# check layout success: 1
28233
# End usability test (inc/partition_check.inc)
28240
f_charbig VARCHAR(1000)
28241
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
28243
PARTITION BY LIST(ABS(MOD(f_int1,2)))
28244
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
28245
(PARTITION part1 VALUES IN (0),
28246
PARTITION part2 VALUES IN (1),
28247
PARTITION part3 VALUES IN (NULL));
28248
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28249
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28250
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28251
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
28252
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28253
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28254
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28255
# Start usability test (inc/partition_check.inc)
28257
SHOW CREATE TABLE t1;
28259
t1 CREATE TABLE `t1` (
28260
`f_int1` int(11) NOT NULL DEFAULT '0',
28261
`f_int2` int(11) NOT NULL DEFAULT '0',
28262
`f_char1` char(20) DEFAULT NULL,
28263
`f_char2` char(20) DEFAULT NULL,
28264
`f_charbig` varchar(1000) DEFAULT NULL
28265
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
28267
# check prerequisites-1 success: 1
28268
# check COUNT(*) success: 1
28269
# check MIN/MAX(f_int1) success: 1
28270
# check MIN/MAX(f_int2) success: 1
28271
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28272
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28273
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28274
WHERE f_int1 IN (2,3);
28275
# check prerequisites-3 success: 1
28276
DELETE FROM t1 WHERE f_charbig = 'delete me';
28277
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
28278
# check read via f_int1 success: 1
28279
# check read via f_int2 success: 1
28281
# check multiple-1 success: 1
28282
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28284
# check multiple-2 success: 1
28285
INSERT INTO t1 SELECT * FROM t0_template
28286
WHERE MOD(f_int1,3) = 0;
28288
# check multiple-3 success: 1
28289
UPDATE t1 SET f_int1 = f_int1 + @max_row
28290
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28291
AND @max_row_div2 + @max_row_div4;
28293
# check multiple-4 success: 1
28295
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28296
AND @max_row_div2 + @max_row_div4 + @max_row;
28298
# check multiple-5 success: 1
28299
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28301
SET f_int1 = @cur_value , f_int2 = @cur_value,
28302
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28303
f_charbig = '#SINGLE#';
28305
# check single-1 success: 1
28306
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28308
SET f_int1 = @cur_value , f_int2 = @cur_value,
28309
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28310
f_charbig = '#SINGLE#';
28312
# check single-2 success: 1
28313
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28314
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28315
UPDATE t1 SET f_int1 = @cur_value2
28316
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28318
# check single-3 success: 1
28319
SET @cur_value1= -1;
28320
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28321
UPDATE t1 SET f_int1 = @cur_value1
28322
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28324
# check single-4 success: 1
28325
SELECT MAX(f_int1) INTO @cur_value FROM t1;
28326
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28328
# check single-5 success: 1
28329
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28331
# check single-6 success: 1
28332
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28334
# check single-7 success: 1
28335
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28336
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28337
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28338
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28339
f_charbig = '#NULL#';
28341
SET f_int1 = NULL , f_int2 = -@max_row,
28342
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28343
f_charbig = '#NULL#';
28344
ERROR 23000: Column 'f_int1' cannot be null
28345
# check null success: 1
28347
WHERE f_int1 = 0 AND f_int2 = 0
28348
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28349
AND f_charbig = '#NULL#';
28351
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28352
SELECT f_int1, f_int1, '', '', 'was inserted'
28353
FROM t0_template source_tab
28354
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28356
# check transactions-1 success: 1
28359
# check transactions-2 success: 1
28362
# check transactions-3 success: 1
28363
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28367
# check transactions-4 success: 1
28368
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28369
SELECT f_int1, f_int1, '', '', 'was inserted'
28370
FROM t0_template source_tab
28371
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28373
# check transactions-5 success: 1
28376
# check transactions-6 success: 1
28377
# INFO: Storage engine used for t1 seems to be transactional.
28380
# check transactions-7 success: 1
28381
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28383
SET @@session.sql_mode = 'traditional';
28384
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28385
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28386
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28387
'', '', 'was inserted' FROM t0_template
28388
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28389
ERROR 22012: Division by 0
28392
# check transactions-8 success: 1
28393
# INFO: Storage engine used for t1 seems to be able to revert
28394
# changes made by the failing statement.
28395
SET @@session.sql_mode = '';
28397
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28399
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28401
# check special-1 success: 1
28402
UPDATE t1 SET f_charbig = '';
28404
# check special-2 success: 1
28405
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28406
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28407
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28408
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28409
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28410
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28411
'just inserted' FROM t0_template
28412
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28413
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28415
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28416
f_charbig = 'updated by trigger'
28417
WHERE f_int1 = new.f_int1;
28419
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28420
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28421
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28423
# check trigger-1 success: 1
28424
DROP TRIGGER trg_1;
28425
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28426
f_int2 = CAST(f_char1 AS SIGNED INT),
28427
f_charbig = 'just inserted'
28428
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28430
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28431
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28432
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28433
'just inserted' FROM t0_template
28434
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28435
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28437
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28438
f_charbig = 'updated by trigger'
28439
WHERE f_int1 = new.f_int1;
28441
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28442
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28443
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28445
# check trigger-2 success: 1
28446
DROP TRIGGER trg_1;
28447
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28448
f_int2 = CAST(f_char1 AS SIGNED INT),
28449
f_charbig = 'just inserted'
28450
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28452
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28453
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28454
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28455
'just inserted' FROM t0_template
28456
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28457
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28459
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28460
f_charbig = 'updated by trigger'
28461
WHERE f_int1 = new.f_int1;
28463
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28464
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28466
# check trigger-3 success: 1
28467
DROP TRIGGER trg_1;
28468
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28469
f_int2 = CAST(f_char1 AS SIGNED INT),
28470
f_charbig = 'just inserted'
28471
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28473
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28474
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28475
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28476
'just inserted' FROM t0_template
28477
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28478
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28480
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28481
f_charbig = 'updated by trigger'
28482
WHERE f_int1 = - old.f_int1;
28484
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28485
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28487
# check trigger-4 success: 1
28488
DROP TRIGGER trg_1;
28489
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28490
f_int2 = CAST(f_char1 AS SIGNED INT),
28491
f_charbig = 'just inserted'
28492
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28494
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28495
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28496
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28497
'just inserted' FROM t0_template
28498
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28499
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28501
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28502
f_charbig = 'updated by trigger'
28503
WHERE f_int1 = new.f_int1;
28505
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28506
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28508
# check trigger-5 success: 1
28509
DROP TRIGGER trg_1;
28510
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28511
f_int2 = CAST(f_char1 AS SIGNED INT),
28512
f_charbig = 'just inserted'
28513
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28515
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28516
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28517
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28518
'just inserted' FROM t0_template
28519
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28520
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28522
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28523
f_charbig = 'updated by trigger'
28524
WHERE f_int1 = - old.f_int1;
28526
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28527
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28529
# check trigger-6 success: 1
28530
DROP TRIGGER trg_1;
28531
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28532
f_int2 = CAST(f_char1 AS SIGNED INT),
28533
f_charbig = 'just inserted'
28534
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28536
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28537
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28538
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28539
'just inserted' FROM t0_template
28540
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28541
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28543
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28544
f_charbig = 'updated by trigger'
28545
WHERE f_int1 = - old.f_int1;
28548
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28550
# check trigger-7 success: 1
28551
DROP TRIGGER trg_1;
28552
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28553
f_int2 = CAST(f_char1 AS SIGNED INT),
28554
f_charbig = 'just inserted'
28555
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28557
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28558
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28559
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28560
'just inserted' FROM t0_template
28561
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28562
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28564
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28565
f_charbig = 'updated by trigger'
28566
WHERE f_int1 = - old.f_int1;
28569
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28571
# check trigger-8 success: 1
28572
DROP TRIGGER trg_1;
28573
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28574
f_int2 = CAST(f_char1 AS SIGNED INT),
28575
f_charbig = 'just inserted'
28576
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28578
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28580
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28581
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28583
SET new.f_int1 = old.f_int1 + @max_row,
28584
new.f_int2 = old.f_int2 - @max_row,
28585
new.f_charbig = '####updated per update trigger####';
28588
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28589
f_charbig = '####updated per update statement itself####';
28591
# check trigger-9 success: 1
28592
DROP TRIGGER trg_2;
28593
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28594
f_int2 = CAST(f_char1 AS SIGNED INT),
28595
f_charbig = CONCAT('===',f_char1,'===');
28596
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28598
SET new.f_int1 = new.f_int1 + @max_row,
28599
new.f_int2 = new.f_int2 - @max_row,
28600
new.f_charbig = '####updated per update trigger####';
28603
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28604
f_charbig = '####updated per update statement itself####';
28606
# check trigger-10 success: 1
28607
DROP TRIGGER trg_2;
28608
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28609
f_int2 = CAST(f_char1 AS SIGNED INT),
28610
f_charbig = CONCAT('===',f_char1,'===');
28611
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28613
SET new.f_int1 = @my_max1 + @counter,
28614
new.f_int2 = @my_min2 - @counter,
28615
new.f_charbig = '####updated per insert trigger####';
28616
SET @counter = @counter + 1;
28619
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28620
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28621
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28622
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28623
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28625
DROP TRIGGER trg_3;
28627
# check trigger-11 success: 1
28629
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28630
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28631
AND f_charbig = '####updated per insert trigger####';
28632
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28634
SET new.f_int1 = @my_max1 + @counter,
28635
new.f_int2 = @my_min2 - @counter,
28636
new.f_charbig = '####updated per insert trigger####';
28637
SET @counter = @counter + 1;
28640
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28641
INSERT INTO t1 (f_char1, f_char2, f_charbig)
28642
SELECT CAST(f_int1 AS CHAR),
28643
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28644
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28646
DROP TRIGGER trg_3;
28648
# check trigger-12 success: 1
28650
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28651
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28652
AND f_charbig = '####updated per insert trigger####';
28654
Table Op Msg_type Msg_text
28655
test.t1 analyze note The storage engine for the table doesn't support analyze
28656
CHECK TABLE t1 EXTENDED;
28657
Table Op Msg_type Msg_text
28658
test.t1 check note The storage engine for the table doesn't support check
28659
CHECKSUM TABLE t1 EXTENDED;
28661
test.t1 <some_value>
28663
Table Op Msg_type Msg_text
28664
test.t1 optimize note The storage engine for the table doesn't support optimize
28665
# check layout success: 1
28666
REPAIR TABLE t1 EXTENDED;
28667
Table Op Msg_type Msg_text
28668
test.t1 repair note The storage engine for the table doesn't support repair
28669
# check layout success: 1
28672
# check TRUNCATE success: 1
28673
# check layout success: 1
28674
# End usability test (inc/partition_check.inc)
28676
DROP TABLE IF EXISTS t1;
28682
f_charbig VARCHAR(1000)
28683
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
28685
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
28686
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28687
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28688
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28689
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
28690
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28691
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28692
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28693
# Start usability test (inc/partition_check.inc)
28695
SHOW CREATE TABLE t1;
28697
t1 CREATE TABLE `t1` (
28698
`f_int1` int(11) NOT NULL DEFAULT '0',
28699
`f_int2` int(11) NOT NULL DEFAULT '0',
28700
`f_char1` char(20) DEFAULT NULL,
28701
`f_char2` char(20) DEFAULT NULL,
28702
`f_charbig` varchar(1000) DEFAULT NULL
28703
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
28705
# check prerequisites-1 success: 1
28706
# check COUNT(*) success: 1
28707
# check MIN/MAX(f_int1) success: 1
28708
# check MIN/MAX(f_int2) success: 1
28709
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28710
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28711
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28712
WHERE f_int1 IN (2,3);
28713
# check prerequisites-3 success: 1
28714
DELETE FROM t1 WHERE f_charbig = 'delete me';
28715
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
28716
# check read via f_int1 success: 1
28717
# check read via f_int2 success: 1
28719
# check multiple-1 success: 1
28720
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28722
# check multiple-2 success: 1
28723
INSERT INTO t1 SELECT * FROM t0_template
28724
WHERE MOD(f_int1,3) = 0;
28726
# check multiple-3 success: 1
28727
UPDATE t1 SET f_int1 = f_int1 + @max_row
28728
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28729
AND @max_row_div2 + @max_row_div4;
28731
# check multiple-4 success: 1
28733
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28734
AND @max_row_div2 + @max_row_div4 + @max_row;
28736
# check multiple-5 success: 1
28737
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28739
SET f_int1 = @cur_value , f_int2 = @cur_value,
28740
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28741
f_charbig = '#SINGLE#';
28743
# check single-1 success: 1
28744
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28746
SET f_int1 = @cur_value , f_int2 = @cur_value,
28747
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28748
f_charbig = '#SINGLE#';
28750
# check single-2 success: 1
28751
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28752
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28753
UPDATE t1 SET f_int1 = @cur_value2
28754
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28756
# check single-3 success: 1
28757
SET @cur_value1= -1;
28758
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28759
UPDATE t1 SET f_int1 = @cur_value1
28760
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28762
# check single-4 success: 1
28763
SELECT MAX(f_int1) INTO @cur_value FROM t1;
28764
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28766
# check single-5 success: 1
28767
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28769
# check single-6 success: 1
28770
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28772
# check single-7 success: 1
28773
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28774
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28775
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28776
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28777
f_charbig = '#NULL#';
28779
SET f_int1 = NULL , f_int2 = -@max_row,
28780
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28781
f_charbig = '#NULL#';
28782
ERROR 23000: Column 'f_int1' cannot be null
28783
# check null success: 1
28785
WHERE f_int1 = 0 AND f_int2 = 0
28786
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28787
AND f_charbig = '#NULL#';
28789
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28790
SELECT f_int1, f_int1, '', '', 'was inserted'
28791
FROM t0_template source_tab
28792
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28794
# check transactions-1 success: 1
28797
# check transactions-2 success: 1
28800
# check transactions-3 success: 1
28801
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28805
# check transactions-4 success: 1
28806
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28807
SELECT f_int1, f_int1, '', '', 'was inserted'
28808
FROM t0_template source_tab
28809
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28811
# check transactions-5 success: 1
28814
# check transactions-6 success: 1
28815
# INFO: Storage engine used for t1 seems to be transactional.
28818
# check transactions-7 success: 1
28819
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28821
SET @@session.sql_mode = 'traditional';
28822
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28823
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28824
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28825
'', '', 'was inserted' FROM t0_template
28826
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28827
ERROR 22012: Division by 0
28830
# check transactions-8 success: 1
28831
# INFO: Storage engine used for t1 seems to be able to revert
28832
# changes made by the failing statement.
28833
SET @@session.sql_mode = '';
28835
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28837
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28839
# check special-1 success: 1
28840
UPDATE t1 SET f_charbig = '';
28842
# check special-2 success: 1
28843
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28844
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28845
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28846
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28847
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28848
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28849
'just inserted' FROM t0_template
28850
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28851
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28853
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28854
f_charbig = 'updated by trigger'
28855
WHERE f_int1 = new.f_int1;
28857
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28858
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28859
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28861
# check trigger-1 success: 1
28862
DROP TRIGGER trg_1;
28863
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28864
f_int2 = CAST(f_char1 AS SIGNED INT),
28865
f_charbig = 'just inserted'
28866
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28868
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28869
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28870
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28871
'just inserted' FROM t0_template
28872
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28873
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28875
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28876
f_charbig = 'updated by trigger'
28877
WHERE f_int1 = new.f_int1;
28879
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28880
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28881
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28883
# check trigger-2 success: 1
28884
DROP TRIGGER trg_1;
28885
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28886
f_int2 = CAST(f_char1 AS SIGNED INT),
28887
f_charbig = 'just inserted'
28888
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28890
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28891
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28892
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28893
'just inserted' FROM t0_template
28894
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28895
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28897
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28898
f_charbig = 'updated by trigger'
28899
WHERE f_int1 = new.f_int1;
28901
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28902
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28904
# check trigger-3 success: 1
28905
DROP TRIGGER trg_1;
28906
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28907
f_int2 = CAST(f_char1 AS SIGNED INT),
28908
f_charbig = 'just inserted'
28909
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28911
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28912
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28913
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28914
'just inserted' FROM t0_template
28915
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28916
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28918
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28919
f_charbig = 'updated by trigger'
28920
WHERE f_int1 = - old.f_int1;
28922
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28923
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28925
# check trigger-4 success: 1
28926
DROP TRIGGER trg_1;
28927
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28928
f_int2 = CAST(f_char1 AS SIGNED INT),
28929
f_charbig = 'just inserted'
28930
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28932
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28933
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28934
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28935
'just inserted' FROM t0_template
28936
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28937
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28939
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28940
f_charbig = 'updated by trigger'
28941
WHERE f_int1 = new.f_int1;
28943
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28944
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28946
# check trigger-5 success: 1
28947
DROP TRIGGER trg_1;
28948
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28949
f_int2 = CAST(f_char1 AS SIGNED INT),
28950
f_charbig = 'just inserted'
28951
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28953
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28954
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28955
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28956
'just inserted' FROM t0_template
28957
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28958
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28960
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28961
f_charbig = 'updated by trigger'
28962
WHERE f_int1 = - old.f_int1;
28964
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28965
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28967
# check trigger-6 success: 1
28968
DROP TRIGGER trg_1;
28969
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28970
f_int2 = CAST(f_char1 AS SIGNED INT),
28971
f_charbig = 'just inserted'
28972
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28974
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28975
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28976
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28977
'just inserted' FROM t0_template
28978
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28979
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28981
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28982
f_charbig = 'updated by trigger'
28983
WHERE f_int1 = - old.f_int1;
28986
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28988
# check trigger-7 success: 1
28989
DROP TRIGGER trg_1;
28990
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28991
f_int2 = CAST(f_char1 AS SIGNED INT),
28992
f_charbig = 'just inserted'
28993
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28995
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28996
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28997
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28998
'just inserted' FROM t0_template
28999
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29000
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29002
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29003
f_charbig = 'updated by trigger'
29004
WHERE f_int1 = - old.f_int1;
29007
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29009
# check trigger-8 success: 1
29010
DROP TRIGGER trg_1;
29011
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29012
f_int2 = CAST(f_char1 AS SIGNED INT),
29013
f_charbig = 'just inserted'
29014
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29016
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29018
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29019
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29021
SET new.f_int1 = old.f_int1 + @max_row,
29022
new.f_int2 = old.f_int2 - @max_row,
29023
new.f_charbig = '####updated per update trigger####';
29026
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29027
f_charbig = '####updated per update statement itself####';
29029
# check trigger-9 success: 1
29030
DROP TRIGGER trg_2;
29031
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29032
f_int2 = CAST(f_char1 AS SIGNED INT),
29033
f_charbig = CONCAT('===',f_char1,'===');
29034
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29036
SET new.f_int1 = new.f_int1 + @max_row,
29037
new.f_int2 = new.f_int2 - @max_row,
29038
new.f_charbig = '####updated per update trigger####';
29041
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29042
f_charbig = '####updated per update statement itself####';
29044
# check trigger-10 success: 1
29045
DROP TRIGGER trg_2;
29046
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29047
f_int2 = CAST(f_char1 AS SIGNED INT),
29048
f_charbig = CONCAT('===',f_char1,'===');
29049
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29051
SET new.f_int1 = @my_max1 + @counter,
29052
new.f_int2 = @my_min2 - @counter,
29053
new.f_charbig = '####updated per insert trigger####';
29054
SET @counter = @counter + 1;
29057
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29058
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29059
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29060
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29061
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29063
DROP TRIGGER trg_3;
29065
# check trigger-11 success: 1
29067
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29068
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29069
AND f_charbig = '####updated per insert trigger####';
29070
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29072
SET new.f_int1 = @my_max1 + @counter,
29073
new.f_int2 = @my_min2 - @counter,
29074
new.f_charbig = '####updated per insert trigger####';
29075
SET @counter = @counter + 1;
29078
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29079
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29080
SELECT CAST(f_int1 AS CHAR),
29081
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29082
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29084
DROP TRIGGER trg_3;
29086
# check trigger-12 success: 1
29088
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29089
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29090
AND f_charbig = '####updated per insert trigger####';
29092
Table Op Msg_type Msg_text
29093
test.t1 analyze note The storage engine for the table doesn't support analyze
29094
CHECK TABLE t1 EXTENDED;
29095
Table Op Msg_type Msg_text
29096
test.t1 check note The storage engine for the table doesn't support check
29097
CHECKSUM TABLE t1 EXTENDED;
29099
test.t1 <some_value>
29101
Table Op Msg_type Msg_text
29102
test.t1 optimize note The storage engine for the table doesn't support optimize
29103
# check layout success: 1
29104
REPAIR TABLE t1 EXTENDED;
29105
Table Op Msg_type Msg_text
29106
test.t1 repair note The storage engine for the table doesn't support repair
29107
# check layout success: 1
29110
# check TRUNCATE success: 1
29111
# check layout success: 1
29112
# End usability test (inc/partition_check.inc)
29119
f_charbig VARCHAR(1000)
29120
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
29122
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
29123
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29124
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29125
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29126
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
29127
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29128
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29129
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29130
# Start usability test (inc/partition_check.inc)
29132
SHOW CREATE TABLE t1;
29134
t1 CREATE TABLE `t1` (
29135
`f_int1` int(11) NOT NULL DEFAULT '0',
29136
`f_int2` int(11) NOT NULL DEFAULT '0',
29137
`f_char1` char(20) DEFAULT NULL,
29138
`f_char2` char(20) DEFAULT NULL,
29139
`f_charbig` varchar(1000) DEFAULT NULL
29140
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
29142
# check prerequisites-1 success: 1
29143
# check COUNT(*) success: 1
29144
# check MIN/MAX(f_int1) success: 1
29145
# check MIN/MAX(f_int2) success: 1
29146
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29147
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29148
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29149
WHERE f_int1 IN (2,3);
29150
# check prerequisites-3 success: 1
29151
DELETE FROM t1 WHERE f_charbig = 'delete me';
29152
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
29153
# check read via f_int1 success: 1
29154
# check read via f_int2 success: 1
29156
# check multiple-1 success: 1
29157
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29159
# check multiple-2 success: 1
29160
INSERT INTO t1 SELECT * FROM t0_template
29161
WHERE MOD(f_int1,3) = 0;
29163
# check multiple-3 success: 1
29164
UPDATE t1 SET f_int1 = f_int1 + @max_row
29165
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29166
AND @max_row_div2 + @max_row_div4;
29168
# check multiple-4 success: 1
29170
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29171
AND @max_row_div2 + @max_row_div4 + @max_row;
29173
# check multiple-5 success: 1
29174
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29176
SET f_int1 = @cur_value , f_int2 = @cur_value,
29177
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29178
f_charbig = '#SINGLE#';
29180
# check single-1 success: 1
29181
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29183
SET f_int1 = @cur_value , f_int2 = @cur_value,
29184
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29185
f_charbig = '#SINGLE#';
29187
# check single-2 success: 1
29188
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29189
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29190
UPDATE t1 SET f_int1 = @cur_value2
29191
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29193
# check single-3 success: 1
29194
SET @cur_value1= -1;
29195
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29196
UPDATE t1 SET f_int1 = @cur_value1
29197
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29199
# check single-4 success: 1
29200
SELECT MAX(f_int1) INTO @cur_value FROM t1;
29201
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29203
# check single-5 success: 1
29204
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29206
# check single-6 success: 1
29207
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29209
# check single-7 success: 1
29210
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
29211
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29212
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29213
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29214
f_charbig = '#NULL#';
29216
SET f_int1 = NULL , f_int2 = -@max_row,
29217
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29218
f_charbig = '#NULL#';
29219
ERROR 23000: Column 'f_int1' cannot be null
29220
# check null success: 1
29222
WHERE f_int1 = 0 AND f_int2 = 0
29223
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29224
AND f_charbig = '#NULL#';
29226
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29227
SELECT f_int1, f_int1, '', '', 'was inserted'
29228
FROM t0_template source_tab
29229
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29231
# check transactions-1 success: 1
29234
# check transactions-2 success: 1
29237
# check transactions-3 success: 1
29238
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29242
# check transactions-4 success: 1
29243
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29244
SELECT f_int1, f_int1, '', '', 'was inserted'
29245
FROM t0_template source_tab
29246
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29248
# check transactions-5 success: 1
29251
# check transactions-6 success: 1
29252
# INFO: Storage engine used for t1 seems to be transactional.
29255
# check transactions-7 success: 1
29256
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29258
SET @@session.sql_mode = 'traditional';
29259
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29260
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29261
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29262
'', '', 'was inserted' FROM t0_template
29263
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29264
ERROR 22012: Division by 0
29267
# check transactions-8 success: 1
29268
# INFO: Storage engine used for t1 seems to be able to revert
29269
# changes made by the failing statement.
29270
SET @@session.sql_mode = '';
29272
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29274
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29276
# check special-1 success: 1
29277
UPDATE t1 SET f_charbig = '';
29279
# check special-2 success: 1
29280
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29281
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29282
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29283
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29284
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29285
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29286
'just inserted' FROM t0_template
29287
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29288
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29290
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29291
f_charbig = 'updated by trigger'
29292
WHERE f_int1 = new.f_int1;
29294
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29295
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29298
# check trigger-1 success: 1
29299
DROP TRIGGER trg_1;
29300
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29301
f_int2 = CAST(f_char1 AS SIGNED INT),
29302
f_charbig = 'just inserted'
29303
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29305
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29306
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29307
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29308
'just inserted' FROM t0_template
29309
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29310
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29312
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29313
f_charbig = 'updated by trigger'
29314
WHERE f_int1 = new.f_int1;
29316
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29317
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29320
# check trigger-2 success: 1
29321
DROP TRIGGER trg_1;
29322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29323
f_int2 = CAST(f_char1 AS SIGNED INT),
29324
f_charbig = 'just inserted'
29325
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29327
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29328
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29329
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29330
'just inserted' FROM t0_template
29331
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29332
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29334
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29335
f_charbig = 'updated by trigger'
29336
WHERE f_int1 = new.f_int1;
29338
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29339
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29341
# check trigger-3 success: 1
29342
DROP TRIGGER trg_1;
29343
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29344
f_int2 = CAST(f_char1 AS SIGNED INT),
29345
f_charbig = 'just inserted'
29346
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29348
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29349
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29350
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29351
'just inserted' FROM t0_template
29352
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29353
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29355
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29356
f_charbig = 'updated by trigger'
29357
WHERE f_int1 = - old.f_int1;
29359
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29360
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29362
# check trigger-4 success: 1
29363
DROP TRIGGER trg_1;
29364
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29365
f_int2 = CAST(f_char1 AS SIGNED INT),
29366
f_charbig = 'just inserted'
29367
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29369
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29370
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29371
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29372
'just inserted' FROM t0_template
29373
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29374
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29376
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29377
f_charbig = 'updated by trigger'
29378
WHERE f_int1 = new.f_int1;
29380
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29381
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29383
# check trigger-5 success: 1
29384
DROP TRIGGER trg_1;
29385
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29386
f_int2 = CAST(f_char1 AS SIGNED INT),
29387
f_charbig = 'just inserted'
29388
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29390
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29391
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29392
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29393
'just inserted' FROM t0_template
29394
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29395
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29397
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29398
f_charbig = 'updated by trigger'
29399
WHERE f_int1 = - old.f_int1;
29401
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29402
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29404
# check trigger-6 success: 1
29405
DROP TRIGGER trg_1;
29406
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29407
f_int2 = CAST(f_char1 AS SIGNED INT),
29408
f_charbig = 'just inserted'
29409
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29411
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29412
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29413
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29414
'just inserted' FROM t0_template
29415
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29416
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29418
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29419
f_charbig = 'updated by trigger'
29420
WHERE f_int1 = - old.f_int1;
29423
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29425
# check trigger-7 success: 1
29426
DROP TRIGGER trg_1;
29427
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29428
f_int2 = CAST(f_char1 AS SIGNED INT),
29429
f_charbig = 'just inserted'
29430
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29432
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29433
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29434
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29435
'just inserted' FROM t0_template
29436
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29437
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29439
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29440
f_charbig = 'updated by trigger'
29441
WHERE f_int1 = - old.f_int1;
29444
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29446
# check trigger-8 success: 1
29447
DROP TRIGGER trg_1;
29448
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29449
f_int2 = CAST(f_char1 AS SIGNED INT),
29450
f_charbig = 'just inserted'
29451
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29453
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29455
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29456
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29458
SET new.f_int1 = old.f_int1 + @max_row,
29459
new.f_int2 = old.f_int2 - @max_row,
29460
new.f_charbig = '####updated per update trigger####';
29463
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29464
f_charbig = '####updated per update statement itself####';
29466
# check trigger-9 success: 1
29467
DROP TRIGGER trg_2;
29468
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29469
f_int2 = CAST(f_char1 AS SIGNED INT),
29470
f_charbig = CONCAT('===',f_char1,'===');
29471
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29473
SET new.f_int1 = new.f_int1 + @max_row,
29474
new.f_int2 = new.f_int2 - @max_row,
29475
new.f_charbig = '####updated per update trigger####';
29478
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29479
f_charbig = '####updated per update statement itself####';
29481
# check trigger-10 success: 1
29482
DROP TRIGGER trg_2;
29483
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29484
f_int2 = CAST(f_char1 AS SIGNED INT),
29485
f_charbig = CONCAT('===',f_char1,'===');
29486
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29488
SET new.f_int1 = @my_max1 + @counter,
29489
new.f_int2 = @my_min2 - @counter,
29490
new.f_charbig = '####updated per insert trigger####';
29491
SET @counter = @counter + 1;
29494
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29495
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29496
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29497
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29498
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29500
DROP TRIGGER trg_3;
29502
# check trigger-11 success: 1
29504
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29505
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29506
AND f_charbig = '####updated per insert trigger####';
29507
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29509
SET new.f_int1 = @my_max1 + @counter,
29510
new.f_int2 = @my_min2 - @counter,
29511
new.f_charbig = '####updated per insert trigger####';
29512
SET @counter = @counter + 1;
29515
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29516
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29517
SELECT CAST(f_int1 AS CHAR),
29518
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29519
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29521
DROP TRIGGER trg_3;
29523
# check trigger-12 success: 1
29525
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29526
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29527
AND f_charbig = '####updated per insert trigger####';
29529
Table Op Msg_type Msg_text
29530
test.t1 analyze note The storage engine for the table doesn't support analyze
29531
CHECK TABLE t1 EXTENDED;
29532
Table Op Msg_type Msg_text
29533
test.t1 check note The storage engine for the table doesn't support check
29534
CHECKSUM TABLE t1 EXTENDED;
29536
test.t1 <some_value>
29538
Table Op Msg_type Msg_text
29539
test.t1 optimize note The storage engine for the table doesn't support optimize
29540
# check layout success: 1
29541
REPAIR TABLE t1 EXTENDED;
29542
Table Op Msg_type Msg_text
29543
test.t1 repair note The storage engine for the table doesn't support repair
29544
# check layout success: 1
29547
# check TRUNCATE success: 1
29548
# check layout success: 1
29549
# End usability test (inc/partition_check.inc)
29556
f_charbig VARCHAR(1000)
29557
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
29559
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
29560
(PARTITION part_3 VALUES IN (-3),
29561
PARTITION part_2 VALUES IN (-2),
29562
PARTITION part_1 VALUES IN (-1),
29563
PARTITION part_N VALUES IN (NULL),
29564
PARTITION part0 VALUES IN (0),
29565
PARTITION part1 VALUES IN (1),
29566
PARTITION part2 VALUES IN (2),
29567
PARTITION part3 VALUES IN (3));
29568
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29569
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29570
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29571
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
29572
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29573
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29574
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29575
# Start usability test (inc/partition_check.inc)
29577
SHOW CREATE TABLE t1;
29579
t1 CREATE TABLE `t1` (
29580
`f_int1` int(11) NOT NULL DEFAULT '0',
29581
`f_int2` int(11) NOT NULL DEFAULT '0',
29582
`f_char1` char(20) DEFAULT NULL,
29583
`f_char2` char(20) DEFAULT NULL,
29584
`f_charbig` varchar(1000) DEFAULT NULL
29585
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,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) */
29587
# check prerequisites-1 success: 1
29588
# check COUNT(*) success: 1
29589
# check MIN/MAX(f_int1) success: 1
29590
# check MIN/MAX(f_int2) success: 1
29591
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29592
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29593
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29594
WHERE f_int1 IN (2,3);
29595
# check prerequisites-3 success: 1
29596
DELETE FROM t1 WHERE f_charbig = 'delete me';
29597
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
29598
# check read via f_int1 success: 1
29599
# check read via f_int2 success: 1
29601
# check multiple-1 success: 1
29602
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29604
# check multiple-2 success: 1
29605
INSERT INTO t1 SELECT * FROM t0_template
29606
WHERE MOD(f_int1,3) = 0;
29608
# check multiple-3 success: 1
29609
UPDATE t1 SET f_int1 = f_int1 + @max_row
29610
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29611
AND @max_row_div2 + @max_row_div4;
29613
# check multiple-4 success: 1
29615
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29616
AND @max_row_div2 + @max_row_div4 + @max_row;
29618
# check multiple-5 success: 1
29619
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29621
SET f_int1 = @cur_value , f_int2 = @cur_value,
29622
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29623
f_charbig = '#SINGLE#';
29625
# check single-1 success: 1
29626
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29628
SET f_int1 = @cur_value , f_int2 = @cur_value,
29629
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29630
f_charbig = '#SINGLE#';
29632
# check single-2 success: 1
29633
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29634
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29635
UPDATE t1 SET f_int1 = @cur_value2
29636
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29638
# check single-3 success: 1
29639
SET @cur_value1= -1;
29640
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29641
UPDATE t1 SET f_int1 = @cur_value1
29642
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29644
# check single-4 success: 1
29645
SELECT MAX(f_int1) INTO @cur_value FROM t1;
29646
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29648
# check single-5 success: 1
29649
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29651
# check single-6 success: 1
29652
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29654
# check single-7 success: 1
29655
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
29656
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29657
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29658
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29659
f_charbig = '#NULL#';
29661
SET f_int1 = NULL , f_int2 = -@max_row,
29662
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29663
f_charbig = '#NULL#';
29664
ERROR 23000: Column 'f_int1' cannot be null
29665
# check null success: 1
29667
WHERE f_int1 = 0 AND f_int2 = 0
29668
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29669
AND f_charbig = '#NULL#';
29671
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29672
SELECT f_int1, f_int1, '', '', 'was inserted'
29673
FROM t0_template source_tab
29674
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29676
# check transactions-1 success: 1
29679
# check transactions-2 success: 1
29682
# check transactions-3 success: 1
29683
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29687
# check transactions-4 success: 1
29688
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29689
SELECT f_int1, f_int1, '', '', 'was inserted'
29690
FROM t0_template source_tab
29691
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29693
# check transactions-5 success: 1
29696
# check transactions-6 success: 1
29697
# INFO: Storage engine used for t1 seems to be transactional.
29700
# check transactions-7 success: 1
29701
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29703
SET @@session.sql_mode = 'traditional';
29704
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29705
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29706
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29707
'', '', 'was inserted' FROM t0_template
29708
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29709
ERROR 22012: Division by 0
29712
# check transactions-8 success: 1
29713
# INFO: Storage engine used for t1 seems to be able to revert
29714
# changes made by the failing statement.
29715
SET @@session.sql_mode = '';
29717
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29719
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29721
# check special-1 success: 1
29722
UPDATE t1 SET f_charbig = '';
29724
# check special-2 success: 1
29725
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29726
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29727
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29728
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29729
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29730
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29731
'just inserted' FROM t0_template
29732
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29733
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29735
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29736
f_charbig = 'updated by trigger'
29737
WHERE f_int1 = new.f_int1;
29739
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29740
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29741
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29743
# check trigger-1 success: 1
29744
DROP TRIGGER trg_1;
29745
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29746
f_int2 = CAST(f_char1 AS SIGNED INT),
29747
f_charbig = 'just inserted'
29748
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29750
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29751
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29752
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29753
'just inserted' FROM t0_template
29754
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29755
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29757
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29758
f_charbig = 'updated by trigger'
29759
WHERE f_int1 = new.f_int1;
29761
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29762
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29763
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29765
# check trigger-2 success: 1
29766
DROP TRIGGER trg_1;
29767
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29768
f_int2 = CAST(f_char1 AS SIGNED INT),
29769
f_charbig = 'just inserted'
29770
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29772
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29773
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29774
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29775
'just inserted' FROM t0_template
29776
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29777
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29779
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29780
f_charbig = 'updated by trigger'
29781
WHERE f_int1 = new.f_int1;
29783
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29784
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29786
# check trigger-3 success: 1
29787
DROP TRIGGER trg_1;
29788
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29789
f_int2 = CAST(f_char1 AS SIGNED INT),
29790
f_charbig = 'just inserted'
29791
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29793
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29794
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29795
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29796
'just inserted' FROM t0_template
29797
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29798
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29800
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29801
f_charbig = 'updated by trigger'
29802
WHERE f_int1 = - old.f_int1;
29804
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29805
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29807
# check trigger-4 success: 1
29808
DROP TRIGGER trg_1;
29809
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29810
f_int2 = CAST(f_char1 AS SIGNED INT),
29811
f_charbig = 'just inserted'
29812
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29814
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29815
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29816
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29817
'just inserted' FROM t0_template
29818
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29819
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29821
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29822
f_charbig = 'updated by trigger'
29823
WHERE f_int1 = new.f_int1;
29825
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29826
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29828
# check trigger-5 success: 1
29829
DROP TRIGGER trg_1;
29830
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29831
f_int2 = CAST(f_char1 AS SIGNED INT),
29832
f_charbig = 'just inserted'
29833
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29835
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29836
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29837
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29838
'just inserted' FROM t0_template
29839
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29840
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29842
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29843
f_charbig = 'updated by trigger'
29844
WHERE f_int1 = - old.f_int1;
29846
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29847
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29849
# check trigger-6 success: 1
29850
DROP TRIGGER trg_1;
29851
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29852
f_int2 = CAST(f_char1 AS SIGNED INT),
29853
f_charbig = 'just inserted'
29854
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29856
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29857
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29858
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29859
'just inserted' FROM t0_template
29860
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29861
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29863
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29864
f_charbig = 'updated by trigger'
29865
WHERE f_int1 = - old.f_int1;
29868
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29870
# check trigger-7 success: 1
29871
DROP TRIGGER trg_1;
29872
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29873
f_int2 = CAST(f_char1 AS SIGNED INT),
29874
f_charbig = 'just inserted'
29875
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29877
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29878
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29879
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29880
'just inserted' FROM t0_template
29881
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29882
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29884
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29885
f_charbig = 'updated by trigger'
29886
WHERE f_int1 = - old.f_int1;
29889
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29891
# check trigger-8 success: 1
29892
DROP TRIGGER trg_1;
29893
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29894
f_int2 = CAST(f_char1 AS SIGNED INT),
29895
f_charbig = 'just inserted'
29896
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29898
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29900
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29901
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29903
SET new.f_int1 = old.f_int1 + @max_row,
29904
new.f_int2 = old.f_int2 - @max_row,
29905
new.f_charbig = '####updated per update trigger####';
29908
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29909
f_charbig = '####updated per update statement itself####';
29911
# check trigger-9 success: 1
29912
DROP TRIGGER trg_2;
29913
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29914
f_int2 = CAST(f_char1 AS SIGNED INT),
29915
f_charbig = CONCAT('===',f_char1,'===');
29916
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29918
SET new.f_int1 = new.f_int1 + @max_row,
29919
new.f_int2 = new.f_int2 - @max_row,
29920
new.f_charbig = '####updated per update trigger####';
29923
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29924
f_charbig = '####updated per update statement itself####';
29926
# check trigger-10 success: 1
29927
DROP TRIGGER trg_2;
29928
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29929
f_int2 = CAST(f_char1 AS SIGNED INT),
29930
f_charbig = CONCAT('===',f_char1,'===');
29931
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29933
SET new.f_int1 = @my_max1 + @counter,
29934
new.f_int2 = @my_min2 - @counter,
29935
new.f_charbig = '####updated per insert trigger####';
29936
SET @counter = @counter + 1;
29939
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29940
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29941
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29942
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29943
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29945
DROP TRIGGER trg_3;
29947
# check trigger-11 success: 1
29949
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29950
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29951
AND f_charbig = '####updated per insert trigger####';
29952
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29954
SET new.f_int1 = @my_max1 + @counter,
29955
new.f_int2 = @my_min2 - @counter,
29956
new.f_charbig = '####updated per insert trigger####';
29957
SET @counter = @counter + 1;
29960
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29961
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29962
SELECT CAST(f_int1 AS CHAR),
29963
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29964
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29966
DROP TRIGGER trg_3;
29968
# check trigger-12 success: 1
29970
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29971
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29972
AND f_charbig = '####updated per insert trigger####';
29974
Table Op Msg_type Msg_text
29975
test.t1 analyze note The storage engine for the table doesn't support analyze
29976
CHECK TABLE t1 EXTENDED;
29977
Table Op Msg_type Msg_text
29978
test.t1 check note The storage engine for the table doesn't support check
29979
CHECKSUM TABLE t1 EXTENDED;
29981
test.t1 <some_value>
29983
Table Op Msg_type Msg_text
29984
test.t1 optimize note The storage engine for the table doesn't support optimize
29985
# check layout success: 1
29986
REPAIR TABLE t1 EXTENDED;
29987
Table Op Msg_type Msg_text
29988
test.t1 repair note The storage engine for the table doesn't support repair
29989
# check layout success: 1
29992
# check TRUNCATE success: 1
29993
# check layout success: 1
29994
# End usability test (inc/partition_check.inc)
30001
f_charbig VARCHAR(1000)
30002
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
30004
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
30005
(PARTITION parta VALUES LESS THAN (0),
30006
PARTITION partb VALUES LESS THAN (5),
30007
PARTITION partc VALUES LESS THAN (10),
30008
PARTITION partd VALUES LESS THAN (10 + 5),
30009
PARTITION parte VALUES LESS THAN (20),
30010
PARTITION partf VALUES LESS THAN (2147483646));
30011
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30012
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30013
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30014
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
30015
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30016
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30017
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30018
# Start usability test (inc/partition_check.inc)
30020
SHOW CREATE TABLE t1;
30022
t1 CREATE TABLE `t1` (
30023
`f_int1` int(11) NOT NULL DEFAULT '0',
30024
`f_int2` int(11) NOT NULL DEFAULT '0',
30025
`f_char1` char(20) DEFAULT NULL,
30026
`f_char2` char(20) DEFAULT NULL,
30027
`f_charbig` varchar(1000) DEFAULT NULL
30028
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
30030
# check prerequisites-1 success: 1
30031
# check COUNT(*) success: 1
30032
# check MIN/MAX(f_int1) success: 1
30033
# check MIN/MAX(f_int2) success: 1
30034
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30035
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30036
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30037
WHERE f_int1 IN (2,3);
30038
# check prerequisites-3 success: 1
30039
DELETE FROM t1 WHERE f_charbig = 'delete me';
30040
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
30041
# check read via f_int1 success: 1
30042
# check read via f_int2 success: 1
30044
# check multiple-1 success: 1
30045
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30047
# check multiple-2 success: 1
30048
INSERT INTO t1 SELECT * FROM t0_template
30049
WHERE MOD(f_int1,3) = 0;
30051
# check multiple-3 success: 1
30052
UPDATE t1 SET f_int1 = f_int1 + @max_row
30053
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30054
AND @max_row_div2 + @max_row_div4;
30056
# check multiple-4 success: 1
30058
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30059
AND @max_row_div2 + @max_row_div4 + @max_row;
30061
# check multiple-5 success: 1
30062
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30064
SET f_int1 = @cur_value , f_int2 = @cur_value,
30065
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30066
f_charbig = '#SINGLE#';
30068
# check single-1 success: 1
30069
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30071
SET f_int1 = @cur_value , f_int2 = @cur_value,
30072
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30073
f_charbig = '#SINGLE#';
30075
# check single-2 success: 1
30076
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30077
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30078
UPDATE t1 SET f_int1 = @cur_value2
30079
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30081
# check single-3 success: 1
30082
SET @cur_value1= -1;
30083
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30084
UPDATE t1 SET f_int1 = @cur_value1
30085
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30087
# check single-4 success: 1
30088
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30089
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30091
# check single-5 success: 1
30092
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30094
# check single-6 success: 1
30095
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30096
ERROR HY000: Table has no partition for value 2147483647
30097
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30098
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30099
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30100
f_charbig = '#NULL#';
30102
SET f_int1 = NULL , f_int2 = -@max_row,
30103
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30104
f_charbig = '#NULL#';
30105
ERROR 23000: Column 'f_int1' cannot be null
30106
# check null success: 1
30108
WHERE f_int1 = 0 AND f_int2 = 0
30109
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30110
AND f_charbig = '#NULL#';
30112
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30113
SELECT f_int1, f_int1, '', '', 'was inserted'
30114
FROM t0_template source_tab
30115
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30117
# check transactions-1 success: 1
30120
# check transactions-2 success: 1
30123
# check transactions-3 success: 1
30124
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30128
# check transactions-4 success: 1
30129
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30130
SELECT f_int1, f_int1, '', '', 'was inserted'
30131
FROM t0_template source_tab
30132
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30134
# check transactions-5 success: 1
30137
# check transactions-6 success: 1
30138
# INFO: Storage engine used for t1 seems to be transactional.
30141
# check transactions-7 success: 1
30142
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30144
SET @@session.sql_mode = 'traditional';
30145
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30146
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30147
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30148
'', '', 'was inserted' FROM t0_template
30149
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30150
ERROR 22012: Division by 0
30153
# check transactions-8 success: 1
30154
# INFO: Storage engine used for t1 seems to be able to revert
30155
# changes made by the failing statement.
30156
SET @@session.sql_mode = '';
30158
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30160
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30162
# check special-1 success: 1
30163
UPDATE t1 SET f_charbig = '';
30165
# check special-2 success: 1
30166
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30167
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30168
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30169
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30170
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30171
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30172
'just inserted' FROM t0_template
30173
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30174
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30176
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30177
f_charbig = 'updated by trigger'
30178
WHERE f_int1 = new.f_int1;
30180
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30181
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30182
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30184
# check trigger-1 success: 1
30185
DROP TRIGGER trg_1;
30186
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30187
f_int2 = CAST(f_char1 AS SIGNED INT),
30188
f_charbig = 'just inserted'
30189
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30191
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30192
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30193
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30194
'just inserted' FROM t0_template
30195
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30196
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30198
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30199
f_charbig = 'updated by trigger'
30200
WHERE f_int1 = new.f_int1;
30202
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30203
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30204
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30206
# check trigger-2 success: 1
30207
DROP TRIGGER trg_1;
30208
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30209
f_int2 = CAST(f_char1 AS SIGNED INT),
30210
f_charbig = 'just inserted'
30211
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30213
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30214
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30215
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30216
'just inserted' FROM t0_template
30217
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30218
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30220
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30221
f_charbig = 'updated by trigger'
30222
WHERE f_int1 = new.f_int1;
30224
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30225
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30227
# check trigger-3 success: 1
30228
DROP TRIGGER trg_1;
30229
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30230
f_int2 = CAST(f_char1 AS SIGNED INT),
30231
f_charbig = 'just inserted'
30232
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30234
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30235
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30236
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30237
'just inserted' FROM t0_template
30238
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30239
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30241
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30242
f_charbig = 'updated by trigger'
30243
WHERE f_int1 = - old.f_int1;
30245
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30246
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30248
# check trigger-4 success: 1
30249
DROP TRIGGER trg_1;
30250
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30251
f_int2 = CAST(f_char1 AS SIGNED INT),
30252
f_charbig = 'just inserted'
30253
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30255
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30256
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30257
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30258
'just inserted' FROM t0_template
30259
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30260
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30262
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30263
f_charbig = 'updated by trigger'
30264
WHERE f_int1 = new.f_int1;
30266
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30267
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30269
# check trigger-5 success: 1
30270
DROP TRIGGER trg_1;
30271
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30272
f_int2 = CAST(f_char1 AS SIGNED INT),
30273
f_charbig = 'just inserted'
30274
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30276
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30277
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30278
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30279
'just inserted' FROM t0_template
30280
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30281
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30283
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30284
f_charbig = 'updated by trigger'
30285
WHERE f_int1 = - old.f_int1;
30287
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30288
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30290
# check trigger-6 success: 1
30291
DROP TRIGGER trg_1;
30292
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30293
f_int2 = CAST(f_char1 AS SIGNED INT),
30294
f_charbig = 'just inserted'
30295
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30297
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30298
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30299
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30300
'just inserted' FROM t0_template
30301
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30302
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30304
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30305
f_charbig = 'updated by trigger'
30306
WHERE f_int1 = - old.f_int1;
30309
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30311
# check trigger-7 success: 1
30312
DROP TRIGGER trg_1;
30313
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30314
f_int2 = CAST(f_char1 AS SIGNED INT),
30315
f_charbig = 'just inserted'
30316
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30318
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30319
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30320
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30321
'just inserted' FROM t0_template
30322
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30323
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30325
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30326
f_charbig = 'updated by trigger'
30327
WHERE f_int1 = - old.f_int1;
30330
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30332
# check trigger-8 success: 1
30333
DROP TRIGGER trg_1;
30334
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30335
f_int2 = CAST(f_char1 AS SIGNED INT),
30336
f_charbig = 'just inserted'
30337
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30339
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30341
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30342
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30344
SET new.f_int1 = old.f_int1 + @max_row,
30345
new.f_int2 = old.f_int2 - @max_row,
30346
new.f_charbig = '####updated per update trigger####';
30349
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30350
f_charbig = '####updated per update statement itself####';
30352
# check trigger-9 success: 1
30353
DROP TRIGGER trg_2;
30354
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30355
f_int2 = CAST(f_char1 AS SIGNED INT),
30356
f_charbig = CONCAT('===',f_char1,'===');
30357
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30359
SET new.f_int1 = new.f_int1 + @max_row,
30360
new.f_int2 = new.f_int2 - @max_row,
30361
new.f_charbig = '####updated per update trigger####';
30364
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30365
f_charbig = '####updated per update statement itself####';
30367
# check trigger-10 success: 1
30368
DROP TRIGGER trg_2;
30369
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30370
f_int2 = CAST(f_char1 AS SIGNED INT),
30371
f_charbig = CONCAT('===',f_char1,'===');
30372
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30374
SET new.f_int1 = @my_max1 + @counter,
30375
new.f_int2 = @my_min2 - @counter,
30376
new.f_charbig = '####updated per insert trigger####';
30377
SET @counter = @counter + 1;
30380
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30381
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30382
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30383
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30384
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30386
DROP TRIGGER trg_3;
30388
# check trigger-11 success: 1
30390
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30391
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30392
AND f_charbig = '####updated per insert trigger####';
30393
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30395
SET new.f_int1 = @my_max1 + @counter,
30396
new.f_int2 = @my_min2 - @counter,
30397
new.f_charbig = '####updated per insert trigger####';
30398
SET @counter = @counter + 1;
30401
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30402
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30403
SELECT CAST(f_int1 AS CHAR),
30404
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30405
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30407
DROP TRIGGER trg_3;
30409
# check trigger-12 success: 1
30411
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30412
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30413
AND f_charbig = '####updated per insert trigger####';
30415
Table Op Msg_type Msg_text
30416
test.t1 analyze note The storage engine for the table doesn't support analyze
30417
CHECK TABLE t1 EXTENDED;
30418
Table Op Msg_type Msg_text
30419
test.t1 check note The storage engine for the table doesn't support check
30420
CHECKSUM TABLE t1 EXTENDED;
30422
test.t1 <some_value>
30424
Table Op Msg_type Msg_text
30425
test.t1 optimize note The storage engine for the table doesn't support optimize
30426
# check layout success: 1
30427
REPAIR TABLE t1 EXTENDED;
30428
Table Op Msg_type Msg_text
30429
test.t1 repair note The storage engine for the table doesn't support repair
30430
# check layout success: 1
30433
# check TRUNCATE success: 1
30434
# check layout success: 1
30435
# End usability test (inc/partition_check.inc)
30442
f_charbig VARCHAR(1000)
30443
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
30445
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
30446
(PARTITION parta VALUES LESS THAN (0),
30447
PARTITION partb VALUES LESS THAN (5),
30448
PARTITION partc VALUES LESS THAN (10),
30449
PARTITION partd VALUES LESS THAN (2147483646));
30450
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30451
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30452
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30453
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
30454
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30455
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30456
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30457
# Start usability test (inc/partition_check.inc)
30459
SHOW CREATE TABLE t1;
30461
t1 CREATE TABLE `t1` (
30462
`f_int1` int(11) NOT NULL DEFAULT '0',
30463
`f_int2` int(11) NOT NULL DEFAULT '0',
30464
`f_char1` char(20) DEFAULT NULL,
30465
`f_char2` char(20) DEFAULT NULL,
30466
`f_charbig` varchar(1000) DEFAULT NULL
30467
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
30469
# check prerequisites-1 success: 1
30470
# check COUNT(*) success: 1
30471
# check MIN/MAX(f_int1) success: 1
30472
# check MIN/MAX(f_int2) success: 1
30473
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30474
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30475
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30476
WHERE f_int1 IN (2,3);
30477
# check prerequisites-3 success: 1
30478
DELETE FROM t1 WHERE f_charbig = 'delete me';
30479
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
30480
# check read via f_int1 success: 1
30481
# check read via f_int2 success: 1
30483
# check multiple-1 success: 1
30484
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30486
# check multiple-2 success: 1
30487
INSERT INTO t1 SELECT * FROM t0_template
30488
WHERE MOD(f_int1,3) = 0;
30490
# check multiple-3 success: 1
30491
UPDATE t1 SET f_int1 = f_int1 + @max_row
30492
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30493
AND @max_row_div2 + @max_row_div4;
30495
# check multiple-4 success: 1
30497
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30498
AND @max_row_div2 + @max_row_div4 + @max_row;
30500
# check multiple-5 success: 1
30501
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30503
SET f_int1 = @cur_value , f_int2 = @cur_value,
30504
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30505
f_charbig = '#SINGLE#';
30507
# check single-1 success: 1
30508
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30510
SET f_int1 = @cur_value , f_int2 = @cur_value,
30511
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30512
f_charbig = '#SINGLE#';
30514
# check single-2 success: 1
30515
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30516
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30517
UPDATE t1 SET f_int1 = @cur_value2
30518
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30520
# check single-3 success: 1
30521
SET @cur_value1= -1;
30522
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30523
UPDATE t1 SET f_int1 = @cur_value1
30524
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30526
# check single-4 success: 1
30527
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30528
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30530
# check single-5 success: 1
30531
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30533
# check single-6 success: 1
30534
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30535
ERROR HY000: Table has no partition for value 2147483647
30536
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30537
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30538
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30539
f_charbig = '#NULL#';
30541
SET f_int1 = NULL , f_int2 = -@max_row,
30542
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30543
f_charbig = '#NULL#';
30544
ERROR 23000: Column 'f_int1' cannot be null
30545
# check null success: 1
30547
WHERE f_int1 = 0 AND f_int2 = 0
30548
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30549
AND f_charbig = '#NULL#';
30551
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30552
SELECT f_int1, f_int1, '', '', 'was inserted'
30553
FROM t0_template source_tab
30554
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30556
# check transactions-1 success: 1
30559
# check transactions-2 success: 1
30562
# check transactions-3 success: 1
30563
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30567
# check transactions-4 success: 1
30568
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30569
SELECT f_int1, f_int1, '', '', 'was inserted'
30570
FROM t0_template source_tab
30571
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30573
# check transactions-5 success: 1
30576
# check transactions-6 success: 1
30577
# INFO: Storage engine used for t1 seems to be transactional.
30580
# check transactions-7 success: 1
30581
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30583
SET @@session.sql_mode = 'traditional';
30584
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30585
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30586
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30587
'', '', 'was inserted' FROM t0_template
30588
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30589
ERROR 22012: Division by 0
30592
# check transactions-8 success: 1
30593
# INFO: Storage engine used for t1 seems to be able to revert
30594
# changes made by the failing statement.
30595
SET @@session.sql_mode = '';
30597
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30599
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30601
# check special-1 success: 1
30602
UPDATE t1 SET f_charbig = '';
30604
# check special-2 success: 1
30605
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30606
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30607
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30608
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30609
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30610
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30611
'just inserted' FROM t0_template
30612
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30613
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30615
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30616
f_charbig = 'updated by trigger'
30617
WHERE f_int1 = new.f_int1;
30619
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30620
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30621
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30623
# check trigger-1 success: 1
30624
DROP TRIGGER trg_1;
30625
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30626
f_int2 = CAST(f_char1 AS SIGNED INT),
30627
f_charbig = 'just inserted'
30628
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30630
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30631
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30632
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30633
'just inserted' FROM t0_template
30634
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30635
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30637
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30638
f_charbig = 'updated by trigger'
30639
WHERE f_int1 = new.f_int1;
30641
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30642
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30643
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30645
# check trigger-2 success: 1
30646
DROP TRIGGER trg_1;
30647
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30648
f_int2 = CAST(f_char1 AS SIGNED INT),
30649
f_charbig = 'just inserted'
30650
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30652
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30653
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30654
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30655
'just inserted' FROM t0_template
30656
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30657
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30659
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30660
f_charbig = 'updated by trigger'
30661
WHERE f_int1 = new.f_int1;
30663
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30664
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30666
# check trigger-3 success: 1
30667
DROP TRIGGER trg_1;
30668
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30669
f_int2 = CAST(f_char1 AS SIGNED INT),
30670
f_charbig = 'just inserted'
30671
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30673
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30674
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30675
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30676
'just inserted' FROM t0_template
30677
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30678
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30680
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30681
f_charbig = 'updated by trigger'
30682
WHERE f_int1 = - old.f_int1;
30684
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30685
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30687
# check trigger-4 success: 1
30688
DROP TRIGGER trg_1;
30689
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30690
f_int2 = CAST(f_char1 AS SIGNED INT),
30691
f_charbig = 'just inserted'
30692
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30694
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30695
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30696
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30697
'just inserted' FROM t0_template
30698
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30699
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30701
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30702
f_charbig = 'updated by trigger'
30703
WHERE f_int1 = new.f_int1;
30705
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30706
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30708
# check trigger-5 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 AFTER 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 = - old.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-6 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 DELETE 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;
30748
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30750
# check trigger-7 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 DELETE 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 = - old.f_int1;
30769
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30771
# check trigger-8 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;
30780
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30781
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30783
SET new.f_int1 = old.f_int1 + @max_row,
30784
new.f_int2 = old.f_int2 - @max_row,
30785
new.f_charbig = '####updated per update trigger####';
30788
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30789
f_charbig = '####updated per update statement itself####';
30791
# check trigger-9 success: 1
30792
DROP TRIGGER trg_2;
30793
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30794
f_int2 = CAST(f_char1 AS SIGNED INT),
30795
f_charbig = CONCAT('===',f_char1,'===');
30796
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30798
SET new.f_int1 = new.f_int1 + @max_row,
30799
new.f_int2 = new.f_int2 - @max_row,
30800
new.f_charbig = '####updated per update trigger####';
30803
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30804
f_charbig = '####updated per update statement itself####';
30806
# check trigger-10 success: 1
30807
DROP TRIGGER trg_2;
30808
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30809
f_int2 = CAST(f_char1 AS SIGNED INT),
30810
f_charbig = CONCAT('===',f_char1,'===');
30811
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30813
SET new.f_int1 = @my_max1 + @counter,
30814
new.f_int2 = @my_min2 - @counter,
30815
new.f_charbig = '####updated per insert trigger####';
30816
SET @counter = @counter + 1;
30819
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30820
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30821
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30822
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30823
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30825
DROP TRIGGER trg_3;
30827
# check trigger-11 success: 1
30829
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30830
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30831
AND f_charbig = '####updated per insert trigger####';
30832
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30834
SET new.f_int1 = @my_max1 + @counter,
30835
new.f_int2 = @my_min2 - @counter,
30836
new.f_charbig = '####updated per insert trigger####';
30837
SET @counter = @counter + 1;
30840
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30841
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30842
SELECT CAST(f_int1 AS CHAR),
30843
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30844
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30846
DROP TRIGGER trg_3;
30848
# check trigger-12 success: 1
30850
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30851
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30852
AND f_charbig = '####updated per insert trigger####';
30854
Table Op Msg_type Msg_text
30855
test.t1 analyze note The storage engine for the table doesn't support analyze
30856
CHECK TABLE t1 EXTENDED;
30857
Table Op Msg_type Msg_text
30858
test.t1 check note The storage engine for the table doesn't support check
30859
CHECKSUM TABLE t1 EXTENDED;
30861
test.t1 <some_value>
30863
Table Op Msg_type Msg_text
30864
test.t1 optimize note The storage engine for the table doesn't support optimize
30865
# check layout success: 1
30866
REPAIR TABLE t1 EXTENDED;
30867
Table Op Msg_type Msg_text
30868
test.t1 repair note The storage engine for the table doesn't support repair
30869
# check layout success: 1
30872
# check TRUNCATE success: 1
30873
# check layout success: 1
30874
# End usability test (inc/partition_check.inc)
30881
f_charbig VARCHAR(1000)
30882
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
30884
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
30885
(PARTITION part1 VALUES LESS THAN (0)
30886
(SUBPARTITION subpart11, SUBPARTITION subpart12),
30887
PARTITION part2 VALUES LESS THAN (5)
30888
(SUBPARTITION subpart21, SUBPARTITION subpart22),
30889
PARTITION part3 VALUES LESS THAN (10)
30890
(SUBPARTITION subpart31, SUBPARTITION subpart32),
30891
PARTITION part4 VALUES LESS THAN (2147483646)
30892
(SUBPARTITION subpart41, SUBPARTITION subpart42));
30893
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30894
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30895
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30896
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
30897
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30898
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30899
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30900
# Start usability test (inc/partition_check.inc)
30902
SHOW CREATE TABLE t1;
30904
t1 CREATE TABLE `t1` (
30905
`f_int1` int(11) NOT NULL DEFAULT '0',
30906
`f_int2` int(11) NOT NULL DEFAULT '0',
30907
`f_char1` char(20) DEFAULT NULL,
30908
`f_char2` char(20) DEFAULT NULL,
30909
`f_charbig` varchar(1000) DEFAULT NULL
30910
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
30912
# check prerequisites-1 success: 1
30913
# check COUNT(*) success: 1
30914
# check MIN/MAX(f_int1) success: 1
30915
# check MIN/MAX(f_int2) success: 1
30916
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30917
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30918
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30919
WHERE f_int1 IN (2,3);
30920
# check prerequisites-3 success: 1
30921
DELETE FROM t1 WHERE f_charbig = 'delete me';
30922
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
30923
# check read via f_int1 success: 1
30924
# check read via f_int2 success: 1
30926
# check multiple-1 success: 1
30927
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30929
# check multiple-2 success: 1
30930
INSERT INTO t1 SELECT * FROM t0_template
30931
WHERE MOD(f_int1,3) = 0;
30933
# check multiple-3 success: 1
30934
UPDATE t1 SET f_int1 = f_int1 + @max_row
30935
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30936
AND @max_row_div2 + @max_row_div4;
30938
# check multiple-4 success: 1
30940
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30941
AND @max_row_div2 + @max_row_div4 + @max_row;
30943
# check multiple-5 success: 1
30944
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30946
SET f_int1 = @cur_value , f_int2 = @cur_value,
30947
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30948
f_charbig = '#SINGLE#';
30950
# check single-1 success: 1
30951
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30953
SET f_int1 = @cur_value , f_int2 = @cur_value,
30954
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30955
f_charbig = '#SINGLE#';
30957
# check single-2 success: 1
30958
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30959
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30960
UPDATE t1 SET f_int1 = @cur_value2
30961
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30963
# check single-3 success: 1
30964
SET @cur_value1= -1;
30965
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30966
UPDATE t1 SET f_int1 = @cur_value1
30967
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30969
# check single-4 success: 1
30970
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30971
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30973
# check single-5 success: 1
30974
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30976
# check single-6 success: 1
30977
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30978
ERROR HY000: Table has no partition for value 2147483647
30979
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30980
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30981
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30982
f_charbig = '#NULL#';
30984
SET f_int1 = NULL , f_int2 = -@max_row,
30985
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30986
f_charbig = '#NULL#';
30987
ERROR 23000: Column 'f_int1' cannot be null
30988
# check null success: 1
30990
WHERE f_int1 = 0 AND f_int2 = 0
30991
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30992
AND f_charbig = '#NULL#';
30994
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30995
SELECT f_int1, f_int1, '', '', 'was inserted'
30996
FROM t0_template source_tab
30997
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30999
# check transactions-1 success: 1
31002
# check transactions-2 success: 1
31005
# check transactions-3 success: 1
31006
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31010
# check transactions-4 success: 1
31011
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31012
SELECT f_int1, f_int1, '', '', 'was inserted'
31013
FROM t0_template source_tab
31014
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31016
# check transactions-5 success: 1
31019
# check transactions-6 success: 1
31020
# INFO: Storage engine used for t1 seems to be transactional.
31023
# check transactions-7 success: 1
31024
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31026
SET @@session.sql_mode = 'traditional';
31027
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31028
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31029
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31030
'', '', 'was inserted' FROM t0_template
31031
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31032
ERROR 22012: Division by 0
31035
# check transactions-8 success: 1
31036
# INFO: Storage engine used for t1 seems to be able to revert
31037
# changes made by the failing statement.
31038
SET @@session.sql_mode = '';
31040
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31042
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31044
# check special-1 success: 1
31045
UPDATE t1 SET f_charbig = '';
31047
# check special-2 success: 1
31048
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31049
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31050
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31051
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31052
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31053
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31054
'just inserted' FROM t0_template
31055
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31056
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31058
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31059
f_charbig = 'updated by trigger'
31060
WHERE f_int1 = new.f_int1;
31062
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31063
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31064
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31066
# check trigger-1 success: 1
31067
DROP TRIGGER trg_1;
31068
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31069
f_int2 = CAST(f_char1 AS SIGNED INT),
31070
f_charbig = 'just inserted'
31071
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31073
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31074
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31075
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31076
'just inserted' FROM t0_template
31077
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31078
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31080
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31081
f_charbig = 'updated by trigger'
31082
WHERE f_int1 = new.f_int1;
31084
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31085
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31086
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31088
# check trigger-2 success: 1
31089
DROP TRIGGER trg_1;
31090
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31091
f_int2 = CAST(f_char1 AS SIGNED INT),
31092
f_charbig = 'just inserted'
31093
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31095
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31096
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31097
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31098
'just inserted' FROM t0_template
31099
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31100
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31102
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31103
f_charbig = 'updated by trigger'
31104
WHERE f_int1 = new.f_int1;
31106
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31107
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31109
# check trigger-3 success: 1
31110
DROP TRIGGER trg_1;
31111
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31112
f_int2 = CAST(f_char1 AS SIGNED INT),
31113
f_charbig = 'just inserted'
31114
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31116
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31117
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31118
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31119
'just inserted' FROM t0_template
31120
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31121
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31123
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31124
f_charbig = 'updated by trigger'
31125
WHERE f_int1 = - old.f_int1;
31127
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31128
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31130
# check trigger-4 success: 1
31131
DROP TRIGGER trg_1;
31132
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31133
f_int2 = CAST(f_char1 AS SIGNED INT),
31134
f_charbig = 'just inserted'
31135
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31137
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31138
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31139
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31140
'just inserted' FROM t0_template
31141
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31142
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31144
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31145
f_charbig = 'updated by trigger'
31146
WHERE f_int1 = new.f_int1;
31148
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31149
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31151
# check trigger-5 success: 1
31152
DROP TRIGGER trg_1;
31153
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31154
f_int2 = CAST(f_char1 AS SIGNED INT),
31155
f_charbig = 'just inserted'
31156
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31158
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31159
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31160
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31161
'just inserted' FROM t0_template
31162
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31163
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31165
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31166
f_charbig = 'updated by trigger'
31167
WHERE f_int1 = - old.f_int1;
31169
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31170
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31172
# check trigger-6 success: 1
31173
DROP TRIGGER trg_1;
31174
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31175
f_int2 = CAST(f_char1 AS SIGNED INT),
31176
f_charbig = 'just inserted'
31177
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31179
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31180
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31181
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31182
'just inserted' FROM t0_template
31183
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31184
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31186
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31187
f_charbig = 'updated by trigger'
31188
WHERE f_int1 = - old.f_int1;
31191
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31193
# check trigger-7 success: 1
31194
DROP TRIGGER trg_1;
31195
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31196
f_int2 = CAST(f_char1 AS SIGNED INT),
31197
f_charbig = 'just inserted'
31198
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31200
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31201
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31202
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31203
'just inserted' FROM t0_template
31204
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31205
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31207
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31208
f_charbig = 'updated by trigger'
31209
WHERE f_int1 = - old.f_int1;
31212
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31214
# check trigger-8 success: 1
31215
DROP TRIGGER trg_1;
31216
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31217
f_int2 = CAST(f_char1 AS SIGNED INT),
31218
f_charbig = 'just inserted'
31219
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31221
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31223
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31224
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31226
SET new.f_int1 = old.f_int1 + @max_row,
31227
new.f_int2 = old.f_int2 - @max_row,
31228
new.f_charbig = '####updated per update trigger####';
31231
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31232
f_charbig = '####updated per update statement itself####';
31234
# check trigger-9 success: 1
31235
DROP TRIGGER trg_2;
31236
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31237
f_int2 = CAST(f_char1 AS SIGNED INT),
31238
f_charbig = CONCAT('===',f_char1,'===');
31239
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31241
SET new.f_int1 = new.f_int1 + @max_row,
31242
new.f_int2 = new.f_int2 - @max_row,
31243
new.f_charbig = '####updated per update trigger####';
31246
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31247
f_charbig = '####updated per update statement itself####';
31249
# check trigger-10 success: 1
31250
DROP TRIGGER trg_2;
31251
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31252
f_int2 = CAST(f_char1 AS SIGNED INT),
31253
f_charbig = CONCAT('===',f_char1,'===');
31254
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31256
SET new.f_int1 = @my_max1 + @counter,
31257
new.f_int2 = @my_min2 - @counter,
31258
new.f_charbig = '####updated per insert trigger####';
31259
SET @counter = @counter + 1;
31262
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31263
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31264
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31265
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31266
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31268
DROP TRIGGER trg_3;
31270
# check trigger-11 success: 1
31272
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31273
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31274
AND f_charbig = '####updated per insert trigger####';
31275
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31277
SET new.f_int1 = @my_max1 + @counter,
31278
new.f_int2 = @my_min2 - @counter,
31279
new.f_charbig = '####updated per insert trigger####';
31280
SET @counter = @counter + 1;
31283
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31284
INSERT INTO t1 (f_char1, f_char2, f_charbig)
31285
SELECT CAST(f_int1 AS CHAR),
31286
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31287
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31289
DROP TRIGGER trg_3;
31291
# check trigger-12 success: 1
31293
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31294
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31295
AND f_charbig = '####updated per insert trigger####';
31297
Table Op Msg_type Msg_text
31298
test.t1 analyze note The storage engine for the table doesn't support analyze
31299
CHECK TABLE t1 EXTENDED;
31300
Table Op Msg_type Msg_text
31301
test.t1 check note The storage engine for the table doesn't support check
31302
CHECKSUM TABLE t1 EXTENDED;
31304
test.t1 <some_value>
31306
Table Op Msg_type Msg_text
31307
test.t1 optimize note The storage engine for the table doesn't support optimize
31308
# check layout success: 1
31309
REPAIR TABLE t1 EXTENDED;
31310
Table Op Msg_type Msg_text
31311
test.t1 repair note The storage engine for the table doesn't support repair
31312
# check layout success: 1
31315
# check TRUNCATE success: 1
31316
# check layout success: 1
31317
# End usability test (inc/partition_check.inc)
31324
f_charbig VARCHAR(1000)
31325
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
31327
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
31328
(PARTITION part1 VALUES IN (0)
31329
(SUBPARTITION sp11, SUBPARTITION sp12),
31330
PARTITION part2 VALUES IN (1)
31331
(SUBPARTITION sp21, SUBPARTITION sp22),
31332
PARTITION part3 VALUES IN (2)
31333
(SUBPARTITION sp31, SUBPARTITION sp32),
31334
PARTITION part4 VALUES IN (NULL)
31335
(SUBPARTITION sp41, SUBPARTITION sp42));
31336
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31337
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31338
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31339
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
31340
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31341
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31342
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31343
# Start usability test (inc/partition_check.inc)
31345
SHOW CREATE TABLE t1;
31347
t1 CREATE TABLE `t1` (
31348
`f_int1` int(11) NOT NULL DEFAULT '0',
31349
`f_int2` int(11) NOT NULL DEFAULT '0',
31350
`f_char1` char(20) DEFAULT NULL,
31351
`f_char2` char(20) DEFAULT NULL,
31352
`f_charbig` varchar(1000) DEFAULT NULL
31353
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
31355
# check prerequisites-1 success: 1
31356
# check COUNT(*) success: 1
31357
# check MIN/MAX(f_int1) success: 1
31358
# check MIN/MAX(f_int2) success: 1
31359
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31360
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31361
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31362
WHERE f_int1 IN (2,3);
31363
# check prerequisites-3 success: 1
31364
DELETE FROM t1 WHERE f_charbig = 'delete me';
31365
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
31366
# check read via f_int1 success: 1
31367
# check read via f_int2 success: 1
31369
# check multiple-1 success: 1
31370
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31372
# check multiple-2 success: 1
31373
INSERT INTO t1 SELECT * FROM t0_template
31374
WHERE MOD(f_int1,3) = 0;
31376
# check multiple-3 success: 1
31377
UPDATE t1 SET f_int1 = f_int1 + @max_row
31378
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31379
AND @max_row_div2 + @max_row_div4;
31381
# check multiple-4 success: 1
31383
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31384
AND @max_row_div2 + @max_row_div4 + @max_row;
31386
# check multiple-5 success: 1
31387
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31389
SET f_int1 = @cur_value , f_int2 = @cur_value,
31390
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31391
f_charbig = '#SINGLE#';
31393
# check single-1 success: 1
31394
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31396
SET f_int1 = @cur_value , f_int2 = @cur_value,
31397
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31398
f_charbig = '#SINGLE#';
31400
# check single-2 success: 1
31401
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31402
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31403
UPDATE t1 SET f_int1 = @cur_value2
31404
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31406
# check single-3 success: 1
31407
SET @cur_value1= -1;
31408
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31409
UPDATE t1 SET f_int1 = @cur_value1
31410
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31412
# check single-4 success: 1
31413
SELECT MAX(f_int1) INTO @cur_value FROM t1;
31414
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31416
# check single-5 success: 1
31417
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31419
# check single-6 success: 1
31420
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31422
# check single-7 success: 1
31423
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
31424
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31425
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31426
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31427
f_charbig = '#NULL#';
31429
SET f_int1 = NULL , f_int2 = -@max_row,
31430
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31431
f_charbig = '#NULL#';
31432
ERROR 23000: Column 'f_int1' cannot be null
31433
# check null success: 1
31435
WHERE f_int1 = 0 AND f_int2 = 0
31436
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31437
AND f_charbig = '#NULL#';
31439
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31440
SELECT f_int1, f_int1, '', '', 'was inserted'
31441
FROM t0_template source_tab
31442
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31444
# check transactions-1 success: 1
31447
# check transactions-2 success: 1
31450
# check transactions-3 success: 1
31451
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31455
# check transactions-4 success: 1
31456
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31457
SELECT f_int1, f_int1, '', '', 'was inserted'
31458
FROM t0_template source_tab
31459
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31461
# check transactions-5 success: 1
31464
# check transactions-6 success: 1
31465
# INFO: Storage engine used for t1 seems to be transactional.
31468
# check transactions-7 success: 1
31469
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31471
SET @@session.sql_mode = 'traditional';
31472
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31473
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31474
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31475
'', '', 'was inserted' FROM t0_template
31476
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31477
ERROR 22012: Division by 0
31480
# check transactions-8 success: 1
31481
# INFO: Storage engine used for t1 seems to be able to revert
31482
# changes made by the failing statement.
31483
SET @@session.sql_mode = '';
31485
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31487
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31489
# check special-1 success: 1
31490
UPDATE t1 SET f_charbig = '';
31492
# check special-2 success: 1
31493
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31494
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31495
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31496
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31497
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31498
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31499
'just inserted' FROM t0_template
31500
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31501
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31503
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31504
f_charbig = 'updated by trigger'
31505
WHERE f_int1 = new.f_int1;
31507
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31508
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31509
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31511
# check trigger-1 success: 1
31512
DROP TRIGGER trg_1;
31513
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31514
f_int2 = CAST(f_char1 AS SIGNED INT),
31515
f_charbig = 'just inserted'
31516
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31518
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31519
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31520
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31521
'just inserted' FROM t0_template
31522
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31523
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31525
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31526
f_charbig = 'updated by trigger'
31527
WHERE f_int1 = new.f_int1;
31529
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31530
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31531
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31533
# check trigger-2 success: 1
31534
DROP TRIGGER trg_1;
31535
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31536
f_int2 = CAST(f_char1 AS SIGNED INT),
31537
f_charbig = 'just inserted'
31538
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31540
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31541
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31542
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31543
'just inserted' FROM t0_template
31544
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31545
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31547
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31548
f_charbig = 'updated by trigger'
31549
WHERE f_int1 = new.f_int1;
31551
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31552
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31554
# check trigger-3 success: 1
31555
DROP TRIGGER trg_1;
31556
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31557
f_int2 = CAST(f_char1 AS SIGNED INT),
31558
f_charbig = 'just inserted'
31559
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31561
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31562
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31563
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31564
'just inserted' FROM t0_template
31565
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31566
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31568
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31569
f_charbig = 'updated by trigger'
31570
WHERE f_int1 = - old.f_int1;
31572
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31573
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31575
# check trigger-4 success: 1
31576
DROP TRIGGER trg_1;
31577
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31578
f_int2 = CAST(f_char1 AS SIGNED INT),
31579
f_charbig = 'just inserted'
31580
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31582
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31583
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31584
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31585
'just inserted' FROM t0_template
31586
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31587
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31589
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31590
f_charbig = 'updated by trigger'
31591
WHERE f_int1 = new.f_int1;
31593
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31594
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31596
# check trigger-5 success: 1
31597
DROP TRIGGER trg_1;
31598
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31599
f_int2 = CAST(f_char1 AS SIGNED INT),
31600
f_charbig = 'just inserted'
31601
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31603
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31604
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31605
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31606
'just inserted' FROM t0_template
31607
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31608
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31610
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31611
f_charbig = 'updated by trigger'
31612
WHERE f_int1 = - old.f_int1;
31614
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31615
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31617
# check trigger-6 success: 1
31618
DROP TRIGGER trg_1;
31619
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31620
f_int2 = CAST(f_char1 AS SIGNED INT),
31621
f_charbig = 'just inserted'
31622
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31624
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31625
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31626
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31627
'just inserted' FROM t0_template
31628
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31629
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31631
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31632
f_charbig = 'updated by trigger'
31633
WHERE f_int1 = - old.f_int1;
31636
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31638
# check trigger-7 success: 1
31639
DROP TRIGGER trg_1;
31640
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31641
f_int2 = CAST(f_char1 AS SIGNED INT),
31642
f_charbig = 'just inserted'
31643
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31645
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31646
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31647
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31648
'just inserted' FROM t0_template
31649
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31650
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31652
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31653
f_charbig = 'updated by trigger'
31654
WHERE f_int1 = - old.f_int1;
31657
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31659
# check trigger-8 success: 1
31660
DROP TRIGGER trg_1;
31661
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31662
f_int2 = CAST(f_char1 AS SIGNED INT),
31663
f_charbig = 'just inserted'
31664
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31666
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31668
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31669
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31671
SET new.f_int1 = old.f_int1 + @max_row,
31672
new.f_int2 = old.f_int2 - @max_row,
31673
new.f_charbig = '####updated per update trigger####';
31676
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31677
f_charbig = '####updated per update statement itself####';
31679
# check trigger-9 success: 1
31680
DROP TRIGGER trg_2;
31681
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31682
f_int2 = CAST(f_char1 AS SIGNED INT),
31683
f_charbig = CONCAT('===',f_char1,'===');
31684
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31686
SET new.f_int1 = new.f_int1 + @max_row,
31687
new.f_int2 = new.f_int2 - @max_row,
31688
new.f_charbig = '####updated per update trigger####';
31691
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31692
f_charbig = '####updated per update statement itself####';
31694
# check trigger-10 success: 1
31695
DROP TRIGGER trg_2;
31696
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31697
f_int2 = CAST(f_char1 AS SIGNED INT),
31698
f_charbig = CONCAT('===',f_char1,'===');
31699
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31701
SET new.f_int1 = @my_max1 + @counter,
31702
new.f_int2 = @my_min2 - @counter,
31703
new.f_charbig = '####updated per insert trigger####';
31704
SET @counter = @counter + 1;
31707
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31708
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31709
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31710
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31711
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31713
DROP TRIGGER trg_3;
31715
# check trigger-11 success: 1
31717
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31718
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31719
AND f_charbig = '####updated per insert trigger####';
31720
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31722
SET new.f_int1 = @my_max1 + @counter,
31723
new.f_int2 = @my_min2 - @counter,
31724
new.f_charbig = '####updated per insert trigger####';
31725
SET @counter = @counter + 1;
31728
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31729
INSERT INTO t1 (f_char1, f_char2, f_charbig)
31730
SELECT CAST(f_int1 AS CHAR),
31731
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31732
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31734
DROP TRIGGER trg_3;
31736
# check trigger-12 success: 1
31738
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31739
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31740
AND f_charbig = '####updated per insert trigger####';
31742
Table Op Msg_type Msg_text
31743
test.t1 analyze note The storage engine for the table doesn't support analyze
31744
CHECK TABLE t1 EXTENDED;
31745
Table Op Msg_type Msg_text
31746
test.t1 check note The storage engine for the table doesn't support check
31747
CHECKSUM TABLE t1 EXTENDED;
31749
test.t1 <some_value>
31751
Table Op Msg_type Msg_text
31752
test.t1 optimize note The storage engine for the table doesn't support optimize
31753
# check layout success: 1
31754
REPAIR TABLE t1 EXTENDED;
31755
Table Op Msg_type Msg_text
31756
test.t1 repair note The storage engine for the table doesn't support repair
31757
# check layout success: 1
31760
# check TRUNCATE success: 1
31761
# check layout success: 1
31762
# End usability test (inc/partition_check.inc)
31769
f_charbig VARCHAR(1000)
31770
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
31772
PARTITION BY LIST(ABS(MOD(f_int1,2)))
31773
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
31774
(PARTITION part1 VALUES IN (0),
31775
PARTITION part2 VALUES IN (1),
31776
PARTITION part3 VALUES IN (NULL));
31777
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31778
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31779
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31780
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
31781
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31782
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31783
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31784
# Start usability test (inc/partition_check.inc)
31786
SHOW CREATE TABLE t1;
31788
t1 CREATE TABLE `t1` (
31789
`f_int1` int(11) NOT NULL DEFAULT '0',
31790
`f_int2` int(11) NOT NULL DEFAULT '0',
31791
`f_char1` char(20) DEFAULT NULL,
31792
`f_char2` char(20) DEFAULT NULL,
31793
`f_charbig` varchar(1000) DEFAULT NULL
31794
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
31796
# check prerequisites-1 success: 1
31797
# check COUNT(*) success: 1
31798
# check MIN/MAX(f_int1) success: 1
31799
# check MIN/MAX(f_int2) success: 1
31800
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31801
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31802
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31803
WHERE f_int1 IN (2,3);
31804
# check prerequisites-3 success: 1
31805
DELETE FROM t1 WHERE f_charbig = 'delete me';
31806
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
31807
# check read via f_int1 success: 1
31808
# check read via f_int2 success: 1
31810
# check multiple-1 success: 1
31811
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31813
# check multiple-2 success: 1
31814
INSERT INTO t1 SELECT * FROM t0_template
31815
WHERE MOD(f_int1,3) = 0;
31817
# check multiple-3 success: 1
31818
UPDATE t1 SET f_int1 = f_int1 + @max_row
31819
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31820
AND @max_row_div2 + @max_row_div4;
31822
# check multiple-4 success: 1
31824
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31825
AND @max_row_div2 + @max_row_div4 + @max_row;
31827
# check multiple-5 success: 1
31828
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31830
SET f_int1 = @cur_value , f_int2 = @cur_value,
31831
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31832
f_charbig = '#SINGLE#';
31834
# check single-1 success: 1
31835
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31837
SET f_int1 = @cur_value , f_int2 = @cur_value,
31838
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31839
f_charbig = '#SINGLE#';
31841
# check single-2 success: 1
31842
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31843
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31844
UPDATE t1 SET f_int1 = @cur_value2
31845
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31847
# check single-3 success: 1
31848
SET @cur_value1= -1;
31849
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31850
UPDATE t1 SET f_int1 = @cur_value1
31851
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31853
# check single-4 success: 1
31854
SELECT MAX(f_int1) INTO @cur_value FROM t1;
31855
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31857
# check single-5 success: 1
31858
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31860
# check single-6 success: 1
31861
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31863
# check single-7 success: 1
31864
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
31865
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31866
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31867
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31868
f_charbig = '#NULL#';
31870
SET f_int1 = NULL , f_int2 = -@max_row,
31871
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31872
f_charbig = '#NULL#';
31873
ERROR 23000: Column 'f_int1' cannot be null
31874
# check null success: 1
31876
WHERE f_int1 = 0 AND f_int2 = 0
31877
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31878
AND f_charbig = '#NULL#';
31880
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31881
SELECT f_int1, f_int1, '', '', 'was inserted'
31882
FROM t0_template source_tab
31883
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31885
# check transactions-1 success: 1
31888
# check transactions-2 success: 1
31891
# check transactions-3 success: 1
31892
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31896
# check transactions-4 success: 1
31897
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31898
SELECT f_int1, f_int1, '', '', 'was inserted'
31899
FROM t0_template source_tab
31900
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31902
# check transactions-5 success: 1
31905
# check transactions-6 success: 1
31906
# INFO: Storage engine used for t1 seems to be transactional.
31909
# check transactions-7 success: 1
31910
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31912
SET @@session.sql_mode = 'traditional';
31913
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31914
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31915
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31916
'', '', 'was inserted' FROM t0_template
31917
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31918
ERROR 22012: Division by 0
31921
# check transactions-8 success: 1
31922
# INFO: Storage engine used for t1 seems to be able to revert
31923
# changes made by the failing statement.
31924
SET @@session.sql_mode = '';
31926
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31928
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31930
# check special-1 success: 1
31931
UPDATE t1 SET f_charbig = '';
31933
# check special-2 success: 1
31934
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31935
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31936
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31937
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31938
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31939
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31940
'just inserted' FROM t0_template
31941
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31942
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31944
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31945
f_charbig = 'updated by trigger'
31946
WHERE f_int1 = new.f_int1;
31948
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31949
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31950
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31952
# check trigger-1 success: 1
31953
DROP TRIGGER trg_1;
31954
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31955
f_int2 = CAST(f_char1 AS SIGNED INT),
31956
f_charbig = 'just inserted'
31957
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31959
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31960
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31961
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31962
'just inserted' FROM t0_template
31963
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31964
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31966
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31967
f_charbig = 'updated by trigger'
31968
WHERE f_int1 = new.f_int1;
31970
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31971
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31972
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31974
# check trigger-2 success: 1
31975
DROP TRIGGER trg_1;
31976
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31977
f_int2 = CAST(f_char1 AS SIGNED INT),
31978
f_charbig = 'just inserted'
31979
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31981
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31982
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31983
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31984
'just inserted' FROM t0_template
31985
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31986
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31988
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31989
f_charbig = 'updated by trigger'
31990
WHERE f_int1 = new.f_int1;
31992
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31993
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31995
# check trigger-3 success: 1
31996
DROP TRIGGER trg_1;
31997
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31998
f_int2 = CAST(f_char1 AS SIGNED INT),
31999
f_charbig = 'just inserted'
32000
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32002
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32003
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32004
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32005
'just inserted' FROM t0_template
32006
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32007
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32009
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32010
f_charbig = 'updated by trigger'
32011
WHERE f_int1 = - old.f_int1;
32013
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32014
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32016
# check trigger-4 success: 1
32017
DROP TRIGGER trg_1;
32018
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32019
f_int2 = CAST(f_char1 AS SIGNED INT),
32020
f_charbig = 'just inserted'
32021
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32023
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32024
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32025
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32026
'just inserted' FROM t0_template
32027
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32028
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32030
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32031
f_charbig = 'updated by trigger'
32032
WHERE f_int1 = new.f_int1;
32034
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32035
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32037
# check trigger-5 success: 1
32038
DROP TRIGGER trg_1;
32039
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32040
f_int2 = CAST(f_char1 AS SIGNED INT),
32041
f_charbig = 'just inserted'
32042
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32044
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32045
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32046
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32047
'just inserted' FROM t0_template
32048
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32049
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32051
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32052
f_charbig = 'updated by trigger'
32053
WHERE f_int1 = - old.f_int1;
32055
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32056
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32058
# check trigger-6 success: 1
32059
DROP TRIGGER trg_1;
32060
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32061
f_int2 = CAST(f_char1 AS SIGNED INT),
32062
f_charbig = 'just inserted'
32063
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32065
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32066
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32067
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32068
'just inserted' FROM t0_template
32069
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32070
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32072
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32073
f_charbig = 'updated by trigger'
32074
WHERE f_int1 = - old.f_int1;
32077
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32079
# check trigger-7 success: 1
32080
DROP TRIGGER trg_1;
32081
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32082
f_int2 = CAST(f_char1 AS SIGNED INT),
32083
f_charbig = 'just inserted'
32084
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32086
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32087
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32088
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32089
'just inserted' FROM t0_template
32090
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32091
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32093
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32094
f_charbig = 'updated by trigger'
32095
WHERE f_int1 = - old.f_int1;
32098
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32100
# check trigger-8 success: 1
32101
DROP TRIGGER trg_1;
32102
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32103
f_int2 = CAST(f_char1 AS SIGNED INT),
32104
f_charbig = 'just inserted'
32105
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32107
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32109
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32110
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32112
SET new.f_int1 = old.f_int1 + @max_row,
32113
new.f_int2 = old.f_int2 - @max_row,
32114
new.f_charbig = '####updated per update trigger####';
32117
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32118
f_charbig = '####updated per update statement itself####';
32120
# check trigger-9 success: 1
32121
DROP TRIGGER trg_2;
32122
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32123
f_int2 = CAST(f_char1 AS SIGNED INT),
32124
f_charbig = CONCAT('===',f_char1,'===');
32125
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32127
SET new.f_int1 = new.f_int1 + @max_row,
32128
new.f_int2 = new.f_int2 - @max_row,
32129
new.f_charbig = '####updated per update trigger####';
32132
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32133
f_charbig = '####updated per update statement itself####';
32135
# check trigger-10 success: 1
32136
DROP TRIGGER trg_2;
32137
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32138
f_int2 = CAST(f_char1 AS SIGNED INT),
32139
f_charbig = CONCAT('===',f_char1,'===');
32140
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32142
SET new.f_int1 = @my_max1 + @counter,
32143
new.f_int2 = @my_min2 - @counter,
32144
new.f_charbig = '####updated per insert trigger####';
32145
SET @counter = @counter + 1;
32148
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32149
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32150
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32151
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32152
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32154
DROP TRIGGER trg_3;
32156
# check trigger-11 success: 1
32158
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32159
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32160
AND f_charbig = '####updated per insert trigger####';
32161
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32163
SET new.f_int1 = @my_max1 + @counter,
32164
new.f_int2 = @my_min2 - @counter,
32165
new.f_charbig = '####updated per insert trigger####';
32166
SET @counter = @counter + 1;
32169
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32170
INSERT INTO t1 (f_char1, f_char2, f_charbig)
32171
SELECT CAST(f_int1 AS CHAR),
32172
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32173
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32175
DROP TRIGGER trg_3;
32177
# check trigger-12 success: 1
32179
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32180
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32181
AND f_charbig = '####updated per insert trigger####';
32183
Table Op Msg_type Msg_text
32184
test.t1 analyze note The storage engine for the table doesn't support analyze
32185
CHECK TABLE t1 EXTENDED;
32186
Table Op Msg_type Msg_text
32187
test.t1 check note The storage engine for the table doesn't support check
32188
CHECKSUM TABLE t1 EXTENDED;
32190
test.t1 <some_value>
32192
Table Op Msg_type Msg_text
32193
test.t1 optimize note The storage engine for the table doesn't support optimize
32194
# check layout success: 1
32195
REPAIR TABLE t1 EXTENDED;
32196
Table Op Msg_type Msg_text
32197
test.t1 repair note The storage engine for the table doesn't support repair
32198
# check layout success: 1
32201
# check TRUNCATE success: 1
32202
# check layout success: 1
32203
# End usability test (inc/partition_check.inc)
32205
DROP TABLE IF EXISTS t1;
32211
f_charbig VARCHAR(1000)
32212
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
32214
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
32215
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32216
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32217
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
32218
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
32219
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32220
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32221
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
32222
# Start usability test (inc/partition_check.inc)
32224
SHOW CREATE TABLE t1;
32226
t1 CREATE TABLE `t1` (
32227
`f_int1` int(11) DEFAULT NULL,
32228
`f_int2` int(11) DEFAULT NULL,
32229
`f_char1` char(20) DEFAULT NULL,
32230
`f_char2` char(20) DEFAULT NULL,
32231
`f_charbig` varchar(1000) DEFAULT NULL
32232
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
32234
# check prerequisites-1 success: 1
32235
# check COUNT(*) success: 1
32236
# check MIN/MAX(f_int1) success: 1
32237
# check MIN/MAX(f_int2) success: 1
32238
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32239
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32240
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
32241
WHERE f_int1 IN (2,3);
32242
# check prerequisites-3 success: 1
32243
DELETE FROM t1 WHERE f_charbig = 'delete me';
32244
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
32245
# check read via f_int1 success: 1
32246
# check read via f_int2 success: 1
32248
# check multiple-1 success: 1
32249
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
32251
# check multiple-2 success: 1
32252
INSERT INTO t1 SELECT * FROM t0_template
32253
WHERE MOD(f_int1,3) = 0;
32255
# check multiple-3 success: 1
32256
UPDATE t1 SET f_int1 = f_int1 + @max_row
32257
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
32258
AND @max_row_div2 + @max_row_div4;
32260
# check multiple-4 success: 1
32262
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32263
AND @max_row_div2 + @max_row_div4 + @max_row;
32265
# check multiple-5 success: 1
32266
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32268
SET f_int1 = @cur_value , f_int2 = @cur_value,
32269
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32270
f_charbig = '#SINGLE#';
32272
# check single-1 success: 1
32273
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32275
SET f_int1 = @cur_value , f_int2 = @cur_value,
32276
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32277
f_charbig = '#SINGLE#';
32279
# check single-2 success: 1
32280
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32281
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32282
UPDATE t1 SET f_int1 = @cur_value2
32283
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32285
# check single-3 success: 1
32286
SET @cur_value1= -1;
32287
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32288
UPDATE t1 SET f_int1 = @cur_value1
32289
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32291
# check single-4 success: 1
32292
SELECT MAX(f_int1) INTO @cur_value FROM t1;
32293
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32295
# check single-5 success: 1
32296
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32298
# check single-6 success: 1
32299
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32301
# check single-7 success: 1
32302
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32303
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32304
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32305
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32306
f_charbig = '#NULL#';
32308
SET f_int1 = NULL , f_int2 = -@max_row,
32309
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32310
f_charbig = '#NULL#';
32311
# check null success: 1
32313
# check null-1 success: 1
32314
UPDATE t1 SET f_int1 = -@max_row
32315
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32316
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32318
# check null-2 success: 1
32319
UPDATE t1 SET f_int1 = NULL
32320
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32321
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32323
# check null-3 success: 1
32325
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32326
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32328
# check null-4 success: 1
32330
WHERE f_int1 = 0 AND f_int2 = 0
32331
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32332
AND f_charbig = '#NULL#';
32334
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32335
SELECT f_int1, f_int1, '', '', 'was inserted'
32336
FROM t0_template source_tab
32337
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32339
# check transactions-1 success: 1
32342
# check transactions-2 success: 1
32345
# check transactions-3 success: 1
32346
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32350
# check transactions-4 success: 1
32351
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32352
SELECT f_int1, f_int1, '', '', 'was inserted'
32353
FROM t0_template source_tab
32354
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32356
# check transactions-5 success: 1
32359
# check transactions-6 success: 1
32360
# INFO: Storage engine used for t1 seems to be transactional.
32363
# check transactions-7 success: 1
32364
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32366
SET @@session.sql_mode = 'traditional';
32367
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32368
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32369
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32370
'', '', 'was inserted' FROM t0_template
32371
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32372
ERROR 22012: Division by 0
32375
# check transactions-8 success: 1
32376
# INFO: Storage engine used for t1 seems to be able to revert
32377
# changes made by the failing statement.
32378
SET @@session.sql_mode = '';
32380
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32382
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32384
# check special-1 success: 1
32385
UPDATE t1 SET f_charbig = '';
32387
# check special-2 success: 1
32388
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32389
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32390
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32391
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32392
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32393
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32394
'just inserted' FROM t0_template
32395
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32396
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
32398
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32399
f_charbig = 'updated by trigger'
32400
WHERE f_int1 = new.f_int1;
32402
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32403
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32404
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32406
# check trigger-1 success: 1
32407
DROP TRIGGER trg_1;
32408
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32409
f_int2 = CAST(f_char1 AS SIGNED INT),
32410
f_charbig = 'just inserted'
32411
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32413
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32414
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32415
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32416
'just inserted' FROM t0_template
32417
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32418
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
32420
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32421
f_charbig = 'updated by trigger'
32422
WHERE f_int1 = new.f_int1;
32424
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32425
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32426
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32428
# check trigger-2 success: 1
32429
DROP TRIGGER trg_1;
32430
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32431
f_int2 = CAST(f_char1 AS SIGNED INT),
32432
f_charbig = 'just inserted'
32433
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32435
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32436
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32437
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32438
'just inserted' FROM t0_template
32439
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32440
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32442
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32443
f_charbig = 'updated by trigger'
32444
WHERE f_int1 = new.f_int1;
32446
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32447
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32449
# check trigger-3 success: 1
32450
DROP TRIGGER trg_1;
32451
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32452
f_int2 = CAST(f_char1 AS SIGNED INT),
32453
f_charbig = 'just inserted'
32454
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32456
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32457
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32458
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32459
'just inserted' FROM t0_template
32460
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32461
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32463
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32464
f_charbig = 'updated by trigger'
32465
WHERE f_int1 = - old.f_int1;
32467
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32468
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32470
# check trigger-4 success: 1
32471
DROP TRIGGER trg_1;
32472
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32473
f_int2 = CAST(f_char1 AS SIGNED INT),
32474
f_charbig = 'just inserted'
32475
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32477
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32478
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32479
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32480
'just inserted' FROM t0_template
32481
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32482
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32484
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32485
f_charbig = 'updated by trigger'
32486
WHERE f_int1 = new.f_int1;
32488
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32489
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32491
# check trigger-5 success: 1
32492
DROP TRIGGER trg_1;
32493
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32494
f_int2 = CAST(f_char1 AS SIGNED INT),
32495
f_charbig = 'just inserted'
32496
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32498
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32499
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32500
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32501
'just inserted' FROM t0_template
32502
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32503
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32505
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32506
f_charbig = 'updated by trigger'
32507
WHERE f_int1 = - old.f_int1;
32509
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32510
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32512
# check trigger-6 success: 1
32513
DROP TRIGGER trg_1;
32514
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32515
f_int2 = CAST(f_char1 AS SIGNED INT),
32516
f_charbig = 'just inserted'
32517
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32519
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32520
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32521
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32522
'just inserted' FROM t0_template
32523
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32524
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32526
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32527
f_charbig = 'updated by trigger'
32528
WHERE f_int1 = - old.f_int1;
32531
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32533
# check trigger-7 success: 1
32534
DROP TRIGGER trg_1;
32535
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32536
f_int2 = CAST(f_char1 AS SIGNED INT),
32537
f_charbig = 'just inserted'
32538
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32540
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32541
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32542
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32543
'just inserted' FROM t0_template
32544
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32545
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32547
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32548
f_charbig = 'updated by trigger'
32549
WHERE f_int1 = - old.f_int1;
32552
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32554
# check trigger-8 success: 1
32555
DROP TRIGGER trg_1;
32556
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32557
f_int2 = CAST(f_char1 AS SIGNED INT),
32558
f_charbig = 'just inserted'
32559
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32561
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32563
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32564
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32566
SET new.f_int1 = old.f_int1 + @max_row,
32567
new.f_int2 = old.f_int2 - @max_row,
32568
new.f_charbig = '####updated per update trigger####';
32571
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32572
f_charbig = '####updated per update statement itself####';
32574
# check trigger-9 success: 1
32575
DROP TRIGGER trg_2;
32576
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32577
f_int2 = CAST(f_char1 AS SIGNED INT),
32578
f_charbig = CONCAT('===',f_char1,'===');
32579
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32581
SET new.f_int1 = new.f_int1 + @max_row,
32582
new.f_int2 = new.f_int2 - @max_row,
32583
new.f_charbig = '####updated per update trigger####';
32586
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32587
f_charbig = '####updated per update statement itself####';
32589
# check trigger-10 success: 1
32590
DROP TRIGGER trg_2;
32591
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32592
f_int2 = CAST(f_char1 AS SIGNED INT),
32593
f_charbig = CONCAT('===',f_char1,'===');
32594
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32596
SET new.f_int1 = @my_max1 + @counter,
32597
new.f_int2 = @my_min2 - @counter,
32598
new.f_charbig = '####updated per insert trigger####';
32599
SET @counter = @counter + 1;
32602
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32603
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32604
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32605
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32606
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32608
DROP TRIGGER trg_3;
32610
# check trigger-11 success: 1
32612
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32613
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32614
AND f_charbig = '####updated per insert trigger####';
32615
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32617
SET new.f_int1 = @my_max1 + @counter,
32618
new.f_int2 = @my_min2 - @counter,
32619
new.f_charbig = '####updated per insert trigger####';
32620
SET @counter = @counter + 1;
32623
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32624
INSERT INTO t1 (f_char1, f_char2, f_charbig)
32625
SELECT CAST(f_int1 AS CHAR),
32626
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32627
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32629
DROP TRIGGER trg_3;
32631
# check trigger-12 success: 1
32633
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32634
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32635
AND f_charbig = '####updated per insert trigger####';
32637
Table Op Msg_type Msg_text
32638
test.t1 analyze note The storage engine for the table doesn't support analyze
32639
CHECK TABLE t1 EXTENDED;
32640
Table Op Msg_type Msg_text
32641
test.t1 check note The storage engine for the table doesn't support check
32642
CHECKSUM TABLE t1 EXTENDED;
32644
test.t1 <some_value>
32646
Table Op Msg_type Msg_text
32647
test.t1 optimize note The storage engine for the table doesn't support optimize
32648
# check layout success: 1
32649
REPAIR TABLE t1 EXTENDED;
32650
Table Op Msg_type Msg_text
32651
test.t1 repair note The storage engine for the table doesn't support repair
32652
# check layout success: 1
32655
# check TRUNCATE success: 1
32656
# check layout success: 1
32657
# End usability test (inc/partition_check.inc)
32664
f_charbig VARCHAR(1000)
32665
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
32667
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
32668
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32669
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32670
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
32671
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
32672
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32673
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32674
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
32675
# Start usability test (inc/partition_check.inc)
32677
SHOW CREATE TABLE t1;
32679
t1 CREATE TABLE `t1` (
32680
`f_int1` int(11) DEFAULT NULL,
32681
`f_int2` int(11) DEFAULT NULL,
32682
`f_char1` char(20) DEFAULT NULL,
32683
`f_char2` char(20) DEFAULT NULL,
32684
`f_charbig` varchar(1000) DEFAULT NULL
32685
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
32687
# check prerequisites-1 success: 1
32688
# check COUNT(*) success: 1
32689
# check MIN/MAX(f_int1) success: 1
32690
# check MIN/MAX(f_int2) success: 1
32691
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32692
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32693
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
32694
WHERE f_int1 IN (2,3);
32695
# check prerequisites-3 success: 1
32696
DELETE FROM t1 WHERE f_charbig = 'delete me';
32697
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
32698
# check read via f_int1 success: 1
32699
# check read via f_int2 success: 1
32701
# check multiple-1 success: 1
32702
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
32704
# check multiple-2 success: 1
32705
INSERT INTO t1 SELECT * FROM t0_template
32706
WHERE MOD(f_int1,3) = 0;
32708
# check multiple-3 success: 1
32709
UPDATE t1 SET f_int1 = f_int1 + @max_row
32710
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
32711
AND @max_row_div2 + @max_row_div4;
32713
# check multiple-4 success: 1
32715
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32716
AND @max_row_div2 + @max_row_div4 + @max_row;
32718
# check multiple-5 success: 1
32719
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32721
SET f_int1 = @cur_value , f_int2 = @cur_value,
32722
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32723
f_charbig = '#SINGLE#';
32725
# check single-1 success: 1
32726
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32728
SET f_int1 = @cur_value , f_int2 = @cur_value,
32729
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32730
f_charbig = '#SINGLE#';
32732
# check single-2 success: 1
32733
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32734
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32735
UPDATE t1 SET f_int1 = @cur_value2
32736
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32738
# check single-3 success: 1
32739
SET @cur_value1= -1;
32740
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32741
UPDATE t1 SET f_int1 = @cur_value1
32742
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32744
# check single-4 success: 1
32745
SELECT MAX(f_int1) INTO @cur_value FROM t1;
32746
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32748
# check single-5 success: 1
32749
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32751
# check single-6 success: 1
32752
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32754
# check single-7 success: 1
32755
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32756
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32757
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32758
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32759
f_charbig = '#NULL#';
32761
SET f_int1 = NULL , f_int2 = -@max_row,
32762
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32763
f_charbig = '#NULL#';
32764
# check null success: 1
32766
# check null-1 success: 1
32767
UPDATE t1 SET f_int1 = -@max_row
32768
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32769
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32771
# check null-2 success: 1
32772
UPDATE t1 SET f_int1 = NULL
32773
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32774
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32776
# check null-3 success: 1
32778
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32779
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32781
# check null-4 success: 1
32783
WHERE f_int1 = 0 AND f_int2 = 0
32784
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32785
AND f_charbig = '#NULL#';
32787
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32788
SELECT f_int1, f_int1, '', '', 'was inserted'
32789
FROM t0_template source_tab
32790
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32792
# check transactions-1 success: 1
32795
# check transactions-2 success: 1
32798
# check transactions-3 success: 1
32799
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32803
# check transactions-4 success: 1
32804
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32805
SELECT f_int1, f_int1, '', '', 'was inserted'
32806
FROM t0_template source_tab
32807
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32809
# check transactions-5 success: 1
32812
# check transactions-6 success: 1
32813
# INFO: Storage engine used for t1 seems to be transactional.
32816
# check transactions-7 success: 1
32817
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32819
SET @@session.sql_mode = 'traditional';
32820
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32821
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32822
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32823
'', '', 'was inserted' FROM t0_template
32824
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32825
ERROR 22012: Division by 0
32828
# check transactions-8 success: 1
32829
# INFO: Storage engine used for t1 seems to be able to revert
32830
# changes made by the failing statement.
32831
SET @@session.sql_mode = '';
32833
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32835
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32837
# check special-1 success: 1
32838
UPDATE t1 SET f_charbig = '';
32840
# check special-2 success: 1
32841
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32842
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32843
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32844
WHERE 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 BEFORE 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-1 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 AFTER INSERT 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
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32878
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32879
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32881
# check trigger-2 success: 1
32882
DROP TRIGGER trg_1;
32883
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32884
f_int2 = CAST(f_char1 AS SIGNED INT),
32885
f_charbig = 'just inserted'
32886
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32888
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32889
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32890
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32891
'just inserted' FROM t0_template
32892
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32893
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32895
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32896
f_charbig = 'updated by trigger'
32897
WHERE f_int1 = new.f_int1;
32899
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32900
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32902
# check trigger-3 success: 1
32903
DROP TRIGGER trg_1;
32904
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32905
f_int2 = CAST(f_char1 AS SIGNED INT),
32906
f_charbig = 'just inserted'
32907
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32909
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32910
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32911
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32912
'just inserted' FROM t0_template
32913
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32914
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32916
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32917
f_charbig = 'updated by trigger'
32918
WHERE f_int1 = - old.f_int1;
32920
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32921
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32923
# check trigger-4 success: 1
32924
DROP TRIGGER trg_1;
32925
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32926
f_int2 = CAST(f_char1 AS SIGNED INT),
32927
f_charbig = 'just inserted'
32928
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32930
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32931
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32932
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32933
'just inserted' FROM t0_template
32934
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32935
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32937
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32938
f_charbig = 'updated by trigger'
32939
WHERE f_int1 = new.f_int1;
32941
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32942
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32944
# check trigger-5 success: 1
32945
DROP TRIGGER trg_1;
32946
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32947
f_int2 = CAST(f_char1 AS SIGNED INT),
32948
f_charbig = 'just inserted'
32949
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32951
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32952
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32953
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32954
'just inserted' FROM t0_template
32955
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32956
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32958
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32959
f_charbig = 'updated by trigger'
32960
WHERE f_int1 = - old.f_int1;
32962
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32963
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32965
# check trigger-6 success: 1
32966
DROP TRIGGER trg_1;
32967
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32968
f_int2 = CAST(f_char1 AS SIGNED INT),
32969
f_charbig = 'just inserted'
32970
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32972
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32973
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32974
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32975
'just inserted' FROM t0_template
32976
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32977
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32979
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32980
f_charbig = 'updated by trigger'
32981
WHERE f_int1 = - old.f_int1;
32984
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32986
# check trigger-7 success: 1
32987
DROP TRIGGER trg_1;
32988
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32989
f_int2 = CAST(f_char1 AS SIGNED INT),
32990
f_charbig = 'just inserted'
32991
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32993
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32994
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32995
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32996
'just inserted' FROM t0_template
32997
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32998
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33000
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33001
f_charbig = 'updated by trigger'
33002
WHERE f_int1 = - old.f_int1;
33005
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33007
# check trigger-8 success: 1
33008
DROP TRIGGER trg_1;
33009
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33010
f_int2 = CAST(f_char1 AS SIGNED INT),
33011
f_charbig = 'just inserted'
33012
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33014
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33016
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33017
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33019
SET new.f_int1 = old.f_int1 + @max_row,
33020
new.f_int2 = old.f_int2 - @max_row,
33021
new.f_charbig = '####updated per update trigger####';
33024
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33025
f_charbig = '####updated per update statement itself####';
33027
# check trigger-9 success: 1
33028
DROP TRIGGER trg_2;
33029
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33030
f_int2 = CAST(f_char1 AS SIGNED INT),
33031
f_charbig = CONCAT('===',f_char1,'===');
33032
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33034
SET new.f_int1 = new.f_int1 + @max_row,
33035
new.f_int2 = new.f_int2 - @max_row,
33036
new.f_charbig = '####updated per update trigger####';
33039
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33040
f_charbig = '####updated per update statement itself####';
33042
# check trigger-10 success: 1
33043
DROP TRIGGER trg_2;
33044
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33045
f_int2 = CAST(f_char1 AS SIGNED INT),
33046
f_charbig = CONCAT('===',f_char1,'===');
33047
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33049
SET new.f_int1 = @my_max1 + @counter,
33050
new.f_int2 = @my_min2 - @counter,
33051
new.f_charbig = '####updated per insert trigger####';
33052
SET @counter = @counter + 1;
33055
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33056
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33057
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33058
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33059
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33061
DROP TRIGGER trg_3;
33063
# check trigger-11 success: 1
33065
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33066
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33067
AND f_charbig = '####updated per insert trigger####';
33068
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33070
SET new.f_int1 = @my_max1 + @counter,
33071
new.f_int2 = @my_min2 - @counter,
33072
new.f_charbig = '####updated per insert trigger####';
33073
SET @counter = @counter + 1;
33076
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33077
INSERT INTO t1 (f_char1, f_char2, f_charbig)
33078
SELECT CAST(f_int1 AS CHAR),
33079
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33080
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33082
DROP TRIGGER trg_3;
33084
# check trigger-12 success: 1
33086
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33087
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33088
AND f_charbig = '####updated per insert trigger####';
33090
Table Op Msg_type Msg_text
33091
test.t1 analyze note The storage engine for the table doesn't support analyze
33092
CHECK TABLE t1 EXTENDED;
33093
Table Op Msg_type Msg_text
33094
test.t1 check note The storage engine for the table doesn't support check
33095
CHECKSUM TABLE t1 EXTENDED;
33097
test.t1 <some_value>
33099
Table Op Msg_type Msg_text
33100
test.t1 optimize note The storage engine for the table doesn't support optimize
33101
# check layout success: 1
33102
REPAIR TABLE t1 EXTENDED;
33103
Table Op Msg_type Msg_text
33104
test.t1 repair note The storage engine for the table doesn't support repair
33105
# check layout success: 1
33108
# check TRUNCATE success: 1
33109
# check layout success: 1
33110
# End usability test (inc/partition_check.inc)
33117
f_charbig VARCHAR(1000)
33118
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
33120
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
33121
(PARTITION part_3 VALUES IN (-3),
33122
PARTITION part_2 VALUES IN (-2),
33123
PARTITION part_1 VALUES IN (-1),
33124
PARTITION part_N VALUES IN (NULL),
33125
PARTITION part0 VALUES IN (0),
33126
PARTITION part1 VALUES IN (1),
33127
PARTITION part2 VALUES IN (2),
33128
PARTITION part3 VALUES IN (3));
33129
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33130
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33131
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
33132
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
33133
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33134
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33135
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
33136
# Start usability test (inc/partition_check.inc)
33138
SHOW CREATE TABLE t1;
33140
t1 CREATE TABLE `t1` (
33141
`f_int1` int(11) DEFAULT NULL,
33142
`f_int2` int(11) DEFAULT NULL,
33143
`f_char1` char(20) DEFAULT NULL,
33144
`f_char2` char(20) DEFAULT NULL,
33145
`f_charbig` varchar(1000) DEFAULT NULL
33146
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,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) */
33148
# check prerequisites-1 success: 1
33149
# check COUNT(*) success: 1
33150
# check MIN/MAX(f_int1) success: 1
33151
# check MIN/MAX(f_int2) success: 1
33152
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33153
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33154
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
33155
WHERE f_int1 IN (2,3);
33156
# check prerequisites-3 success: 1
33157
DELETE FROM t1 WHERE f_charbig = 'delete me';
33158
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
33159
# check read via f_int1 success: 1
33160
# check read via f_int2 success: 1
33162
# check multiple-1 success: 1
33163
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
33165
# check multiple-2 success: 1
33166
INSERT INTO t1 SELECT * FROM t0_template
33167
WHERE MOD(f_int1,3) = 0;
33169
# check multiple-3 success: 1
33170
UPDATE t1 SET f_int1 = f_int1 + @max_row
33171
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
33172
AND @max_row_div2 + @max_row_div4;
33174
# check multiple-4 success: 1
33176
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
33177
AND @max_row_div2 + @max_row_div4 + @max_row;
33179
# check multiple-5 success: 1
33180
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
33182
SET f_int1 = @cur_value , f_int2 = @cur_value,
33183
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33184
f_charbig = '#SINGLE#';
33186
# check single-1 success: 1
33187
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
33189
SET f_int1 = @cur_value , f_int2 = @cur_value,
33190
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33191
f_charbig = '#SINGLE#';
33193
# check single-2 success: 1
33194
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
33195
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
33196
UPDATE t1 SET f_int1 = @cur_value2
33197
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
33199
# check single-3 success: 1
33200
SET @cur_value1= -1;
33201
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
33202
UPDATE t1 SET f_int1 = @cur_value1
33203
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
33205
# check single-4 success: 1
33206
SELECT MAX(f_int1) INTO @cur_value FROM t1;
33207
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
33209
# check single-5 success: 1
33210
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
33212
# check single-6 success: 1
33213
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
33215
# check single-7 success: 1
33216
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
33217
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
33218
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
33219
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
33220
f_charbig = '#NULL#';
33222
SET f_int1 = NULL , f_int2 = -@max_row,
33223
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
33224
f_charbig = '#NULL#';
33225
# check null success: 1
33227
# check null-1 success: 1
33228
UPDATE t1 SET f_int1 = -@max_row
33229
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33230
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33232
# check null-2 success: 1
33233
UPDATE t1 SET f_int1 = NULL
33234
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33235
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33237
# check null-3 success: 1
33239
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33240
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33242
# check null-4 success: 1
33244
WHERE f_int1 = 0 AND f_int2 = 0
33245
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
33246
AND f_charbig = '#NULL#';
33248
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33249
SELECT f_int1, f_int1, '', '', 'was inserted'
33250
FROM t0_template source_tab
33251
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33253
# check transactions-1 success: 1
33256
# check transactions-2 success: 1
33259
# check transactions-3 success: 1
33260
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33264
# check transactions-4 success: 1
33265
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33266
SELECT f_int1, f_int1, '', '', 'was inserted'
33267
FROM t0_template source_tab
33268
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33270
# check transactions-5 success: 1
33273
# check transactions-6 success: 1
33274
# INFO: Storage engine used for t1 seems to be transactional.
33277
# check transactions-7 success: 1
33278
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33280
SET @@session.sql_mode = 'traditional';
33281
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
33282
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33283
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
33284
'', '', 'was inserted' FROM t0_template
33285
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33286
ERROR 22012: Division by 0
33289
# check transactions-8 success: 1
33290
# INFO: Storage engine used for t1 seems to be able to revert
33291
# changes made by the failing statement.
33292
SET @@session.sql_mode = '';
33294
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33296
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33298
# check special-1 success: 1
33299
UPDATE t1 SET f_charbig = '';
33301
# check special-2 success: 1
33302
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33303
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33304
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33305
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33306
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33307
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33308
'just inserted' FROM t0_template
33309
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33310
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
33312
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33313
f_charbig = 'updated by trigger'
33314
WHERE f_int1 = new.f_int1;
33316
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33317
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33320
# check trigger-1 success: 1
33321
DROP TRIGGER trg_1;
33322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33323
f_int2 = CAST(f_char1 AS SIGNED INT),
33324
f_charbig = 'just inserted'
33325
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33327
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33328
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33329
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33330
'just inserted' FROM t0_template
33331
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33332
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
33334
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33335
f_charbig = 'updated by trigger'
33336
WHERE f_int1 = new.f_int1;
33338
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33339
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33340
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33342
# check trigger-2 success: 1
33343
DROP TRIGGER trg_1;
33344
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33345
f_int2 = CAST(f_char1 AS SIGNED INT),
33346
f_charbig = 'just inserted'
33347
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33349
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33350
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33351
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33352
'just inserted' FROM t0_template
33353
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33354
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33356
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33357
f_charbig = 'updated by trigger'
33358
WHERE f_int1 = new.f_int1;
33360
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33361
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33363
# check trigger-3 success: 1
33364
DROP TRIGGER trg_1;
33365
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33366
f_int2 = CAST(f_char1 AS SIGNED INT),
33367
f_charbig = 'just inserted'
33368
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33370
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33371
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33372
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33373
'just inserted' FROM t0_template
33374
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33375
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33377
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33378
f_charbig = 'updated by trigger'
33379
WHERE f_int1 = - old.f_int1;
33381
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33382
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33384
# check trigger-4 success: 1
33385
DROP TRIGGER trg_1;
33386
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33387
f_int2 = CAST(f_char1 AS SIGNED INT),
33388
f_charbig = 'just inserted'
33389
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33391
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33392
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33393
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33394
'just inserted' FROM t0_template
33395
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33396
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33398
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33399
f_charbig = 'updated by trigger'
33400
WHERE f_int1 = new.f_int1;
33402
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33403
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33405
# check trigger-5 success: 1
33406
DROP TRIGGER trg_1;
33407
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33408
f_int2 = CAST(f_char1 AS SIGNED INT),
33409
f_charbig = 'just inserted'
33410
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33412
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33413
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33414
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33415
'just inserted' FROM t0_template
33416
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33417
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33419
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33420
f_charbig = 'updated by trigger'
33421
WHERE f_int1 = - old.f_int1;
33423
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33424
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33426
# check trigger-6 success: 1
33427
DROP TRIGGER trg_1;
33428
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33429
f_int2 = CAST(f_char1 AS SIGNED INT),
33430
f_charbig = 'just inserted'
33431
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33433
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33434
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33435
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33436
'just inserted' FROM t0_template
33437
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33438
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
33440
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33441
f_charbig = 'updated by trigger'
33442
WHERE f_int1 = - old.f_int1;
33445
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33447
# check trigger-7 success: 1
33448
DROP TRIGGER trg_1;
33449
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33450
f_int2 = CAST(f_char1 AS SIGNED INT),
33451
f_charbig = 'just inserted'
33452
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33454
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33455
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33456
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33457
'just inserted' FROM t0_template
33458
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33459
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33461
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33462
f_charbig = 'updated by trigger'
33463
WHERE f_int1 = - old.f_int1;
33466
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33468
# check trigger-8 success: 1
33469
DROP TRIGGER trg_1;
33470
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33471
f_int2 = CAST(f_char1 AS SIGNED INT),
33472
f_charbig = 'just inserted'
33473
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33475
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33477
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33478
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33480
SET new.f_int1 = old.f_int1 + @max_row,
33481
new.f_int2 = old.f_int2 - @max_row,
33482
new.f_charbig = '####updated per update trigger####';
33485
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33486
f_charbig = '####updated per update statement itself####';
33488
# check trigger-9 success: 1
33489
DROP TRIGGER trg_2;
33490
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33491
f_int2 = CAST(f_char1 AS SIGNED INT),
33492
f_charbig = CONCAT('===',f_char1,'===');
33493
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33495
SET new.f_int1 = new.f_int1 + @max_row,
33496
new.f_int2 = new.f_int2 - @max_row,
33497
new.f_charbig = '####updated per update trigger####';
33500
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33501
f_charbig = '####updated per update statement itself####';
33503
# check trigger-10 success: 1
33504
DROP TRIGGER trg_2;
33505
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33506
f_int2 = CAST(f_char1 AS SIGNED INT),
33507
f_charbig = CONCAT('===',f_char1,'===');
33508
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33510
SET new.f_int1 = @my_max1 + @counter,
33511
new.f_int2 = @my_min2 - @counter,
33512
new.f_charbig = '####updated per insert trigger####';
33513
SET @counter = @counter + 1;
33516
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33517
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33518
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33519
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33520
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33522
DROP TRIGGER trg_3;
33524
# check trigger-11 success: 1
33526
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33527
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33528
AND f_charbig = '####updated per insert trigger####';
33529
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33531
SET new.f_int1 = @my_max1 + @counter,
33532
new.f_int2 = @my_min2 - @counter,
33533
new.f_charbig = '####updated per insert trigger####';
33534
SET @counter = @counter + 1;
33537
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33538
INSERT INTO t1 (f_char1, f_char2, f_charbig)
33539
SELECT CAST(f_int1 AS CHAR),
33540
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33541
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33543
DROP TRIGGER trg_3;
33545
# check trigger-12 success: 1
33547
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33548
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33549
AND f_charbig = '####updated per insert trigger####';
33551
Table Op Msg_type Msg_text
33552
test.t1 analyze note The storage engine for the table doesn't support analyze
33553
CHECK TABLE t1 EXTENDED;
33554
Table Op Msg_type Msg_text
33555
test.t1 check note The storage engine for the table doesn't support check
33556
CHECKSUM TABLE t1 EXTENDED;
33558
test.t1 <some_value>
33560
Table Op Msg_type Msg_text
33561
test.t1 optimize note The storage engine for the table doesn't support optimize
33562
# check layout success: 1
33563
REPAIR TABLE t1 EXTENDED;
33564
Table Op Msg_type Msg_text
33565
test.t1 repair note The storage engine for the table doesn't support repair
33566
# check layout success: 1
33569
# check TRUNCATE success: 1
33570
# check layout success: 1
33571
# End usability test (inc/partition_check.inc)
33578
f_charbig VARCHAR(1000)
33579
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
33581
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
33582
(PARTITION parta VALUES LESS THAN (0),
33583
PARTITION partb VALUES LESS THAN (5),
33584
PARTITION partc VALUES LESS THAN (10),
33585
PARTITION partd VALUES LESS THAN (10 + 5),
33586
PARTITION parte VALUES LESS THAN (20),
33587
PARTITION partf VALUES LESS THAN (2147483646));
33588
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33589
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33590
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
33591
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
33592
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33593
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33594
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
33595
# Start usability test (inc/partition_check.inc)
33597
SHOW CREATE TABLE t1;
33599
t1 CREATE TABLE `t1` (
33600
`f_int1` int(11) DEFAULT NULL,
33601
`f_int2` int(11) DEFAULT NULL,
33602
`f_char1` char(20) DEFAULT NULL,
33603
`f_char2` char(20) DEFAULT NULL,
33604
`f_charbig` varchar(1000) DEFAULT NULL
33605
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
33607
# check prerequisites-1 success: 1
33608
# check COUNT(*) success: 1
33609
# check MIN/MAX(f_int1) success: 1
33610
# check MIN/MAX(f_int2) success: 1
33611
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33612
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33613
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
33614
WHERE f_int1 IN (2,3);
33615
# check prerequisites-3 success: 1
33616
DELETE FROM t1 WHERE f_charbig = 'delete me';
33617
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
33618
# check read via f_int1 success: 1
33619
# check read via f_int2 success: 1
33621
# check multiple-1 success: 1
33622
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
33624
# check multiple-2 success: 1
33625
INSERT INTO t1 SELECT * FROM t0_template
33626
WHERE MOD(f_int1,3) = 0;
33628
# check multiple-3 success: 1
33629
UPDATE t1 SET f_int1 = f_int1 + @max_row
33630
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
33631
AND @max_row_div2 + @max_row_div4;
33633
# check multiple-4 success: 1
33635
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
33636
AND @max_row_div2 + @max_row_div4 + @max_row;
33638
# check multiple-5 success: 1
33639
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
33641
SET f_int1 = @cur_value , f_int2 = @cur_value,
33642
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33643
f_charbig = '#SINGLE#';
33645
# check single-1 success: 1
33646
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
33648
SET f_int1 = @cur_value , f_int2 = @cur_value,
33649
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33650
f_charbig = '#SINGLE#';
33652
# check single-2 success: 1
33653
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
33654
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
33655
UPDATE t1 SET f_int1 = @cur_value2
33656
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
33658
# check single-3 success: 1
33659
SET @cur_value1= -1;
33660
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
33661
UPDATE t1 SET f_int1 = @cur_value1
33662
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
33664
# check single-4 success: 1
33665
SELECT MAX(f_int1) INTO @cur_value FROM t1;
33666
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
33668
# check single-5 success: 1
33669
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
33671
# check single-6 success: 1
33672
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
33673
ERROR HY000: Table has no partition for value 2147483647
33674
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
33675
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
33676
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
33677
f_charbig = '#NULL#';
33679
SET f_int1 = NULL , f_int2 = -@max_row,
33680
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
33681
f_charbig = '#NULL#';
33682
# check null success: 1
33684
# check null-1 success: 1
33685
UPDATE t1 SET f_int1 = -@max_row
33686
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33687
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33689
# check null-2 success: 1
33690
UPDATE t1 SET f_int1 = NULL
33691
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33692
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33694
# check null-3 success: 1
33696
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33697
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33699
# check null-4 success: 1
33701
WHERE f_int1 = 0 AND f_int2 = 0
33702
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
33703
AND f_charbig = '#NULL#';
33705
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33706
SELECT f_int1, f_int1, '', '', 'was inserted'
33707
FROM t0_template source_tab
33708
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33710
# check transactions-1 success: 1
33713
# check transactions-2 success: 1
33716
# check transactions-3 success: 1
33717
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33721
# check transactions-4 success: 1
33722
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33723
SELECT f_int1, f_int1, '', '', 'was inserted'
33724
FROM t0_template source_tab
33725
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33727
# check transactions-5 success: 1
33730
# check transactions-6 success: 1
33731
# INFO: Storage engine used for t1 seems to be transactional.
33734
# check transactions-7 success: 1
33735
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33737
SET @@session.sql_mode = 'traditional';
33738
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
33739
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33740
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
33741
'', '', 'was inserted' FROM t0_template
33742
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33743
ERROR 22012: Division by 0
33746
# check transactions-8 success: 1
33747
# INFO: Storage engine used for t1 seems to be able to revert
33748
# changes made by the failing statement.
33749
SET @@session.sql_mode = '';
33751
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33753
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33755
# check special-1 success: 1
33756
UPDATE t1 SET f_charbig = '';
33758
# check special-2 success: 1
33759
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33760
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33761
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33762
WHERE 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 BEFORE 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-1 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 AFTER INSERT 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
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33796
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33797
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33799
# check trigger-2 success: 1
33800
DROP TRIGGER trg_1;
33801
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33802
f_int2 = CAST(f_char1 AS SIGNED INT),
33803
f_charbig = 'just inserted'
33804
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33806
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33807
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33808
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33809
'just inserted' FROM t0_template
33810
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33811
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33813
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33814
f_charbig = 'updated by trigger'
33815
WHERE f_int1 = new.f_int1;
33817
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33818
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33820
# check trigger-3 success: 1
33821
DROP TRIGGER trg_1;
33822
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33823
f_int2 = CAST(f_char1 AS SIGNED INT),
33824
f_charbig = 'just inserted'
33825
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33827
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33828
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33829
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33830
'just inserted' FROM t0_template
33831
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33832
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33834
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33835
f_charbig = 'updated by trigger'
33836
WHERE f_int1 = - old.f_int1;
33838
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33839
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33841
# check trigger-4 success: 1
33842
DROP TRIGGER trg_1;
33843
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33844
f_int2 = CAST(f_char1 AS SIGNED INT),
33845
f_charbig = 'just inserted'
33846
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33848
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33849
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33850
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33851
'just inserted' FROM t0_template
33852
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33853
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33855
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33856
f_charbig = 'updated by trigger'
33857
WHERE f_int1 = new.f_int1;
33859
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33860
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33862
# check trigger-5 success: 1
33863
DROP TRIGGER trg_1;
33864
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33865
f_int2 = CAST(f_char1 AS SIGNED INT),
33866
f_charbig = 'just inserted'
33867
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33869
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33870
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33871
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33872
'just inserted' FROM t0_template
33873
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33874
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33876
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33877
f_charbig = 'updated by trigger'
33878
WHERE f_int1 = - old.f_int1;
33880
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33881
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33883
# check trigger-6 success: 1
33884
DROP TRIGGER trg_1;
33885
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33886
f_int2 = CAST(f_char1 AS SIGNED INT),
33887
f_charbig = 'just inserted'
33888
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33890
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33891
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33892
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33893
'just inserted' FROM t0_template
33894
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33895
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
33897
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33898
f_charbig = 'updated by trigger'
33899
WHERE f_int1 = - old.f_int1;
33902
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33904
# check trigger-7 success: 1
33905
DROP TRIGGER trg_1;
33906
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33907
f_int2 = CAST(f_char1 AS SIGNED INT),
33908
f_charbig = 'just inserted'
33909
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33911
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33912
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33913
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33914
'just inserted' FROM t0_template
33915
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33916
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33918
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33919
f_charbig = 'updated by trigger'
33920
WHERE f_int1 = - old.f_int1;
33923
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33925
# check trigger-8 success: 1
33926
DROP TRIGGER trg_1;
33927
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33928
f_int2 = CAST(f_char1 AS SIGNED INT),
33929
f_charbig = 'just inserted'
33930
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33932
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33934
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33935
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33937
SET new.f_int1 = old.f_int1 + @max_row,
33938
new.f_int2 = old.f_int2 - @max_row,
33939
new.f_charbig = '####updated per update trigger####';
33942
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33943
f_charbig = '####updated per update statement itself####';
33945
# check trigger-9 success: 1
33946
DROP TRIGGER trg_2;
33947
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33948
f_int2 = CAST(f_char1 AS SIGNED INT),
33949
f_charbig = CONCAT('===',f_char1,'===');
33950
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33952
SET new.f_int1 = new.f_int1 + @max_row,
33953
new.f_int2 = new.f_int2 - @max_row,
33954
new.f_charbig = '####updated per update trigger####';
33957
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33958
f_charbig = '####updated per update statement itself####';
33960
# check trigger-10 success: 1
33961
DROP TRIGGER trg_2;
33962
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33963
f_int2 = CAST(f_char1 AS SIGNED INT),
33964
f_charbig = CONCAT('===',f_char1,'===');
33965
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33967
SET new.f_int1 = @my_max1 + @counter,
33968
new.f_int2 = @my_min2 - @counter,
33969
new.f_charbig = '####updated per insert trigger####';
33970
SET @counter = @counter + 1;
33973
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33974
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33975
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33976
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33977
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33979
DROP TRIGGER trg_3;
33981
# check trigger-11 success: 1
33983
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33984
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33985
AND f_charbig = '####updated per insert trigger####';
33986
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33988
SET new.f_int1 = @my_max1 + @counter,
33989
new.f_int2 = @my_min2 - @counter,
33990
new.f_charbig = '####updated per insert trigger####';
33991
SET @counter = @counter + 1;
33994
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33995
INSERT INTO t1 (f_char1, f_char2, f_charbig)
33996
SELECT CAST(f_int1 AS CHAR),
33997
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33998
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34000
DROP TRIGGER trg_3;
34002
# check trigger-12 success: 1
34004
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34005
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34006
AND f_charbig = '####updated per insert trigger####';
34008
Table Op Msg_type Msg_text
34009
test.t1 analyze note The storage engine for the table doesn't support analyze
34010
CHECK TABLE t1 EXTENDED;
34011
Table Op Msg_type Msg_text
34012
test.t1 check note The storage engine for the table doesn't support check
34013
CHECKSUM TABLE t1 EXTENDED;
34015
test.t1 <some_value>
34017
Table Op Msg_type Msg_text
34018
test.t1 optimize note The storage engine for the table doesn't support optimize
34019
# check layout success: 1
34020
REPAIR TABLE t1 EXTENDED;
34021
Table Op Msg_type Msg_text
34022
test.t1 repair note The storage engine for the table doesn't support repair
34023
# check layout success: 1
34026
# check TRUNCATE success: 1
34027
# check layout success: 1
34028
# End usability test (inc/partition_check.inc)
34035
f_charbig VARCHAR(1000)
34036
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
34038
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
34039
(PARTITION parta VALUES LESS THAN (0),
34040
PARTITION partb VALUES LESS THAN (5),
34041
PARTITION partc VALUES LESS THAN (10),
34042
PARTITION partd VALUES LESS THAN (2147483646));
34043
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34044
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34045
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34046
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
34047
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34048
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34049
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34050
# Start usability test (inc/partition_check.inc)
34052
SHOW CREATE TABLE t1;
34054
t1 CREATE TABLE `t1` (
34055
`f_int1` int(11) DEFAULT NULL,
34056
`f_int2` int(11) DEFAULT NULL,
34057
`f_char1` char(20) DEFAULT NULL,
34058
`f_char2` char(20) DEFAULT NULL,
34059
`f_charbig` varchar(1000) DEFAULT NULL
34060
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
34062
# check prerequisites-1 success: 1
34063
# check COUNT(*) success: 1
34064
# check MIN/MAX(f_int1) success: 1
34065
# check MIN/MAX(f_int2) success: 1
34066
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34067
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34068
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34069
WHERE f_int1 IN (2,3);
34070
# check prerequisites-3 success: 1
34071
DELETE FROM t1 WHERE f_charbig = 'delete me';
34072
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
34073
# check read via f_int1 success: 1
34074
# check read via f_int2 success: 1
34076
# check multiple-1 success: 1
34077
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34079
# check multiple-2 success: 1
34080
INSERT INTO t1 SELECT * FROM t0_template
34081
WHERE MOD(f_int1,3) = 0;
34083
# check multiple-3 success: 1
34084
UPDATE t1 SET f_int1 = f_int1 + @max_row
34085
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
34086
AND @max_row_div2 + @max_row_div4;
34088
# check multiple-4 success: 1
34090
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
34091
AND @max_row_div2 + @max_row_div4 + @max_row;
34093
# check multiple-5 success: 1
34094
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
34096
SET f_int1 = @cur_value , f_int2 = @cur_value,
34097
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34098
f_charbig = '#SINGLE#';
34100
# check single-1 success: 1
34101
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
34103
SET f_int1 = @cur_value , f_int2 = @cur_value,
34104
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34105
f_charbig = '#SINGLE#';
34107
# check single-2 success: 1
34108
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
34109
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
34110
UPDATE t1 SET f_int1 = @cur_value2
34111
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
34113
# check single-3 success: 1
34114
SET @cur_value1= -1;
34115
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
34116
UPDATE t1 SET f_int1 = @cur_value1
34117
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
34119
# check single-4 success: 1
34120
SELECT MAX(f_int1) INTO @cur_value FROM t1;
34121
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
34123
# check single-5 success: 1
34124
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
34126
# check single-6 success: 1
34127
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
34128
ERROR HY000: Table has no partition for value 2147483647
34129
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
34130
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
34131
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
34132
f_charbig = '#NULL#';
34134
SET f_int1 = NULL , f_int2 = -@max_row,
34135
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
34136
f_charbig = '#NULL#';
34137
# check null success: 1
34139
# check null-1 success: 1
34140
UPDATE t1 SET f_int1 = -@max_row
34141
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34142
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34144
# check null-2 success: 1
34145
UPDATE t1 SET f_int1 = NULL
34146
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34147
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34149
# check null-3 success: 1
34151
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34152
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34154
# check null-4 success: 1
34156
WHERE f_int1 = 0 AND f_int2 = 0
34157
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
34158
AND f_charbig = '#NULL#';
34160
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34161
SELECT f_int1, f_int1, '', '', 'was inserted'
34162
FROM t0_template source_tab
34163
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34165
# check transactions-1 success: 1
34168
# check transactions-2 success: 1
34171
# check transactions-3 success: 1
34172
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34176
# check transactions-4 success: 1
34177
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34178
SELECT f_int1, f_int1, '', '', 'was inserted'
34179
FROM t0_template source_tab
34180
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34182
# check transactions-5 success: 1
34185
# check transactions-6 success: 1
34186
# INFO: Storage engine used for t1 seems to be transactional.
34189
# check transactions-7 success: 1
34190
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34192
SET @@session.sql_mode = 'traditional';
34193
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
34194
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34195
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
34196
'', '', 'was inserted' FROM t0_template
34197
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34198
ERROR 22012: Division by 0
34201
# check transactions-8 success: 1
34202
# INFO: Storage engine used for t1 seems to be able to revert
34203
# changes made by the failing statement.
34204
SET @@session.sql_mode = '';
34206
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34208
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
34210
# check special-1 success: 1
34211
UPDATE t1 SET f_charbig = '';
34213
# check special-2 success: 1
34214
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
34215
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34216
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
34217
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34218
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34219
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34220
'just inserted' FROM t0_template
34221
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34222
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
34224
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34225
f_charbig = 'updated by trigger'
34226
WHERE f_int1 = new.f_int1;
34228
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34229
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34230
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34232
# check trigger-1 success: 1
34233
DROP TRIGGER trg_1;
34234
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34235
f_int2 = CAST(f_char1 AS SIGNED INT),
34236
f_charbig = 'just inserted'
34237
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34239
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34240
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34241
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34242
'just inserted' FROM t0_template
34243
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34244
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
34246
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34247
f_charbig = 'updated by trigger'
34248
WHERE f_int1 = new.f_int1;
34250
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34251
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34252
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34254
# check trigger-2 success: 1
34255
DROP TRIGGER trg_1;
34256
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34257
f_int2 = CAST(f_char1 AS SIGNED INT),
34258
f_charbig = 'just inserted'
34259
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34261
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34262
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34263
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34264
'just inserted' FROM t0_template
34265
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34266
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34268
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34269
f_charbig = 'updated by trigger'
34270
WHERE f_int1 = new.f_int1;
34272
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34273
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34275
# check trigger-3 success: 1
34276
DROP TRIGGER trg_1;
34277
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34278
f_int2 = CAST(f_char1 AS SIGNED INT),
34279
f_charbig = 'just inserted'
34280
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34282
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34283
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34284
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34285
'just inserted' FROM t0_template
34286
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34287
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34289
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34290
f_charbig = 'updated by trigger'
34291
WHERE f_int1 = - old.f_int1;
34293
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34294
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34296
# check trigger-4 success: 1
34297
DROP TRIGGER trg_1;
34298
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34299
f_int2 = CAST(f_char1 AS SIGNED INT),
34300
f_charbig = 'just inserted'
34301
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34303
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34304
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34305
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34306
'just inserted' FROM t0_template
34307
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34308
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34310
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34311
f_charbig = 'updated by trigger'
34312
WHERE f_int1 = new.f_int1;
34314
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34315
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34317
# check trigger-5 success: 1
34318
DROP TRIGGER trg_1;
34319
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34320
f_int2 = CAST(f_char1 AS SIGNED INT),
34321
f_charbig = 'just inserted'
34322
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34324
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34325
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34326
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34327
'just inserted' FROM t0_template
34328
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34329
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34331
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34332
f_charbig = 'updated by trigger'
34333
WHERE f_int1 = - old.f_int1;
34335
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34336
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34338
# check trigger-6 success: 1
34339
DROP TRIGGER trg_1;
34340
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34341
f_int2 = CAST(f_char1 AS SIGNED INT),
34342
f_charbig = 'just inserted'
34343
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34345
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34346
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34347
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34348
'just inserted' FROM t0_template
34349
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34350
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34352
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34353
f_charbig = 'updated by trigger'
34354
WHERE f_int1 = - old.f_int1;
34357
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34359
# check trigger-7 success: 1
34360
DROP TRIGGER trg_1;
34361
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34362
f_int2 = CAST(f_char1 AS SIGNED INT),
34363
f_charbig = 'just inserted'
34364
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34366
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34367
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34368
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34369
'just inserted' FROM t0_template
34370
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34371
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
34373
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34374
f_charbig = 'updated by trigger'
34375
WHERE f_int1 = - old.f_int1;
34378
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34380
# check trigger-8 success: 1
34381
DROP TRIGGER trg_1;
34382
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34383
f_int2 = CAST(f_char1 AS SIGNED INT),
34384
f_charbig = 'just inserted'
34385
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34387
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34389
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34390
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34392
SET new.f_int1 = old.f_int1 + @max_row,
34393
new.f_int2 = old.f_int2 - @max_row,
34394
new.f_charbig = '####updated per update trigger####';
34397
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34398
f_charbig = '####updated per update statement itself####';
34400
# check trigger-9 success: 1
34401
DROP TRIGGER trg_2;
34402
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34403
f_int2 = CAST(f_char1 AS SIGNED INT),
34404
f_charbig = CONCAT('===',f_char1,'===');
34405
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34407
SET new.f_int1 = new.f_int1 + @max_row,
34408
new.f_int2 = new.f_int2 - @max_row,
34409
new.f_charbig = '####updated per update trigger####';
34412
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34413
f_charbig = '####updated per update statement itself####';
34415
# check trigger-10 success: 1
34416
DROP TRIGGER trg_2;
34417
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34418
f_int2 = CAST(f_char1 AS SIGNED INT),
34419
f_charbig = CONCAT('===',f_char1,'===');
34420
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34422
SET new.f_int1 = @my_max1 + @counter,
34423
new.f_int2 = @my_min2 - @counter,
34424
new.f_charbig = '####updated per insert trigger####';
34425
SET @counter = @counter + 1;
34428
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34429
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34430
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34431
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34432
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34434
DROP TRIGGER trg_3;
34436
# check trigger-11 success: 1
34438
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34439
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34440
AND f_charbig = '####updated per insert trigger####';
34441
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34443
SET new.f_int1 = @my_max1 + @counter,
34444
new.f_int2 = @my_min2 - @counter,
34445
new.f_charbig = '####updated per insert trigger####';
34446
SET @counter = @counter + 1;
34449
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34450
INSERT INTO t1 (f_char1, f_char2, f_charbig)
34451
SELECT CAST(f_int1 AS CHAR),
34452
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34453
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34455
DROP TRIGGER trg_3;
34457
# check trigger-12 success: 1
34459
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34460
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34461
AND f_charbig = '####updated per insert trigger####';
34463
Table Op Msg_type Msg_text
34464
test.t1 analyze note The storage engine for the table doesn't support analyze
34465
CHECK TABLE t1 EXTENDED;
34466
Table Op Msg_type Msg_text
34467
test.t1 check note The storage engine for the table doesn't support check
34468
CHECKSUM TABLE t1 EXTENDED;
34470
test.t1 <some_value>
34472
Table Op Msg_type Msg_text
34473
test.t1 optimize note The storage engine for the table doesn't support optimize
34474
# check layout success: 1
34475
REPAIR TABLE t1 EXTENDED;
34476
Table Op Msg_type Msg_text
34477
test.t1 repair note The storage engine for the table doesn't support repair
34478
# check layout success: 1
34481
# check TRUNCATE success: 1
34482
# check layout success: 1
34483
# End usability test (inc/partition_check.inc)
34490
f_charbig VARCHAR(1000)
34491
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
34493
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
34494
(PARTITION part1 VALUES LESS THAN (0)
34495
(SUBPARTITION subpart11, SUBPARTITION subpart12),
34496
PARTITION part2 VALUES LESS THAN (5)
34497
(SUBPARTITION subpart21, SUBPARTITION subpart22),
34498
PARTITION part3 VALUES LESS THAN (10)
34499
(SUBPARTITION subpart31, SUBPARTITION subpart32),
34500
PARTITION part4 VALUES LESS THAN (2147483646)
34501
(SUBPARTITION subpart41, SUBPARTITION subpart42));
34502
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34503
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34504
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34505
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
34506
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34507
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34508
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34509
# Start usability test (inc/partition_check.inc)
34511
SHOW CREATE TABLE t1;
34513
t1 CREATE TABLE `t1` (
34514
`f_int1` int(11) DEFAULT NULL,
34515
`f_int2` int(11) DEFAULT NULL,
34516
`f_char1` char(20) DEFAULT NULL,
34517
`f_char2` char(20) DEFAULT NULL,
34518
`f_charbig` varchar(1000) DEFAULT NULL
34519
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
34521
# check prerequisites-1 success: 1
34522
# check COUNT(*) success: 1
34523
# check MIN/MAX(f_int1) success: 1
34524
# check MIN/MAX(f_int2) success: 1
34525
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34526
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34527
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34528
WHERE f_int1 IN (2,3);
34529
# check prerequisites-3 success: 1
34530
DELETE FROM t1 WHERE f_charbig = 'delete me';
34531
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
34532
# check read via f_int1 success: 1
34533
# check read via f_int2 success: 1
34535
# check multiple-1 success: 1
34536
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34538
# check multiple-2 success: 1
34539
INSERT INTO t1 SELECT * FROM t0_template
34540
WHERE MOD(f_int1,3) = 0;
34542
# check multiple-3 success: 1
34543
UPDATE t1 SET f_int1 = f_int1 + @max_row
34544
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
34545
AND @max_row_div2 + @max_row_div4;
34547
# check multiple-4 success: 1
34549
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
34550
AND @max_row_div2 + @max_row_div4 + @max_row;
34552
# check multiple-5 success: 1
34553
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
34555
SET f_int1 = @cur_value , f_int2 = @cur_value,
34556
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34557
f_charbig = '#SINGLE#';
34559
# check single-1 success: 1
34560
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
34562
SET f_int1 = @cur_value , f_int2 = @cur_value,
34563
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34564
f_charbig = '#SINGLE#';
34566
# check single-2 success: 1
34567
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
34568
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
34569
UPDATE t1 SET f_int1 = @cur_value2
34570
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
34572
# check single-3 success: 1
34573
SET @cur_value1= -1;
34574
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
34575
UPDATE t1 SET f_int1 = @cur_value1
34576
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
34578
# check single-4 success: 1
34579
SELECT MAX(f_int1) INTO @cur_value FROM t1;
34580
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
34582
# check single-5 success: 1
34583
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
34585
# check single-6 success: 1
34586
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
34587
ERROR HY000: Table has no partition for value 2147483647
34588
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
34589
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
34590
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
34591
f_charbig = '#NULL#';
34593
SET f_int1 = NULL , f_int2 = -@max_row,
34594
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
34595
f_charbig = '#NULL#';
34596
# check null success: 1
34598
# check null-1 success: 1
34599
UPDATE t1 SET f_int1 = -@max_row
34600
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34601
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34603
# check null-2 success: 1
34604
UPDATE t1 SET f_int1 = NULL
34605
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34606
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34608
# check null-3 success: 1
34610
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34611
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34613
# check null-4 success: 1
34615
WHERE f_int1 = 0 AND f_int2 = 0
34616
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
34617
AND f_charbig = '#NULL#';
34619
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34620
SELECT f_int1, f_int1, '', '', 'was inserted'
34621
FROM t0_template source_tab
34622
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34624
# check transactions-1 success: 1
34627
# check transactions-2 success: 1
34630
# check transactions-3 success: 1
34631
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34635
# check transactions-4 success: 1
34636
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34637
SELECT f_int1, f_int1, '', '', 'was inserted'
34638
FROM t0_template source_tab
34639
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34641
# check transactions-5 success: 1
34644
# check transactions-6 success: 1
34645
# INFO: Storage engine used for t1 seems to be transactional.
34648
# check transactions-7 success: 1
34649
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34651
SET @@session.sql_mode = 'traditional';
34652
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
34653
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34654
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
34655
'', '', 'was inserted' FROM t0_template
34656
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34657
ERROR 22012: Division by 0
34660
# check transactions-8 success: 1
34661
# INFO: Storage engine used for t1 seems to be able to revert
34662
# changes made by the failing statement.
34663
SET @@session.sql_mode = '';
34665
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34667
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
34669
# check special-1 success: 1
34670
UPDATE t1 SET f_charbig = '';
34672
# check special-2 success: 1
34673
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
34674
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34675
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
34676
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34677
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34678
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34679
'just inserted' FROM t0_template
34680
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34681
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
34683
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34684
f_charbig = 'updated by trigger'
34685
WHERE f_int1 = new.f_int1;
34687
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34688
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34689
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34691
# check trigger-1 success: 1
34692
DROP TRIGGER trg_1;
34693
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34694
f_int2 = CAST(f_char1 AS SIGNED INT),
34695
f_charbig = 'just inserted'
34696
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34698
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34699
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34700
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34701
'just inserted' FROM t0_template
34702
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34703
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
34705
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34706
f_charbig = 'updated by trigger'
34707
WHERE f_int1 = new.f_int1;
34709
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34710
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34711
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34713
# check trigger-2 success: 1
34714
DROP TRIGGER trg_1;
34715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34716
f_int2 = CAST(f_char1 AS SIGNED INT),
34717
f_charbig = 'just inserted'
34718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34723
'just inserted' FROM t0_template
34724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34725
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34728
f_charbig = 'updated by trigger'
34729
WHERE f_int1 = new.f_int1;
34731
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34734
# check trigger-3 success: 1
34735
DROP TRIGGER trg_1;
34736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34737
f_int2 = CAST(f_char1 AS SIGNED INT),
34738
f_charbig = 'just inserted'
34739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34742
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34743
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34744
'just inserted' FROM t0_template
34745
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34746
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34748
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34749
f_charbig = 'updated by trigger'
34750
WHERE f_int1 = - old.f_int1;
34752
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34753
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34755
# check trigger-4 success: 1
34756
DROP TRIGGER trg_1;
34757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34758
f_int2 = CAST(f_char1 AS SIGNED INT),
34759
f_charbig = 'just inserted'
34760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34765
'just inserted' FROM t0_template
34766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34767
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34770
f_charbig = 'updated by trigger'
34771
WHERE f_int1 = new.f_int1;
34773
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34774
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34776
# check trigger-5 success: 1
34777
DROP TRIGGER trg_1;
34778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34779
f_int2 = CAST(f_char1 AS SIGNED INT),
34780
f_charbig = 'just inserted'
34781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34783
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34785
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34786
'just inserted' FROM t0_template
34787
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34788
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34790
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34791
f_charbig = 'updated by trigger'
34792
WHERE f_int1 = - old.f_int1;
34794
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34795
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34797
# check trigger-6 success: 1
34798
DROP TRIGGER trg_1;
34799
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34800
f_int2 = CAST(f_char1 AS SIGNED INT),
34801
f_charbig = 'just inserted'
34802
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34804
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34805
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34806
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34807
'just inserted' FROM t0_template
34808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34809
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34811
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34812
f_charbig = 'updated by trigger'
34813
WHERE f_int1 = - old.f_int1;
34816
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34818
# check trigger-7 success: 1
34819
DROP TRIGGER trg_1;
34820
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34821
f_int2 = CAST(f_char1 AS SIGNED INT),
34822
f_charbig = 'just inserted'
34823
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34825
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34826
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34827
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34828
'just inserted' FROM t0_template
34829
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34830
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
34832
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34833
f_charbig = 'updated by trigger'
34834
WHERE f_int1 = - old.f_int1;
34837
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34839
# check trigger-8 success: 1
34840
DROP TRIGGER trg_1;
34841
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34842
f_int2 = CAST(f_char1 AS SIGNED INT),
34843
f_charbig = 'just inserted'
34844
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34846
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34848
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34849
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34851
SET new.f_int1 = old.f_int1 + @max_row,
34852
new.f_int2 = old.f_int2 - @max_row,
34853
new.f_charbig = '####updated per update trigger####';
34856
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34857
f_charbig = '####updated per update statement itself####';
34859
# check trigger-9 success: 1
34860
DROP TRIGGER trg_2;
34861
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34862
f_int2 = CAST(f_char1 AS SIGNED INT),
34863
f_charbig = CONCAT('===',f_char1,'===');
34864
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34866
SET new.f_int1 = new.f_int1 + @max_row,
34867
new.f_int2 = new.f_int2 - @max_row,
34868
new.f_charbig = '####updated per update trigger####';
34871
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34872
f_charbig = '####updated per update statement itself####';
34874
# check trigger-10 success: 1
34875
DROP TRIGGER trg_2;
34876
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34877
f_int2 = CAST(f_char1 AS SIGNED INT),
34878
f_charbig = CONCAT('===',f_char1,'===');
34879
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34881
SET new.f_int1 = @my_max1 + @counter,
34882
new.f_int2 = @my_min2 - @counter,
34883
new.f_charbig = '####updated per insert trigger####';
34884
SET @counter = @counter + 1;
34887
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34888
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34889
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34890
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34891
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34893
DROP TRIGGER trg_3;
34895
# check trigger-11 success: 1
34897
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34898
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34899
AND f_charbig = '####updated per insert trigger####';
34900
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34902
SET new.f_int1 = @my_max1 + @counter,
34903
new.f_int2 = @my_min2 - @counter,
34904
new.f_charbig = '####updated per insert trigger####';
34905
SET @counter = @counter + 1;
34908
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34909
INSERT INTO t1 (f_char1, f_char2, f_charbig)
34910
SELECT CAST(f_int1 AS CHAR),
34911
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34912
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34914
DROP TRIGGER trg_3;
34916
# check trigger-12 success: 1
34918
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34919
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34920
AND f_charbig = '####updated per insert trigger####';
34922
Table Op Msg_type Msg_text
34923
test.t1 analyze note The storage engine for the table doesn't support analyze
34924
CHECK TABLE t1 EXTENDED;
34925
Table Op Msg_type Msg_text
34926
test.t1 check note The storage engine for the table doesn't support check
34927
CHECKSUM TABLE t1 EXTENDED;
34929
test.t1 <some_value>
34931
Table Op Msg_type Msg_text
34932
test.t1 optimize note The storage engine for the table doesn't support optimize
34933
# check layout success: 1
34934
REPAIR TABLE t1 EXTENDED;
34935
Table Op Msg_type Msg_text
34936
test.t1 repair note The storage engine for the table doesn't support repair
34937
# check layout success: 1
34940
# check TRUNCATE success: 1
34941
# check layout success: 1
34942
# End usability test (inc/partition_check.inc)
34949
f_charbig VARCHAR(1000)
34950
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
34952
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
34953
(PARTITION part1 VALUES IN (0)
34954
(SUBPARTITION sp11, SUBPARTITION sp12),
34955
PARTITION part2 VALUES IN (1)
34956
(SUBPARTITION sp21, SUBPARTITION sp22),
34957
PARTITION part3 VALUES IN (2)
34958
(SUBPARTITION sp31, SUBPARTITION sp32),
34959
PARTITION part4 VALUES IN (NULL)
34960
(SUBPARTITION sp41, SUBPARTITION sp42));
34961
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34962
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34963
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34964
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
34965
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34966
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34967
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34968
# Start usability test (inc/partition_check.inc)
34970
SHOW CREATE TABLE t1;
34972
t1 CREATE TABLE `t1` (
34973
`f_int1` int(11) DEFAULT NULL,
34974
`f_int2` int(11) DEFAULT NULL,
34975
`f_char1` char(20) DEFAULT NULL,
34976
`f_char2` char(20) DEFAULT NULL,
34977
`f_charbig` varchar(1000) DEFAULT NULL
34978
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
34980
# check prerequisites-1 success: 1
34981
# check COUNT(*) success: 1
34982
# check MIN/MAX(f_int1) success: 1
34983
# check MIN/MAX(f_int2) success: 1
34984
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34985
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34986
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34987
WHERE f_int1 IN (2,3);
34988
# check prerequisites-3 success: 1
34989
DELETE FROM t1 WHERE f_charbig = 'delete me';
34990
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
34991
# check read via f_int1 success: 1
34992
# check read via f_int2 success: 1
34994
# check multiple-1 success: 1
34995
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34997
# check multiple-2 success: 1
34998
INSERT INTO t1 SELECT * FROM t0_template
34999
WHERE MOD(f_int1,3) = 0;
35001
# check multiple-3 success: 1
35002
UPDATE t1 SET f_int1 = f_int1 + @max_row
35003
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
35004
AND @max_row_div2 + @max_row_div4;
35006
# check multiple-4 success: 1
35008
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
35009
AND @max_row_div2 + @max_row_div4 + @max_row;
35011
# check multiple-5 success: 1
35012
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
35014
SET f_int1 = @cur_value , f_int2 = @cur_value,
35015
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35016
f_charbig = '#SINGLE#';
35018
# check single-1 success: 1
35019
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
35021
SET f_int1 = @cur_value , f_int2 = @cur_value,
35022
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35023
f_charbig = '#SINGLE#';
35025
# check single-2 success: 1
35026
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
35027
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
35028
UPDATE t1 SET f_int1 = @cur_value2
35029
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
35031
# check single-3 success: 1
35032
SET @cur_value1= -1;
35033
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
35034
UPDATE t1 SET f_int1 = @cur_value1
35035
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
35037
# check single-4 success: 1
35038
SELECT MAX(f_int1) INTO @cur_value FROM t1;
35039
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
35041
# check single-5 success: 1
35042
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
35044
# check single-6 success: 1
35045
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
35047
# check single-7 success: 1
35048
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
35049
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
35050
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
35051
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
35052
f_charbig = '#NULL#';
35054
SET f_int1 = NULL , f_int2 = -@max_row,
35055
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
35056
f_charbig = '#NULL#';
35057
# check null success: 1
35059
# check null-1 success: 1
35060
UPDATE t1 SET f_int1 = -@max_row
35061
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35062
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35064
# check null-2 success: 1
35065
UPDATE t1 SET f_int1 = NULL
35066
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35067
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35069
# check null-3 success: 1
35071
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35072
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35074
# check null-4 success: 1
35076
WHERE f_int1 = 0 AND f_int2 = 0
35077
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
35078
AND f_charbig = '#NULL#';
35080
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35081
SELECT f_int1, f_int1, '', '', 'was inserted'
35082
FROM t0_template source_tab
35083
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35085
# check transactions-1 success: 1
35088
# check transactions-2 success: 1
35091
# check transactions-3 success: 1
35092
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35096
# check transactions-4 success: 1
35097
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35098
SELECT f_int1, f_int1, '', '', 'was inserted'
35099
FROM t0_template source_tab
35100
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35102
# check transactions-5 success: 1
35105
# check transactions-6 success: 1
35106
# INFO: Storage engine used for t1 seems to be transactional.
35109
# check transactions-7 success: 1
35110
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35112
SET @@session.sql_mode = 'traditional';
35113
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
35114
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35115
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
35116
'', '', 'was inserted' FROM t0_template
35117
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35118
ERROR 22012: Division by 0
35121
# check transactions-8 success: 1
35122
# INFO: Storage engine used for t1 seems to be able to revert
35123
# changes made by the failing statement.
35124
SET @@session.sql_mode = '';
35126
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35128
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
35130
# check special-1 success: 1
35131
UPDATE t1 SET f_charbig = '';
35133
# check special-2 success: 1
35134
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
35135
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35136
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
35137
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35138
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35139
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35140
'just inserted' FROM t0_template
35141
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35142
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
35144
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35145
f_charbig = 'updated by trigger'
35146
WHERE f_int1 = new.f_int1;
35148
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35149
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35152
# check trigger-1 success: 1
35153
DROP TRIGGER trg_1;
35154
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35155
f_int2 = CAST(f_char1 AS SIGNED INT),
35156
f_charbig = 'just inserted'
35157
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35159
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35160
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35161
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35162
'just inserted' FROM t0_template
35163
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35164
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
35166
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35167
f_charbig = 'updated by trigger'
35168
WHERE f_int1 = new.f_int1;
35170
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35171
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35172
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35174
# check trigger-2 success: 1
35175
DROP TRIGGER trg_1;
35176
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35177
f_int2 = CAST(f_char1 AS SIGNED INT),
35178
f_charbig = 'just inserted'
35179
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35181
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35182
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35183
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35184
'just inserted' FROM t0_template
35185
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35186
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35188
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35189
f_charbig = 'updated by trigger'
35190
WHERE f_int1 = new.f_int1;
35192
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35193
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35195
# check trigger-3 success: 1
35196
DROP TRIGGER trg_1;
35197
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35198
f_int2 = CAST(f_char1 AS SIGNED INT),
35199
f_charbig = 'just inserted'
35200
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35202
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35203
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35204
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35205
'just inserted' FROM t0_template
35206
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35207
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35209
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35210
f_charbig = 'updated by trigger'
35211
WHERE f_int1 = - old.f_int1;
35213
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35214
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35216
# check trigger-4 success: 1
35217
DROP TRIGGER trg_1;
35218
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35219
f_int2 = CAST(f_char1 AS SIGNED INT),
35220
f_charbig = 'just inserted'
35221
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35223
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35224
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35225
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35226
'just inserted' FROM t0_template
35227
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35228
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35230
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35231
f_charbig = 'updated by trigger'
35232
WHERE f_int1 = new.f_int1;
35234
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35235
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35237
# check trigger-5 success: 1
35238
DROP TRIGGER trg_1;
35239
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35240
f_int2 = CAST(f_char1 AS SIGNED INT),
35241
f_charbig = 'just inserted'
35242
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35244
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35245
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35246
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35247
'just inserted' FROM t0_template
35248
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35249
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35251
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35252
f_charbig = 'updated by trigger'
35253
WHERE f_int1 = - old.f_int1;
35255
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35256
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35258
# check trigger-6 success: 1
35259
DROP TRIGGER trg_1;
35260
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35261
f_int2 = CAST(f_char1 AS SIGNED INT),
35262
f_charbig = 'just inserted'
35263
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35265
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35266
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35267
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35268
'just inserted' FROM t0_template
35269
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35270
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
35272
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35273
f_charbig = 'updated by trigger'
35274
WHERE f_int1 = - old.f_int1;
35277
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35279
# check trigger-7 success: 1
35280
DROP TRIGGER trg_1;
35281
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35282
f_int2 = CAST(f_char1 AS SIGNED INT),
35283
f_charbig = 'just inserted'
35284
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35286
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35287
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35288
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35289
'just inserted' FROM t0_template
35290
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35291
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
35293
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35294
f_charbig = 'updated by trigger'
35295
WHERE f_int1 = - old.f_int1;
35298
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35300
# check trigger-8 success: 1
35301
DROP TRIGGER trg_1;
35302
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35303
f_int2 = CAST(f_char1 AS SIGNED INT),
35304
f_charbig = 'just inserted'
35305
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35307
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35309
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35310
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35312
SET new.f_int1 = old.f_int1 + @max_row,
35313
new.f_int2 = old.f_int2 - @max_row,
35314
new.f_charbig = '####updated per update trigger####';
35317
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35318
f_charbig = '####updated per update statement itself####';
35320
# check trigger-9 success: 1
35321
DROP TRIGGER trg_2;
35322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35323
f_int2 = CAST(f_char1 AS SIGNED INT),
35324
f_charbig = CONCAT('===',f_char1,'===');
35325
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35327
SET new.f_int1 = new.f_int1 + @max_row,
35328
new.f_int2 = new.f_int2 - @max_row,
35329
new.f_charbig = '####updated per update trigger####';
35332
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35333
f_charbig = '####updated per update statement itself####';
35335
# check trigger-10 success: 1
35336
DROP TRIGGER trg_2;
35337
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35338
f_int2 = CAST(f_char1 AS SIGNED INT),
35339
f_charbig = CONCAT('===',f_char1,'===');
35340
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35342
SET new.f_int1 = @my_max1 + @counter,
35343
new.f_int2 = @my_min2 - @counter,
35344
new.f_charbig = '####updated per insert trigger####';
35345
SET @counter = @counter + 1;
35348
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35349
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35350
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35351
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35352
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35354
DROP TRIGGER trg_3;
35356
# check trigger-11 success: 1
35358
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35359
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35360
AND f_charbig = '####updated per insert trigger####';
35361
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35363
SET new.f_int1 = @my_max1 + @counter,
35364
new.f_int2 = @my_min2 - @counter,
35365
new.f_charbig = '####updated per insert trigger####';
35366
SET @counter = @counter + 1;
35369
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35370
INSERT INTO t1 (f_char1, f_char2, f_charbig)
35371
SELECT CAST(f_int1 AS CHAR),
35372
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35373
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35375
DROP TRIGGER trg_3;
35377
# check trigger-12 success: 1
35379
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35380
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35381
AND f_charbig = '####updated per insert trigger####';
35383
Table Op Msg_type Msg_text
35384
test.t1 analyze note The storage engine for the table doesn't support analyze
35385
CHECK TABLE t1 EXTENDED;
35386
Table Op Msg_type Msg_text
35387
test.t1 check note The storage engine for the table doesn't support check
35388
CHECKSUM TABLE t1 EXTENDED;
35390
test.t1 <some_value>
35392
Table Op Msg_type Msg_text
35393
test.t1 optimize note The storage engine for the table doesn't support optimize
35394
# check layout success: 1
35395
REPAIR TABLE t1 EXTENDED;
35396
Table Op Msg_type Msg_text
35397
test.t1 repair note The storage engine for the table doesn't support repair
35398
# check layout success: 1
35401
# check TRUNCATE success: 1
35402
# check layout success: 1
35403
# End usability test (inc/partition_check.inc)
35410
f_charbig VARCHAR(1000)
35411
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
35413
PARTITION BY LIST(ABS(MOD(f_int1,2)))
35414
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
35415
(PARTITION part1 VALUES IN (0),
35416
PARTITION part2 VALUES IN (1),
35417
PARTITION part3 VALUES IN (NULL));
35418
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35419
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35420
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
35421
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
35422
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35423
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35424
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
35425
# Start usability test (inc/partition_check.inc)
35427
SHOW CREATE TABLE t1;
35429
t1 CREATE TABLE `t1` (
35430
`f_int1` int(11) DEFAULT NULL,
35431
`f_int2` int(11) DEFAULT NULL,
35432
`f_char1` char(20) DEFAULT NULL,
35433
`f_char2` char(20) DEFAULT NULL,
35434
`f_charbig` varchar(1000) DEFAULT NULL
35435
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
35437
# check prerequisites-1 success: 1
35438
# check COUNT(*) success: 1
35439
# check MIN/MAX(f_int1) success: 1
35440
# check MIN/MAX(f_int2) success: 1
35441
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35442
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35443
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
35444
WHERE f_int1 IN (2,3);
35445
# check prerequisites-3 success: 1
35446
DELETE FROM t1 WHERE f_charbig = 'delete me';
35447
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
35448
# check read via f_int1 success: 1
35449
# check read via f_int2 success: 1
35451
# check multiple-1 success: 1
35452
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
35454
# check multiple-2 success: 1
35455
INSERT INTO t1 SELECT * FROM t0_template
35456
WHERE MOD(f_int1,3) = 0;
35458
# check multiple-3 success: 1
35459
UPDATE t1 SET f_int1 = f_int1 + @max_row
35460
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
35461
AND @max_row_div2 + @max_row_div4;
35463
# check multiple-4 success: 1
35465
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
35466
AND @max_row_div2 + @max_row_div4 + @max_row;
35468
# check multiple-5 success: 1
35469
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
35471
SET f_int1 = @cur_value , f_int2 = @cur_value,
35472
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35473
f_charbig = '#SINGLE#';
35475
# check single-1 success: 1
35476
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
35478
SET f_int1 = @cur_value , f_int2 = @cur_value,
35479
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35480
f_charbig = '#SINGLE#';
35482
# check single-2 success: 1
35483
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
35484
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
35485
UPDATE t1 SET f_int1 = @cur_value2
35486
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
35488
# check single-3 success: 1
35489
SET @cur_value1= -1;
35490
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
35491
UPDATE t1 SET f_int1 = @cur_value1
35492
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
35494
# check single-4 success: 1
35495
SELECT MAX(f_int1) INTO @cur_value FROM t1;
35496
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
35498
# check single-5 success: 1
35499
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
35501
# check single-6 success: 1
35502
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
35504
# check single-7 success: 1
35505
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
35506
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
35507
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
35508
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
35509
f_charbig = '#NULL#';
35511
SET f_int1 = NULL , f_int2 = -@max_row,
35512
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
35513
f_charbig = '#NULL#';
35514
# check null success: 1
35516
# check null-1 success: 1
35517
UPDATE t1 SET f_int1 = -@max_row
35518
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35519
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35521
# check null-2 success: 1
35522
UPDATE t1 SET f_int1 = NULL
35523
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35524
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35526
# check null-3 success: 1
35528
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35529
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35531
# check null-4 success: 1
35533
WHERE f_int1 = 0 AND f_int2 = 0
35534
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
35535
AND f_charbig = '#NULL#';
35537
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35538
SELECT f_int1, f_int1, '', '', 'was inserted'
35539
FROM t0_template source_tab
35540
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35542
# check transactions-1 success: 1
35545
# check transactions-2 success: 1
35548
# check transactions-3 success: 1
35549
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35553
# check transactions-4 success: 1
35554
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35555
SELECT f_int1, f_int1, '', '', 'was inserted'
35556
FROM t0_template source_tab
35557
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35559
# check transactions-5 success: 1
35562
# check transactions-6 success: 1
35563
# INFO: Storage engine used for t1 seems to be transactional.
35566
# check transactions-7 success: 1
35567
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35569
SET @@session.sql_mode = 'traditional';
35570
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
35571
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35572
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
35573
'', '', 'was inserted' FROM t0_template
35574
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35575
ERROR 22012: Division by 0
35578
# check transactions-8 success: 1
35579
# INFO: Storage engine used for t1 seems to be able to revert
35580
# changes made by the failing statement.
35581
SET @@session.sql_mode = '';
35583
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35585
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
35587
# check special-1 success: 1
35588
UPDATE t1 SET f_charbig = '';
35590
# check special-2 success: 1
35591
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
35592
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35593
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
35594
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35595
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35596
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35597
'just inserted' FROM t0_template
35598
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35599
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
35601
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35602
f_charbig = 'updated by trigger'
35603
WHERE f_int1 = new.f_int1;
35605
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35606
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35607
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35609
# check trigger-1 success: 1
35610
DROP TRIGGER trg_1;
35611
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35612
f_int2 = CAST(f_char1 AS SIGNED INT),
35613
f_charbig = 'just inserted'
35614
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35616
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35617
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35618
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35619
'just inserted' FROM t0_template
35620
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35621
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
35623
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35624
f_charbig = 'updated by trigger'
35625
WHERE f_int1 = new.f_int1;
35627
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35628
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35629
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35631
# check trigger-2 success: 1
35632
DROP TRIGGER trg_1;
35633
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35634
f_int2 = CAST(f_char1 AS SIGNED INT),
35635
f_charbig = 'just inserted'
35636
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35638
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35639
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35640
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35641
'just inserted' FROM t0_template
35642
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35643
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35645
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35646
f_charbig = 'updated by trigger'
35647
WHERE f_int1 = new.f_int1;
35649
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35650
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35652
# check trigger-3 success: 1
35653
DROP TRIGGER trg_1;
35654
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35655
f_int2 = CAST(f_char1 AS SIGNED INT),
35656
f_charbig = 'just inserted'
35657
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35659
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35660
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35661
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35662
'just inserted' FROM t0_template
35663
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35664
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35666
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35667
f_charbig = 'updated by trigger'
35668
WHERE f_int1 = - old.f_int1;
35670
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35671
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35673
# check trigger-4 success: 1
35674
DROP TRIGGER trg_1;
35675
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35676
f_int2 = CAST(f_char1 AS SIGNED INT),
35677
f_charbig = 'just inserted'
35678
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35680
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35681
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35682
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35683
'just inserted' FROM t0_template
35684
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35685
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35687
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35688
f_charbig = 'updated by trigger'
35689
WHERE f_int1 = new.f_int1;
35691
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35692
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35694
# check trigger-5 success: 1
35695
DROP TRIGGER trg_1;
35696
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35697
f_int2 = CAST(f_char1 AS SIGNED INT),
35698
f_charbig = 'just inserted'
35699
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35701
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35702
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35703
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35704
'just inserted' FROM t0_template
35705
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35706
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35708
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35709
f_charbig = 'updated by trigger'
35710
WHERE f_int1 = - old.f_int1;
35712
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35713
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35715
# check trigger-6 success: 1
35716
DROP TRIGGER trg_1;
35717
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35718
f_int2 = CAST(f_char1 AS SIGNED INT),
35719
f_charbig = 'just inserted'
35720
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35722
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35723
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35724
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35725
'just inserted' FROM t0_template
35726
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35727
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
35729
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35730
f_charbig = 'updated by trigger'
35731
WHERE f_int1 = - old.f_int1;
35734
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35736
# check trigger-7 success: 1
35737
DROP TRIGGER trg_1;
35738
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35739
f_int2 = CAST(f_char1 AS SIGNED INT),
35740
f_charbig = 'just inserted'
35741
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35743
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35744
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35745
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35746
'just inserted' FROM t0_template
35747
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35748
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
35750
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35751
f_charbig = 'updated by trigger'
35752
WHERE f_int1 = - old.f_int1;
35755
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35757
# check trigger-8 success: 1
35758
DROP TRIGGER trg_1;
35759
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35760
f_int2 = CAST(f_char1 AS SIGNED INT),
35761
f_charbig = 'just inserted'
35762
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35764
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35767
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35769
SET new.f_int1 = old.f_int1 + @max_row,
35770
new.f_int2 = old.f_int2 - @max_row,
35771
new.f_charbig = '####updated per update trigger####';
35774
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35775
f_charbig = '####updated per update statement itself####';
35777
# check trigger-9 success: 1
35778
DROP TRIGGER trg_2;
35779
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35780
f_int2 = CAST(f_char1 AS SIGNED INT),
35781
f_charbig = CONCAT('===',f_char1,'===');
35782
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35784
SET new.f_int1 = new.f_int1 + @max_row,
35785
new.f_int2 = new.f_int2 - @max_row,
35786
new.f_charbig = '####updated per update trigger####';
35789
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35790
f_charbig = '####updated per update statement itself####';
35792
# check trigger-10 success: 1
35793
DROP TRIGGER trg_2;
35794
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35795
f_int2 = CAST(f_char1 AS SIGNED INT),
35796
f_charbig = CONCAT('===',f_char1,'===');
35797
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35799
SET new.f_int1 = @my_max1 + @counter,
35800
new.f_int2 = @my_min2 - @counter,
35801
new.f_charbig = '####updated per insert trigger####';
35802
SET @counter = @counter + 1;
35805
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35806
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35807
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35808
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35809
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35811
DROP TRIGGER trg_3;
35813
# check trigger-11 success: 1
35815
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35816
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35817
AND f_charbig = '####updated per insert trigger####';
35818
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35820
SET new.f_int1 = @my_max1 + @counter,
35821
new.f_int2 = @my_min2 - @counter,
35822
new.f_charbig = '####updated per insert trigger####';
35823
SET @counter = @counter + 1;
35826
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35827
INSERT INTO t1 (f_char1, f_char2, f_charbig)
35828
SELECT CAST(f_int1 AS CHAR),
35829
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35830
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35832
DROP TRIGGER trg_3;
35834
# check trigger-12 success: 1
35836
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35837
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35838
AND f_charbig = '####updated per insert trigger####';
35840
Table Op Msg_type Msg_text
35841
test.t1 analyze note The storage engine for the table doesn't support analyze
35842
CHECK TABLE t1 EXTENDED;
35843
Table Op Msg_type Msg_text
35844
test.t1 check note The storage engine for the table doesn't support check
35845
CHECKSUM TABLE t1 EXTENDED;
35847
test.t1 <some_value>
35849
Table Op Msg_type Msg_text
35850
test.t1 optimize note The storage engine for the table doesn't support optimize
35851
# check layout success: 1
35852
REPAIR TABLE t1 EXTENDED;
35853
Table Op Msg_type Msg_text
35854
test.t1 repair note The storage engine for the table doesn't support repair
35855
# check layout success: 1
35858
# check TRUNCATE success: 1
35859
# check layout success: 1
35860
# End usability test (inc/partition_check.inc)
35862
DROP VIEW IF EXISTS v1;
35863
DROP TABLE IF EXISTS t1;
35864
DROP TABLE IF EXISTS t0_aux;
35865
DROP TABLE IF EXISTS t0_definition;
35866
DROP TABLE IF EXISTS t0_template;