2
SET @@session.storage_engine = 'MyISAM';
4
#------------------------------------------------------------------------
5
# 0. Setting of auxiliary variables + Creation of an auxiliary tables
6
# needed in many testcases
7
#------------------------------------------------------------------------
8
SELECT @max_row DIV 2 INTO @max_row_div2;
9
SELECT @max_row DIV 3 INTO @max_row_div3;
10
SELECT @max_row DIV 4 INTO @max_row_div4;
11
SET @max_int_4 = 2147483647;
12
DROP TABLE IF EXISTS t0_template;
13
CREATE TABLE t0_template (
18
f_charbig VARCHAR(1000) ,
21
# Logging of <max_row> INSERTs into t0_template suppressed
22
DROP TABLE IF EXISTS t0_definition;
23
CREATE TABLE t0_definition (
25
create_command VARBINARY(5000),
26
file_list VARBINARY(10000),
29
DROP TABLE IF EXISTS t0_aux;
30
CREATE TABLE t0_aux ( f_int1 INTEGER,
34
f_charbig VARCHAR(1000) )
37
SET @@session.sql_mode= '';
38
# End of basic preparations needed for all tests
39
#-----------------------------------------------
41
#========================================================================
42
# 1. ALTER TABLE ADD PRIMARY KEY and/or UNIQUE INDEX
43
#========================================================================
44
#------------------------------------------------------------------------
45
# 1.1 ADD PRIMARY KEY or UNIQUE INDEX to table with one column (f_int1)
46
# within the partitioning function
47
#------------------------------------------------------------------------
48
DROP TABLE IF EXISTS t1;
54
f_charbig VARCHAR(1000)
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 ADD UNIQUE INDEX uidx1 (f_int2);
62
ERROR HY000: A UNIQUE INDEX must include all columns in the table's partitioning function
69
f_charbig VARCHAR(1000)
72
PARTITION BY KEY(f_int1) PARTITIONS 5;
73
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
74
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
75
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
76
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2);
77
ERROR HY000: A UNIQUE INDEX must include all columns in the table's partitioning function
84
f_charbig VARCHAR(1000)
87
PARTITION BY LIST(MOD(f_int1,4))
88
(PARTITION part_3 VALUES IN (-3),
89
PARTITION part_2 VALUES IN (-2),
90
PARTITION part_1 VALUES IN (-1),
91
PARTITION part_N VALUES IN (NULL),
92
PARTITION part0 VALUES IN (0),
93
PARTITION part1 VALUES IN (1),
94
PARTITION part2 VALUES IN (2),
95
PARTITION part3 VALUES IN (3));
96
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
97
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
98
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
99
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2);
100
ERROR HY000: A UNIQUE INDEX must include all columns in the table's partitioning function
107
f_charbig VARCHAR(1000)
110
PARTITION BY RANGE(f_int1)
111
(PARTITION parta VALUES LESS THAN (0),
112
PARTITION partb VALUES LESS THAN (5),
113
PARTITION partc VALUES LESS THAN (10),
114
PARTITION partd VALUES LESS THAN (10 + 5),
115
PARTITION parte VALUES LESS THAN (20),
116
PARTITION partf VALUES LESS THAN (2147483646));
117
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
118
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
119
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
120
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2);
121
ERROR HY000: A UNIQUE INDEX must include all columns in the table's partitioning function
128
f_charbig VARCHAR(1000)
131
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
132
(PARTITION parta VALUES LESS THAN (0),
133
PARTITION partb VALUES LESS THAN (5),
134
PARTITION partc VALUES LESS THAN (10),
135
PARTITION partd VALUES LESS THAN (2147483646));
136
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
137
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
138
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
139
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2);
140
ERROR HY000: A UNIQUE INDEX must include all columns in the table's partitioning function
147
f_charbig VARCHAR(1000)
150
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
151
(PARTITION part1 VALUES LESS THAN (0)
152
(SUBPARTITION subpart11, SUBPARTITION subpart12),
153
PARTITION part2 VALUES LESS THAN (5)
154
(SUBPARTITION subpart21, SUBPARTITION subpart22),
155
PARTITION part3 VALUES LESS THAN (10)
156
(SUBPARTITION subpart31, SUBPARTITION subpart32),
157
PARTITION part4 VALUES LESS THAN (2147483646)
158
(SUBPARTITION subpart41, SUBPARTITION subpart42));
159
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
160
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
161
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
162
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2);
163
ERROR HY000: A UNIQUE INDEX must include all columns in the table's partitioning function
170
f_charbig VARCHAR(1000)
173
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
174
(PARTITION part1 VALUES IN (0)
175
(SUBPARTITION sp11, SUBPARTITION sp12),
176
PARTITION part2 VALUES IN (1)
177
(SUBPARTITION sp21, SUBPARTITION sp22),
178
PARTITION part3 VALUES IN (2)
179
(SUBPARTITION sp31, SUBPARTITION sp32),
180
PARTITION part4 VALUES IN (NULL)
181
(SUBPARTITION sp41, SUBPARTITION sp42));
182
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
183
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
184
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
185
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2);
186
ERROR HY000: A UNIQUE INDEX must include all columns in the table's partitioning function
193
f_charbig VARCHAR(1000)
196
PARTITION BY LIST(ABS(MOD(f_int1,2)))
197
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
198
(PARTITION part1 VALUES IN (0),
199
PARTITION part2 VALUES IN (1),
200
PARTITION part3 VALUES IN (NULL));
201
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
202
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
203
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
204
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2);
205
ERROR HY000: A UNIQUE INDEX must include all columns in the table's partitioning function
207
# 1.1.4 UNIQUE INDEX consisting of two columns
208
DROP TABLE IF EXISTS t1;
214
f_charbig VARCHAR(1000)
217
PARTITION BY HASH(f_int1) PARTITIONS 2;
218
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
219
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
220
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
221
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
222
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
223
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
224
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
225
# Start usability test (inc/partition_check.inc)
227
SHOW CREATE TABLE t1;
229
t1 CREATE TABLE `t1` (
230
`f_int1` int(11) DEFAULT NULL,
231
`f_int2` int(11) DEFAULT NULL,
232
`f_char1` char(20) DEFAULT NULL,
233
`f_char2` char(20) DEFAULT NULL,
234
`f_charbig` varchar(1000) DEFAULT NULL,
235
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
236
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) PARTITIONS 2 */
246
# check prerequisites-1 success: 1
247
# check COUNT(*) success: 1
248
# check MIN/MAX(f_int1) success: 1
249
# check MIN/MAX(f_int2) success: 1
250
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
251
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
252
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
253
WHERE f_int1 IN (2,3);
254
ERROR 23000: Can't write; duplicate key in table 't1'
255
# check prerequisites-3 success: 1
256
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
257
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
258
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
259
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
260
WHERE f_int1 IN (2,3);
261
DELETE FROM t1 WHERE f_charbig = 'delete me';
262
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
263
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
264
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
265
WHERE f_int1 IN (2,3);
266
DELETE FROM t1 WHERE f_charbig = 'delete me';
267
# check read via f_int1 success: 1
268
# check read via f_int2 success: 1
270
# check multiple-1 success: 1
271
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
273
# check multiple-2 success: 1
274
INSERT INTO t1 SELECT * FROM t0_template
275
WHERE MOD(f_int1,3) = 0;
277
# check multiple-3 success: 1
278
UPDATE t1 SET f_int1 = f_int1 + @max_row
279
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
280
AND @max_row_div2 + @max_row_div4;
282
# check multiple-4 success: 1
284
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
285
AND @max_row_div2 + @max_row_div4 + @max_row;
287
# check multiple-5 success: 1
288
SELECT COUNT(*) INTO @try_count FROM t0_template
289
WHERE MOD(f_int1,3) = 0
290
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
291
SELECT COUNT(*) INTO @clash_count
292
FROM t1 INNER JOIN t0_template USING(f_int1)
293
WHERE MOD(f_int1,3) = 0
294
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
295
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
297
SET f_int1 = @cur_value , f_int2 = @cur_value,
298
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
299
f_charbig = '#SINGLE#';
301
# check single-1 success: 1
302
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
304
SET f_int1 = @cur_value , f_int2 = @cur_value,
305
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
306
f_charbig = '#SINGLE#';
308
# check single-2 success: 1
309
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
310
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
311
UPDATE t1 SET f_int1 = @cur_value2
312
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
314
# check single-3 success: 1
316
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
317
UPDATE t1 SET f_int1 = @cur_value1
318
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
320
# check single-4 success: 1
321
SELECT MAX(f_int1) INTO @cur_value FROM t1;
322
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
324
# check single-5 success: 1
325
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
327
# check single-6 success: 1
328
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
330
# check single-7 success: 1
331
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
332
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
333
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
334
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
335
f_charbig = '#NULL#';
337
SET f_int1 = NULL , f_int2 = -@max_row,
338
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
339
f_charbig = '#NULL#';
340
# check null success: 1
342
# check null-1 success: 1
343
UPDATE t1 SET f_int1 = -@max_row
344
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
345
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
347
# check null-2 success: 1
348
UPDATE t1 SET f_int1 = NULL
349
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
350
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
352
# check null-3 success: 1
354
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
355
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
357
# check null-4 success: 1
359
WHERE f_int1 = 0 AND f_int2 = 0
360
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
361
AND f_charbig = '#NULL#';
362
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
363
SELECT f_int1, f_int1, '', '', 'was inserted'
364
FROM t0_template source_tab
365
WHERE MOD(f_int1,3) = 0
366
AND f_int1 BETWEEN @max_row_div2 AND @max_row
368
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
369
f_int2 = 2 * @max_row + source_tab.f_int1,
370
f_charbig = 'was updated';
372
# check unique-1-a success: 1
374
# check unique-1-b success: 1
375
DELETE FROM t1 WHERE f_charbig = 'was inserted';
376
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
377
f_int2 = CAST(f_char1 AS SIGNED INT),
378
f_charbig = CONCAT('===',f_char1,'===')
379
WHERE f_charbig = 'was updated';
380
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
381
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
382
FROM t0_template source_tab
383
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
385
# check replace success: 1
387
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
389
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
390
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
391
UPDATE t1 SET f_int2 = f_int1,
392
f_char1 = CAST(f_int1 AS CHAR),
393
f_char2 = CAST(f_int1 AS CHAR),
394
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
395
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
397
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
398
SELECT f_int1, f_int1, '', '', 'was inserted'
399
FROM t0_template source_tab
400
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
402
# check transactions-1 success: 1
405
# check transactions-2 success: 1
408
# check transactions-3 success: 1
409
DELETE FROM t1 WHERE f_charbig = 'was inserted';
413
# check transactions-4 success: 1
414
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
415
SELECT f_int1, f_int1, '', '', 'was inserted'
416
FROM t0_template source_tab
417
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
419
# check transactions-5 success: 1
422
Warning 1196 Some non-transactional changed tables couldn't be rolled back
424
# check transactions-6 success: 1
425
# INFO: Storage engine used for t1 seems to be not transactional.
428
# check transactions-7 success: 1
429
DELETE FROM t1 WHERE f_charbig = 'was inserted';
431
SET @@session.sql_mode = 'traditional';
432
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
433
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
434
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
435
'', '', 'was inserted' FROM t0_template
436
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
437
ERROR 22012: Division by 0
440
# check transactions-8 success: 1
441
# INFO: Storage engine used for t1 seems to be unable to revert
442
# changes made by the failing statement.
443
SET @@session.sql_mode = '';
445
DELETE FROM t1 WHERE f_charbig = 'was inserted';
447
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
449
# check special-1 success: 1
450
UPDATE t1 SET f_charbig = '';
452
# check special-2 success: 1
453
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
454
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
455
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
456
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
457
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
458
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
459
'just inserted' FROM t0_template
460
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
461
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
463
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
464
f_charbig = 'updated by trigger'
465
WHERE f_int1 = new.f_int1;
467
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
468
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
469
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
471
# check trigger-1 success: 1
473
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
474
f_int2 = CAST(f_char1 AS SIGNED INT),
475
f_charbig = 'just inserted'
476
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
478
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
479
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
480
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
481
'just inserted' FROM t0_template
482
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
483
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
485
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
486
f_charbig = 'updated by trigger'
487
WHERE f_int1 = new.f_int1;
489
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
490
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
491
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
493
# check trigger-2 success: 1
495
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
496
f_int2 = CAST(f_char1 AS SIGNED INT),
497
f_charbig = 'just inserted'
498
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
500
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
501
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
502
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
503
'just inserted' FROM t0_template
504
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
505
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
507
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
508
f_charbig = 'updated by trigger'
509
WHERE f_int1 = new.f_int1;
511
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
512
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
514
# check trigger-3 success: 1
516
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
517
f_int2 = CAST(f_char1 AS SIGNED INT),
518
f_charbig = 'just inserted'
519
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
521
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
522
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
523
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
524
'just inserted' FROM t0_template
525
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
526
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
528
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
529
f_charbig = 'updated by trigger'
530
WHERE f_int1 = - old.f_int1;
532
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
533
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
535
# check trigger-4 success: 1
537
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
538
f_int2 = CAST(f_char1 AS SIGNED INT),
539
f_charbig = 'just inserted'
540
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
542
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
543
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
544
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
545
'just inserted' FROM t0_template
546
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
547
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
549
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
550
f_charbig = 'updated by trigger'
551
WHERE f_int1 = new.f_int1;
553
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
554
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
556
# check trigger-5 success: 1
558
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
559
f_int2 = CAST(f_char1 AS SIGNED INT),
560
f_charbig = 'just inserted'
561
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
563
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
564
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
565
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
566
'just inserted' FROM t0_template
567
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
568
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
570
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
571
f_charbig = 'updated by trigger'
572
WHERE f_int1 = - old.f_int1;
574
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
575
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
577
# check trigger-6 success: 1
579
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
580
f_int2 = CAST(f_char1 AS SIGNED INT),
581
f_charbig = 'just inserted'
582
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
584
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
585
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
586
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
587
'just inserted' FROM t0_template
588
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
589
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
591
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
592
f_charbig = 'updated by trigger'
593
WHERE f_int1 = - old.f_int1;
596
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
598
# check trigger-7 success: 1
600
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
601
f_int2 = CAST(f_char1 AS SIGNED INT),
602
f_charbig = 'just inserted'
603
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
605
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
606
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
607
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
608
'just inserted' FROM t0_template
609
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
610
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
612
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
613
f_charbig = 'updated by trigger'
614
WHERE f_int1 = - old.f_int1;
617
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
619
# check trigger-8 success: 1
621
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
622
f_int2 = CAST(f_char1 AS SIGNED INT),
623
f_charbig = 'just inserted'
624
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
626
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
628
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
629
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
631
SET new.f_int1 = old.f_int1 + @max_row,
632
new.f_int2 = old.f_int2 - @max_row,
633
new.f_charbig = '####updated per update trigger####';
636
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
637
f_charbig = '####updated per update statement itself####';
639
# check trigger-9 success: 1
641
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
642
f_int2 = CAST(f_char1 AS SIGNED INT),
643
f_charbig = CONCAT('===',f_char1,'===');
644
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
646
SET new.f_int1 = new.f_int1 + @max_row,
647
new.f_int2 = new.f_int2 - @max_row,
648
new.f_charbig = '####updated per update trigger####';
651
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
652
f_charbig = '####updated per update statement itself####';
654
# check trigger-10 success: 1
656
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
657
f_int2 = CAST(f_char1 AS SIGNED INT),
658
f_charbig = CONCAT('===',f_char1,'===');
659
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
661
SET new.f_int1 = @my_max1 + @counter,
662
new.f_int2 = @my_min2 - @counter,
663
new.f_charbig = '####updated per insert trigger####';
664
SET @counter = @counter + 1;
667
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
668
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
669
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
670
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
671
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
675
# check trigger-11 success: 1
677
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
678
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
679
AND f_charbig = '####updated per insert trigger####';
680
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
682
SET new.f_int1 = @my_max1 + @counter,
683
new.f_int2 = @my_min2 - @counter,
684
new.f_charbig = '####updated per insert trigger####';
685
SET @counter = @counter + 1;
688
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
689
INSERT INTO t1 (f_char1, f_char2, f_charbig)
690
SELECT CAST(f_int1 AS CHAR),
691
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
692
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
696
# check trigger-12 success: 1
698
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
699
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
700
AND f_charbig = '####updated per insert trigger####';
702
Table Op Msg_type Msg_text
703
test.t1 analyze note The storage engine for the table doesn't support analyze
704
CHECK TABLE t1 EXTENDED;
705
Table Op Msg_type Msg_text
706
test.t1 check note The storage engine for the table doesn't support check
707
CHECKSUM TABLE t1 EXTENDED;
711
Table Op Msg_type Msg_text
712
test.t1 optimize note The storage engine for the table doesn't support optimize
713
# check layout success: 1
714
REPAIR TABLE t1 EXTENDED;
715
Table Op Msg_type Msg_text
716
test.t1 repair note The storage engine for the table doesn't support repair
717
# check layout success: 1
720
# check TRUNCATE success: 1
721
# check layout success: 1
722
# End usability test (inc/partition_check.inc)
729
f_charbig VARCHAR(1000)
732
PARTITION BY KEY(f_int1) PARTITIONS 5;
733
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
734
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
735
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
736
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
737
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
738
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
739
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
740
# Start usability test (inc/partition_check.inc)
742
SHOW CREATE TABLE t1;
744
t1 CREATE TABLE `t1` (
745
`f_int1` int(11) DEFAULT NULL,
746
`f_int2` int(11) DEFAULT NULL,
747
`f_char1` char(20) DEFAULT NULL,
748
`f_char2` char(20) DEFAULT NULL,
749
`f_charbig` varchar(1000) DEFAULT NULL,
750
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
751
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) PARTITIONS 5 */
767
# check prerequisites-1 success: 1
768
# check COUNT(*) success: 1
769
# check MIN/MAX(f_int1) success: 1
770
# check MIN/MAX(f_int2) success: 1
771
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
772
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
773
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
774
WHERE f_int1 IN (2,3);
775
ERROR 23000: Can't write; duplicate key in table 't1'
776
# check prerequisites-3 success: 1
777
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
778
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
779
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
780
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
781
WHERE f_int1 IN (2,3);
782
DELETE FROM t1 WHERE f_charbig = 'delete me';
783
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
784
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
785
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
786
WHERE f_int1 IN (2,3);
787
DELETE FROM t1 WHERE f_charbig = 'delete me';
788
# check read via f_int1 success: 1
789
# check read via f_int2 success: 1
791
# check multiple-1 success: 1
792
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
794
# check multiple-2 success: 1
795
INSERT INTO t1 SELECT * FROM t0_template
796
WHERE MOD(f_int1,3) = 0;
798
# check multiple-3 success: 1
799
UPDATE t1 SET f_int1 = f_int1 + @max_row
800
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
801
AND @max_row_div2 + @max_row_div4;
803
# check multiple-4 success: 1
805
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
806
AND @max_row_div2 + @max_row_div4 + @max_row;
808
# check multiple-5 success: 1
809
SELECT COUNT(*) INTO @try_count FROM t0_template
810
WHERE MOD(f_int1,3) = 0
811
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
812
SELECT COUNT(*) INTO @clash_count
813
FROM t1 INNER JOIN t0_template USING(f_int1)
814
WHERE MOD(f_int1,3) = 0
815
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
816
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
818
SET f_int1 = @cur_value , f_int2 = @cur_value,
819
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
820
f_charbig = '#SINGLE#';
822
# check single-1 success: 1
823
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
825
SET f_int1 = @cur_value , f_int2 = @cur_value,
826
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
827
f_charbig = '#SINGLE#';
829
# check single-2 success: 1
830
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
831
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
832
UPDATE t1 SET f_int1 = @cur_value2
833
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
835
# check single-3 success: 1
837
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
838
UPDATE t1 SET f_int1 = @cur_value1
839
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
841
# check single-4 success: 1
842
SELECT MAX(f_int1) INTO @cur_value FROM t1;
843
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
845
# check single-5 success: 1
846
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
848
# check single-6 success: 1
849
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
851
# check single-7 success: 1
852
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
853
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
854
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
855
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
856
f_charbig = '#NULL#';
858
SET f_int1 = NULL , f_int2 = -@max_row,
859
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
860
f_charbig = '#NULL#';
861
# check null success: 1
863
# check null-1 success: 1
864
UPDATE t1 SET f_int1 = -@max_row
865
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
866
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
868
# check null-2 success: 1
869
UPDATE t1 SET f_int1 = NULL
870
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
871
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
873
# check null-3 success: 1
875
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
876
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
878
# check null-4 success: 1
880
WHERE f_int1 = 0 AND f_int2 = 0
881
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
882
AND f_charbig = '#NULL#';
883
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
884
SELECT f_int1, f_int1, '', '', 'was inserted'
885
FROM t0_template source_tab
886
WHERE MOD(f_int1,3) = 0
887
AND f_int1 BETWEEN @max_row_div2 AND @max_row
889
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
890
f_int2 = 2 * @max_row + source_tab.f_int1,
891
f_charbig = 'was updated';
893
# check unique-1-a success: 1
895
# check unique-1-b success: 1
896
DELETE FROM t1 WHERE f_charbig = 'was inserted';
897
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
898
f_int2 = CAST(f_char1 AS SIGNED INT),
899
f_charbig = CONCAT('===',f_char1,'===')
900
WHERE f_charbig = 'was updated';
901
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
902
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
903
FROM t0_template source_tab
904
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
906
# check replace success: 1
908
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
910
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
911
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
912
UPDATE t1 SET f_int2 = f_int1,
913
f_char1 = CAST(f_int1 AS CHAR),
914
f_char2 = CAST(f_int1 AS CHAR),
915
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
916
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
918
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
919
SELECT f_int1, f_int1, '', '', 'was inserted'
920
FROM t0_template source_tab
921
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
923
# check transactions-1 success: 1
926
# check transactions-2 success: 1
929
# check transactions-3 success: 1
930
DELETE FROM t1 WHERE f_charbig = 'was inserted';
934
# check transactions-4 success: 1
935
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
936
SELECT f_int1, f_int1, '', '', 'was inserted'
937
FROM t0_template source_tab
938
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
940
# check transactions-5 success: 1
943
Warning 1196 Some non-transactional changed tables couldn't be rolled back
945
# check transactions-6 success: 1
946
# INFO: Storage engine used for t1 seems to be not transactional.
949
# check transactions-7 success: 1
950
DELETE FROM t1 WHERE f_charbig = 'was inserted';
952
SET @@session.sql_mode = 'traditional';
953
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
954
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
955
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
956
'', '', 'was inserted' FROM t0_template
957
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
958
ERROR 22012: Division by 0
961
# check transactions-8 success: 1
962
# INFO: Storage engine used for t1 seems to be unable to revert
963
# changes made by the failing statement.
964
SET @@session.sql_mode = '';
966
DELETE FROM t1 WHERE f_charbig = 'was inserted';
968
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
970
# check special-1 success: 1
971
UPDATE t1 SET f_charbig = '';
973
# check special-2 success: 1
974
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
975
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
976
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
977
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
978
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
979
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
980
'just inserted' FROM t0_template
981
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
982
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
984
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
985
f_charbig = 'updated by trigger'
986
WHERE f_int1 = new.f_int1;
988
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
989
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
990
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
992
# check trigger-1 success: 1
994
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
995
f_int2 = CAST(f_char1 AS SIGNED INT),
996
f_charbig = 'just inserted'
997
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
999
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1000
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1001
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1002
'just inserted' FROM t0_template
1003
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1004
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1006
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1007
f_charbig = 'updated by trigger'
1008
WHERE f_int1 = new.f_int1;
1010
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1011
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1012
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1014
# check trigger-2 success: 1
1016
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1017
f_int2 = CAST(f_char1 AS SIGNED INT),
1018
f_charbig = 'just inserted'
1019
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1021
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1022
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1023
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1024
'just inserted' FROM t0_template
1025
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1026
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1028
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1029
f_charbig = 'updated by trigger'
1030
WHERE f_int1 = new.f_int1;
1032
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1033
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1035
# check trigger-3 success: 1
1037
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1038
f_int2 = CAST(f_char1 AS SIGNED INT),
1039
f_charbig = 'just inserted'
1040
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1042
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1043
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1044
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1045
'just inserted' FROM t0_template
1046
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1047
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1049
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1050
f_charbig = 'updated by trigger'
1051
WHERE f_int1 = - old.f_int1;
1053
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1054
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1056
# check trigger-4 success: 1
1058
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1059
f_int2 = CAST(f_char1 AS SIGNED INT),
1060
f_charbig = 'just inserted'
1061
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1063
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1064
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1065
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1066
'just inserted' FROM t0_template
1067
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1068
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1070
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1071
f_charbig = 'updated by trigger'
1072
WHERE f_int1 = new.f_int1;
1074
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1075
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1077
# check trigger-5 success: 1
1079
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1080
f_int2 = CAST(f_char1 AS SIGNED INT),
1081
f_charbig = 'just inserted'
1082
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1084
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1085
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1086
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1087
'just inserted' FROM t0_template
1088
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1089
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1091
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1092
f_charbig = 'updated by trigger'
1093
WHERE f_int1 = - old.f_int1;
1095
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1096
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1098
# check trigger-6 success: 1
1100
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1101
f_int2 = CAST(f_char1 AS SIGNED INT),
1102
f_charbig = 'just inserted'
1103
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1105
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1106
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1107
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1108
'just inserted' FROM t0_template
1109
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1110
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1112
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1113
f_charbig = 'updated by trigger'
1114
WHERE f_int1 = - old.f_int1;
1117
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1119
# check trigger-7 success: 1
1121
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1122
f_int2 = CAST(f_char1 AS SIGNED INT),
1123
f_charbig = 'just inserted'
1124
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1126
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1127
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1128
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1129
'just inserted' FROM t0_template
1130
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1131
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1133
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1134
f_charbig = 'updated by trigger'
1135
WHERE f_int1 = - old.f_int1;
1138
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1140
# check trigger-8 success: 1
1142
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1143
f_int2 = CAST(f_char1 AS SIGNED INT),
1144
f_charbig = 'just inserted'
1145
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1147
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1149
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1150
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1152
SET new.f_int1 = old.f_int1 + @max_row,
1153
new.f_int2 = old.f_int2 - @max_row,
1154
new.f_charbig = '####updated per update trigger####';
1157
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1158
f_charbig = '####updated per update statement itself####';
1160
# check trigger-9 success: 1
1162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1163
f_int2 = CAST(f_char1 AS SIGNED INT),
1164
f_charbig = CONCAT('===',f_char1,'===');
1165
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1167
SET new.f_int1 = new.f_int1 + @max_row,
1168
new.f_int2 = new.f_int2 - @max_row,
1169
new.f_charbig = '####updated per update trigger####';
1172
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1173
f_charbig = '####updated per update statement itself####';
1175
# check trigger-10 success: 1
1177
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1178
f_int2 = CAST(f_char1 AS SIGNED INT),
1179
f_charbig = CONCAT('===',f_char1,'===');
1180
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1182
SET new.f_int1 = @my_max1 + @counter,
1183
new.f_int2 = @my_min2 - @counter,
1184
new.f_charbig = '####updated per insert trigger####';
1185
SET @counter = @counter + 1;
1188
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1189
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1190
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1191
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1192
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1196
# check trigger-11 success: 1
1198
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1199
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1200
AND f_charbig = '####updated per insert trigger####';
1201
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1203
SET new.f_int1 = @my_max1 + @counter,
1204
new.f_int2 = @my_min2 - @counter,
1205
new.f_charbig = '####updated per insert trigger####';
1206
SET @counter = @counter + 1;
1209
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1210
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1211
SELECT CAST(f_int1 AS CHAR),
1212
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1213
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1217
# check trigger-12 success: 1
1219
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1220
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1221
AND f_charbig = '####updated per insert trigger####';
1223
Table Op Msg_type Msg_text
1224
test.t1 analyze note The storage engine for the table doesn't support analyze
1225
CHECK TABLE t1 EXTENDED;
1226
Table Op Msg_type Msg_text
1227
test.t1 check note The storage engine for the table doesn't support check
1228
CHECKSUM TABLE t1 EXTENDED;
1230
test.t1 <some_value>
1232
Table Op Msg_type Msg_text
1233
test.t1 optimize note The storage engine for the table doesn't support optimize
1234
# check layout success: 1
1235
REPAIR TABLE t1 EXTENDED;
1236
Table Op Msg_type Msg_text
1237
test.t1 repair note The storage engine for the table doesn't support repair
1238
# check layout success: 1
1241
# check TRUNCATE success: 1
1242
# check layout success: 1
1243
# End usability test (inc/partition_check.inc)
1250
f_charbig VARCHAR(1000)
1253
PARTITION BY LIST(MOD(f_int1,4))
1254
(PARTITION part_3 VALUES IN (-3),
1255
PARTITION part_2 VALUES IN (-2),
1256
PARTITION part_1 VALUES IN (-1),
1257
PARTITION part_N VALUES IN (NULL),
1258
PARTITION part0 VALUES IN (0),
1259
PARTITION part1 VALUES IN (1),
1260
PARTITION part2 VALUES IN (2),
1261
PARTITION part3 VALUES IN (3));
1262
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1263
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1264
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1265
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
1266
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1267
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1268
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1269
# Start usability test (inc/partition_check.inc)
1271
SHOW CREATE TABLE t1;
1273
t1 CREATE TABLE `t1` (
1274
`f_int1` int(11) DEFAULT NULL,
1275
`f_int2` int(11) DEFAULT NULL,
1276
`f_char1` char(20) DEFAULT NULL,
1277
`f_char2` char(20) DEFAULT NULL,
1278
`f_charbig` varchar(1000) DEFAULT NULL,
1279
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
1280
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
1302
# check prerequisites-1 success: 1
1303
# check COUNT(*) success: 1
1304
# check MIN/MAX(f_int1) success: 1
1305
# check MIN/MAX(f_int2) success: 1
1306
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1307
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1308
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1309
WHERE f_int1 IN (2,3);
1310
ERROR 23000: Can't write; duplicate key in table 't1'
1311
# check prerequisites-3 success: 1
1312
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
1313
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1314
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
1315
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
1316
WHERE f_int1 IN (2,3);
1317
DELETE FROM t1 WHERE f_charbig = 'delete me';
1318
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1319
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
1320
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
1321
WHERE f_int1 IN (2,3);
1322
DELETE FROM t1 WHERE f_charbig = 'delete me';
1323
# check read via f_int1 success: 1
1324
# check read via f_int2 success: 1
1326
# check multiple-1 success: 1
1327
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1329
# check multiple-2 success: 1
1330
INSERT INTO t1 SELECT * FROM t0_template
1331
WHERE MOD(f_int1,3) = 0;
1333
# check multiple-3 success: 1
1334
UPDATE t1 SET f_int1 = f_int1 + @max_row
1335
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1336
AND @max_row_div2 + @max_row_div4;
1338
# check multiple-4 success: 1
1340
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1341
AND @max_row_div2 + @max_row_div4 + @max_row;
1343
# check multiple-5 success: 1
1344
SELECT COUNT(*) INTO @try_count FROM t0_template
1345
WHERE MOD(f_int1,3) = 0
1346
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
1347
SELECT COUNT(*) INTO @clash_count
1348
FROM t1 INNER JOIN t0_template USING(f_int1)
1349
WHERE MOD(f_int1,3) = 0
1350
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
1351
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1353
SET f_int1 = @cur_value , f_int2 = @cur_value,
1354
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1355
f_charbig = '#SINGLE#';
1357
# check single-1 success: 1
1358
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1360
SET f_int1 = @cur_value , f_int2 = @cur_value,
1361
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1362
f_charbig = '#SINGLE#';
1364
# check single-2 success: 1
1365
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1366
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1367
UPDATE t1 SET f_int1 = @cur_value2
1368
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1370
# check single-3 success: 1
1371
SET @cur_value1= -1;
1372
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1373
UPDATE t1 SET f_int1 = @cur_value1
1374
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1376
# check single-4 success: 1
1377
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1378
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1380
# check single-5 success: 1
1381
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1383
# check single-6 success: 1
1384
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1386
# check single-7 success: 1
1387
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1388
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1389
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1390
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1391
f_charbig = '#NULL#';
1393
SET f_int1 = NULL , f_int2 = -@max_row,
1394
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1395
f_charbig = '#NULL#';
1396
# check null success: 1
1398
# check null-1 success: 1
1399
UPDATE t1 SET f_int1 = -@max_row
1400
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1401
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1403
# check null-2 success: 1
1404
UPDATE t1 SET f_int1 = NULL
1405
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1406
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1408
# check null-3 success: 1
1410
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1411
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1413
# check null-4 success: 1
1415
WHERE f_int1 = 0 AND f_int2 = 0
1416
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1417
AND f_charbig = '#NULL#';
1418
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1419
SELECT f_int1, f_int1, '', '', 'was inserted'
1420
FROM t0_template source_tab
1421
WHERE MOD(f_int1,3) = 0
1422
AND f_int1 BETWEEN @max_row_div2 AND @max_row
1424
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
1425
f_int2 = 2 * @max_row + source_tab.f_int1,
1426
f_charbig = 'was updated';
1428
# check unique-1-a success: 1
1430
# check unique-1-b success: 1
1431
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1432
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1433
f_int2 = CAST(f_char1 AS SIGNED INT),
1434
f_charbig = CONCAT('===',f_char1,'===')
1435
WHERE f_charbig = 'was updated';
1436
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1437
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
1438
FROM t0_template source_tab
1439
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
1441
# check replace success: 1
1443
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
1445
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
1446
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
1447
UPDATE t1 SET f_int2 = f_int1,
1448
f_char1 = CAST(f_int1 AS CHAR),
1449
f_char2 = CAST(f_int1 AS CHAR),
1450
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
1451
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
1453
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1454
SELECT f_int1, f_int1, '', '', 'was inserted'
1455
FROM t0_template source_tab
1456
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1458
# check transactions-1 success: 1
1461
# check transactions-2 success: 1
1464
# check transactions-3 success: 1
1465
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1469
# check transactions-4 success: 1
1470
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1471
SELECT f_int1, f_int1, '', '', 'was inserted'
1472
FROM t0_template source_tab
1473
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1475
# check transactions-5 success: 1
1478
Warning 1196 Some non-transactional changed tables couldn't be rolled back
1480
# check transactions-6 success: 1
1481
# INFO: Storage engine used for t1 seems to be not transactional.
1484
# check transactions-7 success: 1
1485
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1487
SET @@session.sql_mode = 'traditional';
1488
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1489
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1490
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1491
'', '', 'was inserted' FROM t0_template
1492
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1493
ERROR 22012: Division by 0
1496
# check transactions-8 success: 1
1497
# INFO: Storage engine used for t1 seems to be unable to revert
1498
# changes made by the failing statement.
1499
SET @@session.sql_mode = '';
1501
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1503
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1505
# check special-1 success: 1
1506
UPDATE t1 SET f_charbig = '';
1508
# check special-2 success: 1
1509
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1510
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1511
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1512
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1513
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1514
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1515
'just inserted' FROM t0_template
1516
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1517
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1519
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1520
f_charbig = 'updated by trigger'
1521
WHERE f_int1 = new.f_int1;
1523
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1524
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1525
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1527
# check trigger-1 success: 1
1529
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1530
f_int2 = CAST(f_char1 AS SIGNED INT),
1531
f_charbig = 'just inserted'
1532
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1534
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1535
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1536
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1537
'just inserted' FROM t0_template
1538
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1539
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1541
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1542
f_charbig = 'updated by trigger'
1543
WHERE f_int1 = new.f_int1;
1545
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1546
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1547
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1549
# check trigger-2 success: 1
1551
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1552
f_int2 = CAST(f_char1 AS SIGNED INT),
1553
f_charbig = 'just inserted'
1554
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1556
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1557
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1558
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1559
'just inserted' FROM t0_template
1560
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1561
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1563
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1564
f_charbig = 'updated by trigger'
1565
WHERE f_int1 = new.f_int1;
1567
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1568
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1570
# check trigger-3 success: 1
1572
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1573
f_int2 = CAST(f_char1 AS SIGNED INT),
1574
f_charbig = 'just inserted'
1575
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1577
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1578
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1579
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1580
'just inserted' FROM t0_template
1581
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1582
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1584
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1585
f_charbig = 'updated by trigger'
1586
WHERE f_int1 = - old.f_int1;
1588
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1589
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1591
# check trigger-4 success: 1
1593
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1594
f_int2 = CAST(f_char1 AS SIGNED INT),
1595
f_charbig = 'just inserted'
1596
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1598
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1599
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1600
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1601
'just inserted' FROM t0_template
1602
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1603
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1605
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1606
f_charbig = 'updated by trigger'
1607
WHERE f_int1 = new.f_int1;
1609
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1610
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1612
# check trigger-5 success: 1
1614
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1615
f_int2 = CAST(f_char1 AS SIGNED INT),
1616
f_charbig = 'just inserted'
1617
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1619
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1620
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1621
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1622
'just inserted' FROM t0_template
1623
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1624
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1626
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1627
f_charbig = 'updated by trigger'
1628
WHERE f_int1 = - old.f_int1;
1630
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1631
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1633
# check trigger-6 success: 1
1635
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1636
f_int2 = CAST(f_char1 AS SIGNED INT),
1637
f_charbig = 'just inserted'
1638
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1640
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1641
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1642
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1643
'just inserted' FROM t0_template
1644
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1645
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1647
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1648
f_charbig = 'updated by trigger'
1649
WHERE f_int1 = - old.f_int1;
1652
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1654
# check trigger-7 success: 1
1656
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1657
f_int2 = CAST(f_char1 AS SIGNED INT),
1658
f_charbig = 'just inserted'
1659
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1661
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1662
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1663
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1664
'just inserted' FROM t0_template
1665
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1666
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1668
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1669
f_charbig = 'updated by trigger'
1670
WHERE f_int1 = - old.f_int1;
1673
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1675
# check trigger-8 success: 1
1677
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1678
f_int2 = CAST(f_char1 AS SIGNED INT),
1679
f_charbig = 'just inserted'
1680
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1682
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1684
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1685
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1687
SET new.f_int1 = old.f_int1 + @max_row,
1688
new.f_int2 = old.f_int2 - @max_row,
1689
new.f_charbig = '####updated per update trigger####';
1692
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1693
f_charbig = '####updated per update statement itself####';
1695
# check trigger-9 success: 1
1697
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1698
f_int2 = CAST(f_char1 AS SIGNED INT),
1699
f_charbig = CONCAT('===',f_char1,'===');
1700
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1702
SET new.f_int1 = new.f_int1 + @max_row,
1703
new.f_int2 = new.f_int2 - @max_row,
1704
new.f_charbig = '####updated per update trigger####';
1707
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1708
f_charbig = '####updated per update statement itself####';
1710
# check trigger-10 success: 1
1712
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1713
f_int2 = CAST(f_char1 AS SIGNED INT),
1714
f_charbig = CONCAT('===',f_char1,'===');
1715
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1717
SET new.f_int1 = @my_max1 + @counter,
1718
new.f_int2 = @my_min2 - @counter,
1719
new.f_charbig = '####updated per insert trigger####';
1720
SET @counter = @counter + 1;
1723
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1724
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1725
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1726
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1727
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1731
# check trigger-11 success: 1
1733
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1734
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1735
AND f_charbig = '####updated per insert trigger####';
1736
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1738
SET new.f_int1 = @my_max1 + @counter,
1739
new.f_int2 = @my_min2 - @counter,
1740
new.f_charbig = '####updated per insert trigger####';
1741
SET @counter = @counter + 1;
1744
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1745
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1746
SELECT CAST(f_int1 AS CHAR),
1747
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1748
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1752
# check trigger-12 success: 1
1754
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1755
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1756
AND f_charbig = '####updated per insert trigger####';
1758
Table Op Msg_type Msg_text
1759
test.t1 analyze note The storage engine for the table doesn't support analyze
1760
CHECK TABLE t1 EXTENDED;
1761
Table Op Msg_type Msg_text
1762
test.t1 check note The storage engine for the table doesn't support check
1763
CHECKSUM TABLE t1 EXTENDED;
1765
test.t1 <some_value>
1767
Table Op Msg_type Msg_text
1768
test.t1 optimize note The storage engine for the table doesn't support optimize
1769
# check layout success: 1
1770
REPAIR TABLE t1 EXTENDED;
1771
Table Op Msg_type Msg_text
1772
test.t1 repair note The storage engine for the table doesn't support repair
1773
# check layout success: 1
1776
# check TRUNCATE success: 1
1777
# check layout success: 1
1778
# End usability test (inc/partition_check.inc)
1785
f_charbig VARCHAR(1000)
1788
PARTITION BY RANGE(f_int1)
1789
(PARTITION parta VALUES LESS THAN (0),
1790
PARTITION partb VALUES LESS THAN (5),
1791
PARTITION partc VALUES LESS THAN (10),
1792
PARTITION partd VALUES LESS THAN (10 + 5),
1793
PARTITION parte VALUES LESS THAN (20),
1794
PARTITION partf VALUES LESS THAN (2147483646));
1795
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1796
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1797
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1798
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
1799
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1800
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1801
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1802
# Start usability test (inc/partition_check.inc)
1804
SHOW CREATE TABLE t1;
1806
t1 CREATE TABLE `t1` (
1807
`f_int1` int(11) DEFAULT NULL,
1808
`f_int2` int(11) DEFAULT NULL,
1809
`f_char1` char(20) DEFAULT NULL,
1810
`f_char2` char(20) DEFAULT NULL,
1811
`f_charbig` varchar(1000) DEFAULT NULL,
1812
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
1813
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
1831
# check prerequisites-1 success: 1
1832
# check COUNT(*) success: 1
1833
# check MIN/MAX(f_int1) success: 1
1834
# check MIN/MAX(f_int2) success: 1
1835
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1836
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1837
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1838
WHERE f_int1 IN (2,3);
1839
ERROR 23000: Can't write; duplicate key in table 't1'
1840
# check prerequisites-3 success: 1
1841
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
1842
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1843
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
1844
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
1845
WHERE f_int1 IN (2,3);
1846
DELETE FROM t1 WHERE f_charbig = 'delete me';
1847
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1848
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
1849
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
1850
WHERE f_int1 IN (2,3);
1851
DELETE FROM t1 WHERE f_charbig = 'delete me';
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 COUNT(*) INTO @try_count FROM t0_template
1874
WHERE MOD(f_int1,3) = 0
1875
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
1876
SELECT COUNT(*) INTO @clash_count
1877
FROM t1 INNER JOIN t0_template USING(f_int1)
1878
WHERE MOD(f_int1,3) = 0
1879
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
1880
SELECT MIN(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-1 success: 1
1887
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1889
SET f_int1 = @cur_value , f_int2 = @cur_value,
1890
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1891
f_charbig = '#SINGLE#';
1893
# check single-2 success: 1
1894
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1895
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1896
UPDATE t1 SET f_int1 = @cur_value2
1897
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1899
# check single-3 success: 1
1900
SET @cur_value1= -1;
1901
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1902
UPDATE t1 SET f_int1 = @cur_value1
1903
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1905
# check single-4 success: 1
1906
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1907
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1909
# check single-5 success: 1
1910
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1912
# check single-6 success: 1
1913
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1914
ERROR HY000: Table has no partition for value 2147483647
1915
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1916
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1917
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1918
f_charbig = '#NULL#';
1920
SET f_int1 = NULL , f_int2 = -@max_row,
1921
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1922
f_charbig = '#NULL#';
1923
# check null success: 1
1925
# check null-1 success: 1
1926
UPDATE t1 SET f_int1 = -@max_row
1927
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1928
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1930
# check null-2 success: 1
1931
UPDATE t1 SET f_int1 = NULL
1932
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1933
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1935
# check null-3 success: 1
1937
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1938
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1940
# check null-4 success: 1
1942
WHERE f_int1 = 0 AND f_int2 = 0
1943
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1944
AND f_charbig = '#NULL#';
1945
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1946
SELECT f_int1, f_int1, '', '', 'was inserted'
1947
FROM t0_template source_tab
1948
WHERE MOD(f_int1,3) = 0
1949
AND f_int1 BETWEEN @max_row_div2 AND @max_row
1951
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
1952
f_int2 = 2 * @max_row + source_tab.f_int1,
1953
f_charbig = 'was updated';
1955
# check unique-1-a success: 1
1957
# check unique-1-b success: 1
1958
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1959
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1960
f_int2 = CAST(f_char1 AS SIGNED INT),
1961
f_charbig = CONCAT('===',f_char1,'===')
1962
WHERE f_charbig = 'was updated';
1963
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1964
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
1965
FROM t0_template source_tab
1966
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
1968
# check replace success: 1
1970
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
1972
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
1973
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
1974
UPDATE t1 SET f_int2 = f_int1,
1975
f_char1 = CAST(f_int1 AS CHAR),
1976
f_char2 = CAST(f_int1 AS CHAR),
1977
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
1978
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
1980
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1981
SELECT f_int1, f_int1, '', '', 'was inserted'
1982
FROM t0_template source_tab
1983
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1985
# check transactions-1 success: 1
1988
# check transactions-2 success: 1
1991
# check transactions-3 success: 1
1992
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1996
# check transactions-4 success: 1
1997
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1998
SELECT f_int1, f_int1, '', '', 'was inserted'
1999
FROM t0_template source_tab
2000
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2002
# check transactions-5 success: 1
2005
Warning 1196 Some non-transactional changed tables couldn't be rolled back
2007
# check transactions-6 success: 1
2008
# INFO: Storage engine used for t1 seems to be not transactional.
2011
# check transactions-7 success: 1
2012
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2014
SET @@session.sql_mode = 'traditional';
2015
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2016
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2017
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2018
'', '', 'was inserted' FROM t0_template
2019
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2020
ERROR 22012: Division by 0
2023
# check transactions-8 success: 1
2024
# INFO: Storage engine used for t1 seems to be unable to revert
2025
# changes made by the failing statement.
2026
SET @@session.sql_mode = '';
2028
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2030
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2032
# check special-1 success: 1
2033
UPDATE t1 SET f_charbig = '';
2035
# check special-2 success: 1
2036
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2037
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2038
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2040
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2041
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2042
'just inserted' FROM t0_template
2043
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2044
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2046
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2047
f_charbig = 'updated by trigger'
2048
WHERE f_int1 = new.f_int1;
2050
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2051
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2052
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2054
# check trigger-1 success: 1
2056
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2057
f_int2 = CAST(f_char1 AS SIGNED INT),
2058
f_charbig = 'just inserted'
2059
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2061
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2062
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2063
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2064
'just inserted' FROM t0_template
2065
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2066
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2068
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2069
f_charbig = 'updated by trigger'
2070
WHERE f_int1 = new.f_int1;
2072
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2073
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2074
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2076
# check trigger-2 success: 1
2078
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2079
f_int2 = CAST(f_char1 AS SIGNED INT),
2080
f_charbig = 'just inserted'
2081
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2083
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2084
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2085
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2086
'just inserted' FROM t0_template
2087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2088
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2090
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2091
f_charbig = 'updated by trigger'
2092
WHERE f_int1 = new.f_int1;
2094
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2095
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2097
# check trigger-3 success: 1
2099
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2100
f_int2 = CAST(f_char1 AS SIGNED INT),
2101
f_charbig = 'just inserted'
2102
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2104
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2105
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2106
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2107
'just inserted' FROM t0_template
2108
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2109
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2111
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2112
f_charbig = 'updated by trigger'
2113
WHERE f_int1 = - old.f_int1;
2115
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2116
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2118
# check trigger-4 success: 1
2120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2121
f_int2 = CAST(f_char1 AS SIGNED INT),
2122
f_charbig = 'just inserted'
2123
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2125
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2127
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2128
'just inserted' FROM t0_template
2129
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2130
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2132
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2133
f_charbig = 'updated by trigger'
2134
WHERE f_int1 = new.f_int1;
2136
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2137
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2139
# check trigger-5 success: 1
2141
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2142
f_int2 = CAST(f_char1 AS SIGNED INT),
2143
f_charbig = 'just inserted'
2144
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2146
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2147
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2148
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2149
'just inserted' FROM t0_template
2150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2151
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2153
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2154
f_charbig = 'updated by trigger'
2155
WHERE f_int1 = - old.f_int1;
2157
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2158
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2160
# check trigger-6 success: 1
2162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2163
f_int2 = CAST(f_char1 AS SIGNED INT),
2164
f_charbig = 'just inserted'
2165
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2167
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2168
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2169
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2170
'just inserted' FROM t0_template
2171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2172
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2174
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2175
f_charbig = 'updated by trigger'
2176
WHERE f_int1 = - old.f_int1;
2179
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2181
# check trigger-7 success: 1
2183
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2184
f_int2 = CAST(f_char1 AS SIGNED INT),
2185
f_charbig = 'just inserted'
2186
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2188
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2189
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2190
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2191
'just inserted' FROM t0_template
2192
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2193
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2195
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2196
f_charbig = 'updated by trigger'
2197
WHERE f_int1 = - old.f_int1;
2200
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2202
# check trigger-8 success: 1
2204
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2205
f_int2 = CAST(f_char1 AS SIGNED INT),
2206
f_charbig = 'just inserted'
2207
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2209
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2211
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2212
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2214
SET new.f_int1 = old.f_int1 + @max_row,
2215
new.f_int2 = old.f_int2 - @max_row,
2216
new.f_charbig = '####updated per update trigger####';
2219
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2220
f_charbig = '####updated per update statement itself####';
2222
# check trigger-9 success: 1
2224
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2225
f_int2 = CAST(f_char1 AS SIGNED INT),
2226
f_charbig = CONCAT('===',f_char1,'===');
2227
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2229
SET new.f_int1 = new.f_int1 + @max_row,
2230
new.f_int2 = new.f_int2 - @max_row,
2231
new.f_charbig = '####updated per update trigger####';
2234
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2235
f_charbig = '####updated per update statement itself####';
2237
# check trigger-10 success: 1
2239
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2240
f_int2 = CAST(f_char1 AS SIGNED INT),
2241
f_charbig = CONCAT('===',f_char1,'===');
2242
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2244
SET new.f_int1 = @my_max1 + @counter,
2245
new.f_int2 = @my_min2 - @counter,
2246
new.f_charbig = '####updated per insert trigger####';
2247
SET @counter = @counter + 1;
2250
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2251
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2252
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2253
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2254
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2258
# check trigger-11 success: 1
2260
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2261
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2262
AND f_charbig = '####updated per insert trigger####';
2263
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2265
SET new.f_int1 = @my_max1 + @counter,
2266
new.f_int2 = @my_min2 - @counter,
2267
new.f_charbig = '####updated per insert trigger####';
2268
SET @counter = @counter + 1;
2271
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2272
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2273
SELECT CAST(f_int1 AS CHAR),
2274
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2275
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2279
# check trigger-12 success: 1
2281
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2282
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2283
AND f_charbig = '####updated per insert trigger####';
2285
Table Op Msg_type Msg_text
2286
test.t1 analyze note The storage engine for the table doesn't support analyze
2287
CHECK TABLE t1 EXTENDED;
2288
Table Op Msg_type Msg_text
2289
test.t1 check note The storage engine for the table doesn't support check
2290
CHECKSUM TABLE t1 EXTENDED;
2292
test.t1 <some_value>
2294
Table Op Msg_type Msg_text
2295
test.t1 optimize note The storage engine for the table doesn't support optimize
2296
# check layout success: 1
2297
REPAIR TABLE t1 EXTENDED;
2298
Table Op Msg_type Msg_text
2299
test.t1 repair note The storage engine for the table doesn't support repair
2300
# check layout success: 1
2303
# check TRUNCATE success: 1
2304
# check layout success: 1
2305
# End usability test (inc/partition_check.inc)
2312
f_charbig VARCHAR(1000)
2315
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
2316
(PARTITION parta VALUES LESS THAN (0),
2317
PARTITION partb VALUES LESS THAN (5),
2318
PARTITION partc VALUES LESS THAN (10),
2319
PARTITION partd VALUES LESS THAN (2147483646));
2320
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2321
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2322
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2323
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
2324
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2325
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2326
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2327
# Start usability test (inc/partition_check.inc)
2329
SHOW CREATE TABLE t1;
2331
t1 CREATE TABLE `t1` (
2332
`f_int1` int(11) DEFAULT NULL,
2333
`f_int2` int(11) DEFAULT NULL,
2334
`f_char1` char(20) DEFAULT NULL,
2335
`f_char2` char(20) DEFAULT NULL,
2336
`f_charbig` varchar(1000) DEFAULT NULL,
2337
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
2338
) ENGINE=MyISAM 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 = MyISAM, PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
2341
t1#P#parta#SP#partasp0.MYD
2342
t1#P#parta#SP#partasp0.MYI
2343
t1#P#parta#SP#partasp1.MYD
2344
t1#P#parta#SP#partasp1.MYI
2345
t1#P#partb#SP#partbsp0.MYD
2346
t1#P#partb#SP#partbsp0.MYI
2347
t1#P#partb#SP#partbsp1.MYD
2348
t1#P#partb#SP#partbsp1.MYI
2349
t1#P#partc#SP#partcsp0.MYD
2350
t1#P#partc#SP#partcsp0.MYI
2351
t1#P#partc#SP#partcsp1.MYD
2352
t1#P#partc#SP#partcsp1.MYI
2353
t1#P#partd#SP#partdsp0.MYD
2354
t1#P#partd#SP#partdsp0.MYI
2355
t1#P#partd#SP#partdsp1.MYD
2356
t1#P#partd#SP#partdsp1.MYI
2360
# check prerequisites-1 success: 1
2361
# check COUNT(*) success: 1
2362
# check MIN/MAX(f_int1) success: 1
2363
# check MIN/MAX(f_int2) success: 1
2364
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2365
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2366
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2367
WHERE f_int1 IN (2,3);
2368
ERROR 23000: Can't write; duplicate key in table 't1'
2369
# check prerequisites-3 success: 1
2370
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
2371
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2372
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
2373
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
2374
WHERE f_int1 IN (2,3);
2375
DELETE FROM t1 WHERE f_charbig = 'delete me';
2376
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2377
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
2378
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
2379
WHERE f_int1 IN (2,3);
2380
DELETE FROM t1 WHERE f_charbig = 'delete me';
2381
# check read via f_int1 success: 1
2382
# check read via f_int2 success: 1
2384
# check multiple-1 success: 1
2385
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2387
# check multiple-2 success: 1
2388
INSERT INTO t1 SELECT * FROM t0_template
2389
WHERE MOD(f_int1,3) = 0;
2391
# check multiple-3 success: 1
2392
UPDATE t1 SET f_int1 = f_int1 + @max_row
2393
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2394
AND @max_row_div2 + @max_row_div4;
2396
# check multiple-4 success: 1
2398
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2399
AND @max_row_div2 + @max_row_div4 + @max_row;
2401
# check multiple-5 success: 1
2402
SELECT COUNT(*) INTO @try_count FROM t0_template
2403
WHERE MOD(f_int1,3) = 0
2404
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
2405
SELECT COUNT(*) INTO @clash_count
2406
FROM t1 INNER JOIN t0_template USING(f_int1)
2407
WHERE MOD(f_int1,3) = 0
2408
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
2409
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2411
SET f_int1 = @cur_value , f_int2 = @cur_value,
2412
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2413
f_charbig = '#SINGLE#';
2415
# check single-1 success: 1
2416
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2418
SET f_int1 = @cur_value , f_int2 = @cur_value,
2419
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2420
f_charbig = '#SINGLE#';
2422
# check single-2 success: 1
2423
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2424
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2425
UPDATE t1 SET f_int1 = @cur_value2
2426
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2428
# check single-3 success: 1
2429
SET @cur_value1= -1;
2430
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2431
UPDATE t1 SET f_int1 = @cur_value1
2432
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2434
# check single-4 success: 1
2435
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2436
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2438
# check single-5 success: 1
2439
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2441
# check single-6 success: 1
2442
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2444
# check single-7 success: 1
2445
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2446
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2447
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2448
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2449
f_charbig = '#NULL#';
2451
SET f_int1 = NULL , f_int2 = -@max_row,
2452
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2453
f_charbig = '#NULL#';
2454
# check null success: 1
2456
# check null-1 success: 1
2457
UPDATE t1 SET f_int1 = -@max_row
2458
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2459
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2461
# check null-2 success: 1
2462
UPDATE t1 SET f_int1 = NULL
2463
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2464
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2466
# check null-3 success: 1
2468
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2469
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2471
# check null-4 success: 1
2473
WHERE f_int1 = 0 AND f_int2 = 0
2474
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2475
AND f_charbig = '#NULL#';
2476
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2477
SELECT f_int1, f_int1, '', '', 'was inserted'
2478
FROM t0_template source_tab
2479
WHERE MOD(f_int1,3) = 0
2480
AND f_int1 BETWEEN @max_row_div2 AND @max_row
2482
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
2483
f_int2 = 2 * @max_row + source_tab.f_int1,
2484
f_charbig = 'was updated';
2486
# check unique-1-a success: 1
2488
# check unique-1-b success: 1
2489
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2490
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2491
f_int2 = CAST(f_char1 AS SIGNED INT),
2492
f_charbig = CONCAT('===',f_char1,'===')
2493
WHERE f_charbig = 'was updated';
2494
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2495
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
2496
FROM t0_template source_tab
2497
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
2499
# check replace success: 1
2501
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
2503
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
2504
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
2505
UPDATE t1 SET f_int2 = f_int1,
2506
f_char1 = CAST(f_int1 AS CHAR),
2507
f_char2 = CAST(f_int1 AS CHAR),
2508
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
2509
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
2511
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2512
SELECT f_int1, f_int1, '', '', 'was inserted'
2513
FROM t0_template source_tab
2514
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2516
# check transactions-1 success: 1
2519
# check transactions-2 success: 1
2522
# check transactions-3 success: 1
2523
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2527
# check transactions-4 success: 1
2528
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2529
SELECT f_int1, f_int1, '', '', 'was inserted'
2530
FROM t0_template source_tab
2531
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2533
# check transactions-5 success: 1
2536
Warning 1196 Some non-transactional changed tables couldn't be rolled back
2538
# check transactions-6 success: 1
2539
# INFO: Storage engine used for t1 seems to be not transactional.
2542
# check transactions-7 success: 1
2543
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2545
SET @@session.sql_mode = 'traditional';
2546
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2547
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2548
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2549
'', '', 'was inserted' FROM t0_template
2550
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2551
ERROR 22012: Division by 0
2554
# check transactions-8 success: 1
2555
# INFO: Storage engine used for t1 seems to be unable to revert
2556
# changes made by the failing statement.
2557
SET @@session.sql_mode = '';
2559
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2561
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2563
# check special-1 success: 1
2564
UPDATE t1 SET f_charbig = '';
2566
# check special-2 success: 1
2567
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2568
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2569
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2571
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2572
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2573
'just inserted' FROM t0_template
2574
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2575
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2577
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2578
f_charbig = 'updated by trigger'
2579
WHERE f_int1 = new.f_int1;
2581
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2582
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2585
# check trigger-1 success: 1
2587
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2588
f_int2 = CAST(f_char1 AS SIGNED INT),
2589
f_charbig = 'just inserted'
2590
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2592
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2593
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2594
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2595
'just inserted' FROM t0_template
2596
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2597
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2599
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2600
f_charbig = 'updated by trigger'
2601
WHERE f_int1 = new.f_int1;
2603
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2604
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2605
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2607
# check trigger-2 success: 1
2609
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2610
f_int2 = CAST(f_char1 AS SIGNED INT),
2611
f_charbig = 'just inserted'
2612
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2614
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2615
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2616
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2617
'just inserted' FROM t0_template
2618
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2619
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2621
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2622
f_charbig = 'updated by trigger'
2623
WHERE f_int1 = new.f_int1;
2625
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2626
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2628
# check trigger-3 success: 1
2630
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2631
f_int2 = CAST(f_char1 AS SIGNED INT),
2632
f_charbig = 'just inserted'
2633
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2635
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2636
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2637
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2638
'just inserted' FROM t0_template
2639
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2640
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2642
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2643
f_charbig = 'updated by trigger'
2644
WHERE f_int1 = - old.f_int1;
2646
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2647
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2649
# check trigger-4 success: 1
2651
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2652
f_int2 = CAST(f_char1 AS SIGNED INT),
2653
f_charbig = 'just inserted'
2654
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2656
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2657
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2658
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2659
'just inserted' FROM t0_template
2660
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2661
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2663
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2664
f_charbig = 'updated by trigger'
2665
WHERE f_int1 = new.f_int1;
2667
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2668
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2670
# check trigger-5 success: 1
2672
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2673
f_int2 = CAST(f_char1 AS SIGNED INT),
2674
f_charbig = 'just inserted'
2675
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2677
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2678
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2679
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2680
'just inserted' FROM t0_template
2681
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2682
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2684
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2685
f_charbig = 'updated by trigger'
2686
WHERE f_int1 = - old.f_int1;
2688
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2689
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2691
# check trigger-6 success: 1
2693
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2694
f_int2 = CAST(f_char1 AS SIGNED INT),
2695
f_charbig = 'just inserted'
2696
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2698
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2699
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2700
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2701
'just inserted' FROM t0_template
2702
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2703
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2705
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2706
f_charbig = 'updated by trigger'
2707
WHERE f_int1 = - old.f_int1;
2710
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2712
# check trigger-7 success: 1
2714
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2715
f_int2 = CAST(f_char1 AS SIGNED INT),
2716
f_charbig = 'just inserted'
2717
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2719
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2720
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2721
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2722
'just inserted' FROM t0_template
2723
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2724
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2726
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2727
f_charbig = 'updated by trigger'
2728
WHERE f_int1 = - old.f_int1;
2731
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2733
# check trigger-8 success: 1
2735
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2736
f_int2 = CAST(f_char1 AS SIGNED INT),
2737
f_charbig = 'just inserted'
2738
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2740
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2743
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2745
SET new.f_int1 = old.f_int1 + @max_row,
2746
new.f_int2 = old.f_int2 - @max_row,
2747
new.f_charbig = '####updated per update trigger####';
2750
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2751
f_charbig = '####updated per update statement itself####';
2753
# check trigger-9 success: 1
2755
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2756
f_int2 = CAST(f_char1 AS SIGNED INT),
2757
f_charbig = CONCAT('===',f_char1,'===');
2758
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2760
SET new.f_int1 = new.f_int1 + @max_row,
2761
new.f_int2 = new.f_int2 - @max_row,
2762
new.f_charbig = '####updated per update trigger####';
2765
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2766
f_charbig = '####updated per update statement itself####';
2768
# check trigger-10 success: 1
2770
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2771
f_int2 = CAST(f_char1 AS SIGNED INT),
2772
f_charbig = CONCAT('===',f_char1,'===');
2773
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2775
SET new.f_int1 = @my_max1 + @counter,
2776
new.f_int2 = @my_min2 - @counter,
2777
new.f_charbig = '####updated per insert trigger####';
2778
SET @counter = @counter + 1;
2781
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2782
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2783
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2784
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2785
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2789
# check trigger-11 success: 1
2791
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2792
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2793
AND f_charbig = '####updated per insert trigger####';
2794
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2796
SET new.f_int1 = @my_max1 + @counter,
2797
new.f_int2 = @my_min2 - @counter,
2798
new.f_charbig = '####updated per insert trigger####';
2799
SET @counter = @counter + 1;
2802
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2803
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2804
SELECT CAST(f_int1 AS CHAR),
2805
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2806
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2810
# check trigger-12 success: 1
2812
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2813
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2814
AND f_charbig = '####updated per insert trigger####';
2816
Table Op Msg_type Msg_text
2817
test.t1 analyze note The storage engine for the table doesn't support analyze
2818
CHECK TABLE t1 EXTENDED;
2819
Table Op Msg_type Msg_text
2820
test.t1 check note The storage engine for the table doesn't support check
2821
CHECKSUM TABLE t1 EXTENDED;
2823
test.t1 <some_value>
2825
Table Op Msg_type Msg_text
2826
test.t1 optimize note The storage engine for the table doesn't support optimize
2827
# check layout success: 1
2828
REPAIR TABLE t1 EXTENDED;
2829
Table Op Msg_type Msg_text
2830
test.t1 repair note The storage engine for the table doesn't support repair
2831
# check layout success: 1
2834
# check TRUNCATE success: 1
2835
# check layout success: 1
2836
# End usability test (inc/partition_check.inc)
2843
f_charbig VARCHAR(1000)
2846
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
2847
(PARTITION part1 VALUES LESS THAN (0)
2848
(SUBPARTITION subpart11, SUBPARTITION subpart12),
2849
PARTITION part2 VALUES LESS THAN (5)
2850
(SUBPARTITION subpart21, SUBPARTITION subpart22),
2851
PARTITION part3 VALUES LESS THAN (10)
2852
(SUBPARTITION subpart31, SUBPARTITION subpart32),
2853
PARTITION part4 VALUES LESS THAN (2147483646)
2854
(SUBPARTITION subpart41, SUBPARTITION subpart42));
2855
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2856
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2857
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2858
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
2859
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2860
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2861
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2862
# Start usability test (inc/partition_check.inc)
2864
SHOW CREATE TABLE t1;
2866
t1 CREATE TABLE `t1` (
2867
`f_int1` int(11) DEFAULT NULL,
2868
`f_int2` int(11) DEFAULT NULL,
2869
`f_char1` char(20) DEFAULT NULL,
2870
`f_char2` char(20) DEFAULT NULL,
2871
`f_charbig` varchar(1000) DEFAULT NULL,
2872
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
2873
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */
2876
t1#P#part1#SP#subpart11.MYD
2877
t1#P#part1#SP#subpart11.MYI
2878
t1#P#part1#SP#subpart12.MYD
2879
t1#P#part1#SP#subpart12.MYI
2880
t1#P#part2#SP#subpart21.MYD
2881
t1#P#part2#SP#subpart21.MYI
2882
t1#P#part2#SP#subpart22.MYD
2883
t1#P#part2#SP#subpart22.MYI
2884
t1#P#part3#SP#subpart31.MYD
2885
t1#P#part3#SP#subpart31.MYI
2886
t1#P#part3#SP#subpart32.MYD
2887
t1#P#part3#SP#subpart32.MYI
2888
t1#P#part4#SP#subpart41.MYD
2889
t1#P#part4#SP#subpart41.MYI
2890
t1#P#part4#SP#subpart42.MYD
2891
t1#P#part4#SP#subpart42.MYI
2895
# check prerequisites-1 success: 1
2896
# check COUNT(*) success: 1
2897
# check MIN/MAX(f_int1) success: 1
2898
# check MIN/MAX(f_int2) success: 1
2899
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2900
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2901
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2902
WHERE f_int1 IN (2,3);
2903
ERROR 23000: Can't write; duplicate key in table 't1'
2904
# check prerequisites-3 success: 1
2905
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
2906
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2907
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
2908
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
2909
WHERE f_int1 IN (2,3);
2910
DELETE FROM t1 WHERE f_charbig = 'delete me';
2911
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2912
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
2913
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
2914
WHERE f_int1 IN (2,3);
2915
DELETE FROM t1 WHERE f_charbig = 'delete me';
2916
# check read via f_int1 success: 1
2917
# check read via f_int2 success: 1
2919
# check multiple-1 success: 1
2920
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2922
# check multiple-2 success: 1
2923
INSERT INTO t1 SELECT * FROM t0_template
2924
WHERE MOD(f_int1,3) = 0;
2926
# check multiple-3 success: 1
2927
UPDATE t1 SET f_int1 = f_int1 + @max_row
2928
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2929
AND @max_row_div2 + @max_row_div4;
2931
# check multiple-4 success: 1
2933
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2934
AND @max_row_div2 + @max_row_div4 + @max_row;
2936
# check multiple-5 success: 1
2937
SELECT COUNT(*) INTO @try_count FROM t0_template
2938
WHERE MOD(f_int1,3) = 0
2939
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
2940
SELECT COUNT(*) INTO @clash_count
2941
FROM t1 INNER JOIN t0_template USING(f_int1)
2942
WHERE MOD(f_int1,3) = 0
2943
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
2944
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2946
SET f_int1 = @cur_value , f_int2 = @cur_value,
2947
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2948
f_charbig = '#SINGLE#';
2950
# check single-1 success: 1
2951
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2953
SET f_int1 = @cur_value , f_int2 = @cur_value,
2954
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2955
f_charbig = '#SINGLE#';
2957
# check single-2 success: 1
2958
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2959
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2960
UPDATE t1 SET f_int1 = @cur_value2
2961
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2963
# check single-3 success: 1
2964
SET @cur_value1= -1;
2965
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2966
UPDATE t1 SET f_int1 = @cur_value1
2967
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2969
# check single-4 success: 1
2970
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2971
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2973
# check single-5 success: 1
2974
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2976
# check single-6 success: 1
2977
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2978
ERROR HY000: Table has no partition for value 2147483647
2979
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2980
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2981
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2982
f_charbig = '#NULL#';
2984
SET f_int1 = NULL , f_int2 = -@max_row,
2985
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2986
f_charbig = '#NULL#';
2987
# check null success: 1
2989
# check null-1 success: 1
2990
UPDATE t1 SET f_int1 = -@max_row
2991
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2992
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2994
# check null-2 success: 1
2995
UPDATE t1 SET f_int1 = NULL
2996
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2997
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2999
# check null-3 success: 1
3001
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3002
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3004
# check null-4 success: 1
3006
WHERE f_int1 = 0 AND f_int2 = 0
3007
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3008
AND f_charbig = '#NULL#';
3009
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3010
SELECT f_int1, f_int1, '', '', 'was inserted'
3011
FROM t0_template source_tab
3012
WHERE MOD(f_int1,3) = 0
3013
AND f_int1 BETWEEN @max_row_div2 AND @max_row
3015
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
3016
f_int2 = 2 * @max_row + source_tab.f_int1,
3017
f_charbig = 'was updated';
3019
# check unique-1-a success: 1
3021
# check unique-1-b success: 1
3022
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3023
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3024
f_int2 = CAST(f_char1 AS SIGNED INT),
3025
f_charbig = CONCAT('===',f_char1,'===')
3026
WHERE f_charbig = 'was updated';
3027
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3028
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
3029
FROM t0_template source_tab
3030
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
3032
# check replace success: 1
3034
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
3036
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
3037
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
3038
UPDATE t1 SET f_int2 = f_int1,
3039
f_char1 = CAST(f_int1 AS CHAR),
3040
f_char2 = CAST(f_int1 AS CHAR),
3041
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
3042
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
3044
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3045
SELECT f_int1, f_int1, '', '', 'was inserted'
3046
FROM t0_template source_tab
3047
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3049
# check transactions-1 success: 1
3052
# check transactions-2 success: 1
3055
# check transactions-3 success: 1
3056
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3060
# check transactions-4 success: 1
3061
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3062
SELECT f_int1, f_int1, '', '', 'was inserted'
3063
FROM t0_template source_tab
3064
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3066
# check transactions-5 success: 1
3069
Warning 1196 Some non-transactional changed tables couldn't be rolled back
3071
# check transactions-6 success: 1
3072
# INFO: Storage engine used for t1 seems to be not transactional.
3075
# check transactions-7 success: 1
3076
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3078
SET @@session.sql_mode = 'traditional';
3079
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3080
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3081
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3082
'', '', 'was inserted' FROM t0_template
3083
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3084
ERROR 22012: Division by 0
3087
# check transactions-8 success: 1
3088
# INFO: Storage engine used for t1 seems to be unable to revert
3089
# changes made by the failing statement.
3090
SET @@session.sql_mode = '';
3092
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3094
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3096
# check special-1 success: 1
3097
UPDATE t1 SET f_charbig = '';
3099
# check special-2 success: 1
3100
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3101
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3102
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3104
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3105
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3106
'just inserted' FROM t0_template
3107
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3108
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3110
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3111
f_charbig = 'updated by trigger'
3112
WHERE f_int1 = new.f_int1;
3114
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3115
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3116
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3118
# check trigger-1 success: 1
3120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3121
f_int2 = CAST(f_char1 AS SIGNED INT),
3122
f_charbig = 'just inserted'
3123
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3125
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3127
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3128
'just inserted' FROM t0_template
3129
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3130
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3132
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3133
f_charbig = 'updated by trigger'
3134
WHERE f_int1 = new.f_int1;
3136
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3137
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3138
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3140
# check trigger-2 success: 1
3142
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3143
f_int2 = CAST(f_char1 AS SIGNED INT),
3144
f_charbig = 'just inserted'
3145
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3147
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3148
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3149
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3150
'just inserted' FROM t0_template
3151
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3152
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3154
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3155
f_charbig = 'updated by trigger'
3156
WHERE f_int1 = new.f_int1;
3158
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3159
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3161
# check trigger-3 success: 1
3163
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3164
f_int2 = CAST(f_char1 AS SIGNED INT),
3165
f_charbig = 'just inserted'
3166
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3168
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3169
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3170
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3171
'just inserted' FROM t0_template
3172
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3173
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3175
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3176
f_charbig = 'updated by trigger'
3177
WHERE f_int1 = - old.f_int1;
3179
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3180
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3182
# check trigger-4 success: 1
3184
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3185
f_int2 = CAST(f_char1 AS SIGNED INT),
3186
f_charbig = 'just inserted'
3187
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3189
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3190
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3191
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3192
'just inserted' FROM t0_template
3193
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3194
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3196
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3197
f_charbig = 'updated by trigger'
3198
WHERE f_int1 = new.f_int1;
3200
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3201
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3203
# check trigger-5 success: 1
3205
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3206
f_int2 = CAST(f_char1 AS SIGNED INT),
3207
f_charbig = 'just inserted'
3208
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3210
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3211
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3212
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3213
'just inserted' FROM t0_template
3214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3215
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3217
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3218
f_charbig = 'updated by trigger'
3219
WHERE f_int1 = - old.f_int1;
3221
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3222
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3224
# check trigger-6 success: 1
3226
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3227
f_int2 = CAST(f_char1 AS SIGNED INT),
3228
f_charbig = 'just inserted'
3229
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3231
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3232
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3233
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3234
'just inserted' FROM t0_template
3235
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3236
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3238
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3239
f_charbig = 'updated by trigger'
3240
WHERE f_int1 = - old.f_int1;
3243
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3245
# check trigger-7 success: 1
3247
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3248
f_int2 = CAST(f_char1 AS SIGNED INT),
3249
f_charbig = 'just inserted'
3250
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3252
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3254
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3255
'just inserted' FROM t0_template
3256
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3257
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3259
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3260
f_charbig = 'updated by trigger'
3261
WHERE f_int1 = - old.f_int1;
3264
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3266
# check trigger-8 success: 1
3268
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3269
f_int2 = CAST(f_char1 AS SIGNED INT),
3270
f_charbig = 'just inserted'
3271
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3273
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3275
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3276
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3278
SET new.f_int1 = old.f_int1 + @max_row,
3279
new.f_int2 = old.f_int2 - @max_row,
3280
new.f_charbig = '####updated per update trigger####';
3283
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3284
f_charbig = '####updated per update statement itself####';
3286
# check trigger-9 success: 1
3288
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3289
f_int2 = CAST(f_char1 AS SIGNED INT),
3290
f_charbig = CONCAT('===',f_char1,'===');
3291
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3293
SET new.f_int1 = new.f_int1 + @max_row,
3294
new.f_int2 = new.f_int2 - @max_row,
3295
new.f_charbig = '####updated per update trigger####';
3298
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3299
f_charbig = '####updated per update statement itself####';
3301
# check trigger-10 success: 1
3303
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3304
f_int2 = CAST(f_char1 AS SIGNED INT),
3305
f_charbig = CONCAT('===',f_char1,'===');
3306
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3308
SET new.f_int1 = @my_max1 + @counter,
3309
new.f_int2 = @my_min2 - @counter,
3310
new.f_charbig = '####updated per insert trigger####';
3311
SET @counter = @counter + 1;
3314
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3315
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3316
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3317
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3322
# check trigger-11 success: 1
3324
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3325
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3326
AND f_charbig = '####updated per insert trigger####';
3327
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3329
SET new.f_int1 = @my_max1 + @counter,
3330
new.f_int2 = @my_min2 - @counter,
3331
new.f_charbig = '####updated per insert trigger####';
3332
SET @counter = @counter + 1;
3335
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3336
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3337
SELECT CAST(f_int1 AS CHAR),
3338
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3339
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3343
# check trigger-12 success: 1
3345
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3346
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3347
AND f_charbig = '####updated per insert trigger####';
3349
Table Op Msg_type Msg_text
3350
test.t1 analyze note The storage engine for the table doesn't support analyze
3351
CHECK TABLE t1 EXTENDED;
3352
Table Op Msg_type Msg_text
3353
test.t1 check note The storage engine for the table doesn't support check
3354
CHECKSUM TABLE t1 EXTENDED;
3356
test.t1 <some_value>
3358
Table Op Msg_type Msg_text
3359
test.t1 optimize note The storage engine for the table doesn't support optimize
3360
# check layout success: 1
3361
REPAIR TABLE t1 EXTENDED;
3362
Table Op Msg_type Msg_text
3363
test.t1 repair note The storage engine for the table doesn't support repair
3364
# check layout success: 1
3367
# check TRUNCATE success: 1
3368
# check layout success: 1
3369
# End usability test (inc/partition_check.inc)
3376
f_charbig VARCHAR(1000)
3379
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
3380
(PARTITION part1 VALUES IN (0)
3381
(SUBPARTITION sp11, SUBPARTITION sp12),
3382
PARTITION part2 VALUES IN (1)
3383
(SUBPARTITION sp21, SUBPARTITION sp22),
3384
PARTITION part3 VALUES IN (2)
3385
(SUBPARTITION sp31, SUBPARTITION sp32),
3386
PARTITION part4 VALUES IN (NULL)
3387
(SUBPARTITION sp41, SUBPARTITION sp42));
3388
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3389
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3390
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3391
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
3392
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3393
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3394
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3395
# Start usability test (inc/partition_check.inc)
3397
SHOW CREATE TABLE t1;
3399
t1 CREATE TABLE `t1` (
3400
`f_int1` int(11) DEFAULT NULL,
3401
`f_int2` int(11) DEFAULT NULL,
3402
`f_char1` char(20) DEFAULT NULL,
3403
`f_char2` char(20) DEFAULT NULL,
3404
`f_charbig` varchar(1000) DEFAULT NULL,
3405
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
3406
) ENGINE=MyISAM 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 = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */
3409
t1#P#part1#SP#sp11.MYD
3410
t1#P#part1#SP#sp11.MYI
3411
t1#P#part1#SP#sp12.MYD
3412
t1#P#part1#SP#sp12.MYI
3413
t1#P#part2#SP#sp21.MYD
3414
t1#P#part2#SP#sp21.MYI
3415
t1#P#part2#SP#sp22.MYD
3416
t1#P#part2#SP#sp22.MYI
3417
t1#P#part3#SP#sp31.MYD
3418
t1#P#part3#SP#sp31.MYI
3419
t1#P#part3#SP#sp32.MYD
3420
t1#P#part3#SP#sp32.MYI
3421
t1#P#part4#SP#sp41.MYD
3422
t1#P#part4#SP#sp41.MYI
3423
t1#P#part4#SP#sp42.MYD
3424
t1#P#part4#SP#sp42.MYI
3428
# check prerequisites-1 success: 1
3429
# check COUNT(*) success: 1
3430
# check MIN/MAX(f_int1) success: 1
3431
# check MIN/MAX(f_int2) success: 1
3432
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3433
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3434
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3435
WHERE f_int1 IN (2,3);
3436
ERROR 23000: Can't write; duplicate key in table 't1'
3437
# check prerequisites-3 success: 1
3438
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
3439
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3440
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
3441
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
3442
WHERE f_int1 IN (2,3);
3443
DELETE FROM t1 WHERE f_charbig = 'delete me';
3444
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3445
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
3446
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
3447
WHERE f_int1 IN (2,3);
3448
DELETE FROM t1 WHERE f_charbig = 'delete me';
3449
# check read via f_int1 success: 1
3450
# check read via f_int2 success: 1
3452
# check multiple-1 success: 1
3453
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3455
# check multiple-2 success: 1
3456
INSERT INTO t1 SELECT * FROM t0_template
3457
WHERE MOD(f_int1,3) = 0;
3459
# check multiple-3 success: 1
3460
UPDATE t1 SET f_int1 = f_int1 + @max_row
3461
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3462
AND @max_row_div2 + @max_row_div4;
3464
# check multiple-4 success: 1
3466
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3467
AND @max_row_div2 + @max_row_div4 + @max_row;
3469
# check multiple-5 success: 1
3470
SELECT COUNT(*) INTO @try_count FROM t0_template
3471
WHERE MOD(f_int1,3) = 0
3472
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
3473
SELECT COUNT(*) INTO @clash_count
3474
FROM t1 INNER JOIN t0_template USING(f_int1)
3475
WHERE MOD(f_int1,3) = 0
3476
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
3477
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3479
SET f_int1 = @cur_value , f_int2 = @cur_value,
3480
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3481
f_charbig = '#SINGLE#';
3483
# check single-1 success: 1
3484
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3486
SET f_int1 = @cur_value , f_int2 = @cur_value,
3487
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3488
f_charbig = '#SINGLE#';
3490
# check single-2 success: 1
3491
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3492
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3493
UPDATE t1 SET f_int1 = @cur_value2
3494
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3496
# check single-3 success: 1
3497
SET @cur_value1= -1;
3498
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3499
UPDATE t1 SET f_int1 = @cur_value1
3500
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3502
# check single-4 success: 1
3503
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3504
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3506
# check single-5 success: 1
3507
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3509
# check single-6 success: 1
3510
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3512
# check single-7 success: 1
3513
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3514
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3515
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3516
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3517
f_charbig = '#NULL#';
3519
SET f_int1 = NULL , f_int2 = -@max_row,
3520
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3521
f_charbig = '#NULL#';
3522
# check null success: 1
3524
# check null-1 success: 1
3525
UPDATE t1 SET f_int1 = -@max_row
3526
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3527
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3529
# check null-2 success: 1
3530
UPDATE t1 SET f_int1 = NULL
3531
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3532
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3534
# check null-3 success: 1
3536
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3537
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3539
# check null-4 success: 1
3541
WHERE f_int1 = 0 AND f_int2 = 0
3542
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3543
AND f_charbig = '#NULL#';
3544
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3545
SELECT f_int1, f_int1, '', '', 'was inserted'
3546
FROM t0_template source_tab
3547
WHERE MOD(f_int1,3) = 0
3548
AND f_int1 BETWEEN @max_row_div2 AND @max_row
3550
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
3551
f_int2 = 2 * @max_row + source_tab.f_int1,
3552
f_charbig = 'was updated';
3554
# check unique-1-a success: 1
3556
# check unique-1-b success: 1
3557
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3558
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3559
f_int2 = CAST(f_char1 AS SIGNED INT),
3560
f_charbig = CONCAT('===',f_char1,'===')
3561
WHERE f_charbig = 'was updated';
3562
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3563
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
3564
FROM t0_template source_tab
3565
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
3567
# check replace success: 1
3569
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
3571
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
3572
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
3573
UPDATE t1 SET f_int2 = f_int1,
3574
f_char1 = CAST(f_int1 AS CHAR),
3575
f_char2 = CAST(f_int1 AS CHAR),
3576
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
3577
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
3579
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3580
SELECT f_int1, f_int1, '', '', 'was inserted'
3581
FROM t0_template source_tab
3582
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3584
# check transactions-1 success: 1
3587
# check transactions-2 success: 1
3590
# check transactions-3 success: 1
3591
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3595
# check transactions-4 success: 1
3596
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3597
SELECT f_int1, f_int1, '', '', 'was inserted'
3598
FROM t0_template source_tab
3599
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3601
# check transactions-5 success: 1
3604
Warning 1196 Some non-transactional changed tables couldn't be rolled back
3606
# check transactions-6 success: 1
3607
# INFO: Storage engine used for t1 seems to be not transactional.
3610
# check transactions-7 success: 1
3611
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3613
SET @@session.sql_mode = 'traditional';
3614
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3615
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3616
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3617
'', '', 'was inserted' FROM t0_template
3618
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3619
ERROR 22012: Division by 0
3622
# check transactions-8 success: 1
3623
# INFO: Storage engine used for t1 seems to be unable to revert
3624
# changes made by the failing statement.
3625
SET @@session.sql_mode = '';
3627
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3629
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3631
# check special-1 success: 1
3632
UPDATE t1 SET f_charbig = '';
3634
# check special-2 success: 1
3635
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3636
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3637
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3638
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3639
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3640
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3641
'just inserted' FROM t0_template
3642
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3643
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3645
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3646
f_charbig = 'updated by trigger'
3647
WHERE f_int1 = new.f_int1;
3649
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3650
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3651
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3653
# check trigger-1 success: 1
3655
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3656
f_int2 = CAST(f_char1 AS SIGNED INT),
3657
f_charbig = 'just inserted'
3658
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3660
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3661
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3662
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3663
'just inserted' FROM t0_template
3664
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3665
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3667
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3668
f_charbig = 'updated by trigger'
3669
WHERE f_int1 = new.f_int1;
3671
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3672
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3675
# check trigger-2 success: 1
3677
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3678
f_int2 = CAST(f_char1 AS SIGNED INT),
3679
f_charbig = 'just inserted'
3680
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3682
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3683
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3684
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3685
'just inserted' FROM t0_template
3686
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3687
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3689
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3690
f_charbig = 'updated by trigger'
3691
WHERE f_int1 = new.f_int1;
3693
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3694
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3696
# check trigger-3 success: 1
3698
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3699
f_int2 = CAST(f_char1 AS SIGNED INT),
3700
f_charbig = 'just inserted'
3701
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3703
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3704
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3705
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3706
'just inserted' FROM t0_template
3707
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3708
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3710
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3711
f_charbig = 'updated by trigger'
3712
WHERE f_int1 = - old.f_int1;
3714
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3715
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3717
# check trigger-4 success: 1
3719
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3720
f_int2 = CAST(f_char1 AS SIGNED INT),
3721
f_charbig = 'just inserted'
3722
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3724
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3725
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3726
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3727
'just inserted' FROM t0_template
3728
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3729
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3731
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3732
f_charbig = 'updated by trigger'
3733
WHERE f_int1 = new.f_int1;
3735
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3736
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3738
# check trigger-5 success: 1
3740
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3741
f_int2 = CAST(f_char1 AS SIGNED INT),
3742
f_charbig = 'just inserted'
3743
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3745
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3746
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3747
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3748
'just inserted' FROM t0_template
3749
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3750
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3752
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3753
f_charbig = 'updated by trigger'
3754
WHERE f_int1 = - old.f_int1;
3756
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3757
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3759
# check trigger-6 success: 1
3761
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3762
f_int2 = CAST(f_char1 AS SIGNED INT),
3763
f_charbig = 'just inserted'
3764
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3766
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3767
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3768
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3769
'just inserted' FROM t0_template
3770
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3771
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3773
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3774
f_charbig = 'updated by trigger'
3775
WHERE f_int1 = - old.f_int1;
3778
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3780
# check trigger-7 success: 1
3782
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3783
f_int2 = CAST(f_char1 AS SIGNED INT),
3784
f_charbig = 'just inserted'
3785
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3787
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3788
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3789
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3790
'just inserted' FROM t0_template
3791
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3792
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3794
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3795
f_charbig = 'updated by trigger'
3796
WHERE f_int1 = - old.f_int1;
3799
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3801
# check trigger-8 success: 1
3803
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3804
f_int2 = CAST(f_char1 AS SIGNED INT),
3805
f_charbig = 'just inserted'
3806
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3808
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3810
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3811
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3813
SET new.f_int1 = old.f_int1 + @max_row,
3814
new.f_int2 = old.f_int2 - @max_row,
3815
new.f_charbig = '####updated per update trigger####';
3818
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3819
f_charbig = '####updated per update statement itself####';
3821
# check trigger-9 success: 1
3823
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3824
f_int2 = CAST(f_char1 AS SIGNED INT),
3825
f_charbig = CONCAT('===',f_char1,'===');
3826
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3828
SET new.f_int1 = new.f_int1 + @max_row,
3829
new.f_int2 = new.f_int2 - @max_row,
3830
new.f_charbig = '####updated per update trigger####';
3833
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3834
f_charbig = '####updated per update statement itself####';
3836
# check trigger-10 success: 1
3838
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3839
f_int2 = CAST(f_char1 AS SIGNED INT),
3840
f_charbig = CONCAT('===',f_char1,'===');
3841
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3843
SET new.f_int1 = @my_max1 + @counter,
3844
new.f_int2 = @my_min2 - @counter,
3845
new.f_charbig = '####updated per insert trigger####';
3846
SET @counter = @counter + 1;
3849
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3850
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3851
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3852
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3853
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3857
# check trigger-11 success: 1
3859
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3860
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3861
AND f_charbig = '####updated per insert trigger####';
3862
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3864
SET new.f_int1 = @my_max1 + @counter,
3865
new.f_int2 = @my_min2 - @counter,
3866
new.f_charbig = '####updated per insert trigger####';
3867
SET @counter = @counter + 1;
3870
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3871
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3872
SELECT CAST(f_int1 AS CHAR),
3873
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3874
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3878
# check trigger-12 success: 1
3880
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3881
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3882
AND f_charbig = '####updated per insert trigger####';
3884
Table Op Msg_type Msg_text
3885
test.t1 analyze note The storage engine for the table doesn't support analyze
3886
CHECK TABLE t1 EXTENDED;
3887
Table Op Msg_type Msg_text
3888
test.t1 check note The storage engine for the table doesn't support check
3889
CHECKSUM TABLE t1 EXTENDED;
3891
test.t1 <some_value>
3893
Table Op Msg_type Msg_text
3894
test.t1 optimize note The storage engine for the table doesn't support optimize
3895
# check layout success: 1
3896
REPAIR TABLE t1 EXTENDED;
3897
Table Op Msg_type Msg_text
3898
test.t1 repair note The storage engine for the table doesn't support repair
3899
# check layout success: 1
3902
# check TRUNCATE success: 1
3903
# check layout success: 1
3904
# End usability test (inc/partition_check.inc)
3911
f_charbig VARCHAR(1000)
3914
PARTITION BY LIST(ABS(MOD(f_int1,2)))
3915
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
3916
(PARTITION part1 VALUES IN (0),
3917
PARTITION part2 VALUES IN (1),
3918
PARTITION part3 VALUES IN (NULL));
3919
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3920
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3921
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3922
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
3923
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3924
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3925
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3926
# Start usability test (inc/partition_check.inc)
3928
SHOW CREATE TABLE t1;
3930
t1 CREATE TABLE `t1` (
3931
`f_int1` int(11) DEFAULT NULL,
3932
`f_int2` int(11) DEFAULT NULL,
3933
`f_char1` char(20) DEFAULT NULL,
3934
`f_char2` char(20) DEFAULT NULL,
3935
`f_charbig` varchar(1000) DEFAULT NULL,
3936
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
3937
) ENGINE=MyISAM 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 = MyISAM, PARTITION part2 VALUES IN (1) ENGINE = MyISAM, PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
3940
t1#P#part1#SP#part1sp0.MYD
3941
t1#P#part1#SP#part1sp0.MYI
3942
t1#P#part1#SP#part1sp1.MYD
3943
t1#P#part1#SP#part1sp1.MYI
3944
t1#P#part1#SP#part1sp2.MYD
3945
t1#P#part1#SP#part1sp2.MYI
3946
t1#P#part2#SP#part2sp0.MYD
3947
t1#P#part2#SP#part2sp0.MYI
3948
t1#P#part2#SP#part2sp1.MYD
3949
t1#P#part2#SP#part2sp1.MYI
3950
t1#P#part2#SP#part2sp2.MYD
3951
t1#P#part2#SP#part2sp2.MYI
3952
t1#P#part3#SP#part3sp0.MYD
3953
t1#P#part3#SP#part3sp0.MYI
3954
t1#P#part3#SP#part3sp1.MYD
3955
t1#P#part3#SP#part3sp1.MYI
3956
t1#P#part3#SP#part3sp2.MYD
3957
t1#P#part3#SP#part3sp2.MYI
3961
# check prerequisites-1 success: 1
3962
# check COUNT(*) success: 1
3963
# check MIN/MAX(f_int1) success: 1
3964
# check MIN/MAX(f_int2) success: 1
3965
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3966
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3967
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3968
WHERE f_int1 IN (2,3);
3969
ERROR 23000: Can't write; duplicate key in table 't1'
3970
# check prerequisites-3 success: 1
3971
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
3972
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3973
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
3974
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
3975
WHERE f_int1 IN (2,3);
3976
DELETE FROM t1 WHERE f_charbig = 'delete me';
3977
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3978
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
3979
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
3980
WHERE f_int1 IN (2,3);
3981
DELETE FROM t1 WHERE f_charbig = 'delete me';
3982
# check read via f_int1 success: 1
3983
# check read via f_int2 success: 1
3985
# check multiple-1 success: 1
3986
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3988
# check multiple-2 success: 1
3989
INSERT INTO t1 SELECT * FROM t0_template
3990
WHERE MOD(f_int1,3) = 0;
3992
# check multiple-3 success: 1
3993
UPDATE t1 SET f_int1 = f_int1 + @max_row
3994
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3995
AND @max_row_div2 + @max_row_div4;
3997
# check multiple-4 success: 1
3999
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4000
AND @max_row_div2 + @max_row_div4 + @max_row;
4002
# check multiple-5 success: 1
4003
SELECT COUNT(*) INTO @try_count FROM t0_template
4004
WHERE MOD(f_int1,3) = 0
4005
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4006
SELECT COUNT(*) INTO @clash_count
4007
FROM t1 INNER JOIN t0_template USING(f_int1)
4008
WHERE MOD(f_int1,3) = 0
4009
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4010
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4012
SET f_int1 = @cur_value , f_int2 = @cur_value,
4013
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4014
f_charbig = '#SINGLE#';
4016
# check single-1 success: 1
4017
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4019
SET f_int1 = @cur_value , f_int2 = @cur_value,
4020
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4021
f_charbig = '#SINGLE#';
4023
# check single-2 success: 1
4024
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4025
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4026
UPDATE t1 SET f_int1 = @cur_value2
4027
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4029
# check single-3 success: 1
4030
SET @cur_value1= -1;
4031
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4032
UPDATE t1 SET f_int1 = @cur_value1
4033
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4035
# check single-4 success: 1
4036
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4037
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4039
# check single-5 success: 1
4040
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4042
# check single-6 success: 1
4043
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4045
# check single-7 success: 1
4046
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4047
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4048
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4049
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4050
f_charbig = '#NULL#';
4052
SET f_int1 = NULL , f_int2 = -@max_row,
4053
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4054
f_charbig = '#NULL#';
4055
# check null success: 1
4057
# check null-1 success: 1
4058
UPDATE t1 SET f_int1 = -@max_row
4059
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4060
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4062
# check null-2 success: 1
4063
UPDATE t1 SET f_int1 = NULL
4064
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4065
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4067
# check null-3 success: 1
4069
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4070
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4072
# check null-4 success: 1
4074
WHERE f_int1 = 0 AND f_int2 = 0
4075
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4076
AND f_charbig = '#NULL#';
4077
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4078
SELECT f_int1, f_int1, '', '', 'was inserted'
4079
FROM t0_template source_tab
4080
WHERE MOD(f_int1,3) = 0
4081
AND f_int1 BETWEEN @max_row_div2 AND @max_row
4083
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
4084
f_int2 = 2 * @max_row + source_tab.f_int1,
4085
f_charbig = 'was updated';
4087
# check unique-1-a success: 1
4089
# check unique-1-b success: 1
4090
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4091
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4092
f_int2 = CAST(f_char1 AS SIGNED INT),
4093
f_charbig = CONCAT('===',f_char1,'===')
4094
WHERE f_charbig = 'was updated';
4095
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4096
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
4097
FROM t0_template source_tab
4098
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4100
# check replace success: 1
4102
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
4104
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
4105
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
4106
UPDATE t1 SET f_int2 = f_int1,
4107
f_char1 = CAST(f_int1 AS CHAR),
4108
f_char2 = CAST(f_int1 AS CHAR),
4109
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
4110
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
4112
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4113
SELECT f_int1, f_int1, '', '', 'was inserted'
4114
FROM t0_template source_tab
4115
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4117
# check transactions-1 success: 1
4120
# check transactions-2 success: 1
4123
# check transactions-3 success: 1
4124
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4128
# check transactions-4 success: 1
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-5 success: 1
4137
Warning 1196 Some non-transactional changed tables couldn't be rolled back
4139
# check transactions-6 success: 1
4140
# INFO: Storage engine used for t1 seems to be not transactional.
4143
# check transactions-7 success: 1
4144
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4146
SET @@session.sql_mode = 'traditional';
4147
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4148
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4149
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4150
'', '', 'was inserted' FROM t0_template
4151
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4152
ERROR 22012: Division by 0
4155
# check transactions-8 success: 1
4156
# INFO: Storage engine used for t1 seems to be unable to revert
4157
# changes made by the failing statement.
4158
SET @@session.sql_mode = '';
4160
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4162
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4164
# check special-1 success: 1
4165
UPDATE t1 SET f_charbig = '';
4167
# check special-2 success: 1
4168
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4169
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4170
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4172
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4173
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4174
'just inserted' FROM t0_template
4175
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4176
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4178
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4179
f_charbig = 'updated by trigger'
4180
WHERE f_int1 = new.f_int1;
4182
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4183
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4184
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4186
# check trigger-1 success: 1
4188
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4189
f_int2 = CAST(f_char1 AS SIGNED INT),
4190
f_charbig = 'just inserted'
4191
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4193
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4194
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4195
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4196
'just inserted' FROM t0_template
4197
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4198
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4200
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4201
f_charbig = 'updated by trigger'
4202
WHERE f_int1 = new.f_int1;
4204
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4205
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4206
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4208
# check trigger-2 success: 1
4210
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4211
f_int2 = CAST(f_char1 AS SIGNED INT),
4212
f_charbig = 'just inserted'
4213
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4215
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4216
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4217
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4218
'just inserted' FROM t0_template
4219
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4220
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4222
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4223
f_charbig = 'updated by trigger'
4224
WHERE f_int1 = new.f_int1;
4226
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4227
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4229
# check trigger-3 success: 1
4231
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4232
f_int2 = CAST(f_char1 AS SIGNED INT),
4233
f_charbig = 'just inserted'
4234
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4236
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4237
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4238
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4239
'just inserted' FROM t0_template
4240
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4241
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4243
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4244
f_charbig = 'updated by trigger'
4245
WHERE f_int1 = - old.f_int1;
4247
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4248
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4250
# check trigger-4 success: 1
4252
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4253
f_int2 = CAST(f_char1 AS SIGNED INT),
4254
f_charbig = 'just inserted'
4255
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4257
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4258
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4259
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4260
'just inserted' FROM t0_template
4261
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4262
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4264
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4265
f_charbig = 'updated by trigger'
4266
WHERE f_int1 = new.f_int1;
4268
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4269
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4271
# check trigger-5 success: 1
4273
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4274
f_int2 = CAST(f_char1 AS SIGNED INT),
4275
f_charbig = 'just inserted'
4276
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4278
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4279
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4280
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4281
'just inserted' FROM t0_template
4282
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4283
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4285
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4286
f_charbig = 'updated by trigger'
4287
WHERE f_int1 = - old.f_int1;
4289
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4290
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4292
# check trigger-6 success: 1
4294
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4295
f_int2 = CAST(f_char1 AS SIGNED INT),
4296
f_charbig = 'just inserted'
4297
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4299
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4300
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4301
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4302
'just inserted' FROM t0_template
4303
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4304
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4306
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4307
f_charbig = 'updated by trigger'
4308
WHERE f_int1 = - old.f_int1;
4311
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4313
# check trigger-7 success: 1
4315
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4316
f_int2 = CAST(f_char1 AS SIGNED INT),
4317
f_charbig = 'just inserted'
4318
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4320
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4321
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4322
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4323
'just inserted' FROM t0_template
4324
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4325
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4327
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4328
f_charbig = 'updated by trigger'
4329
WHERE f_int1 = - old.f_int1;
4332
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4334
# check trigger-8 success: 1
4336
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4337
f_int2 = CAST(f_char1 AS SIGNED INT),
4338
f_charbig = 'just inserted'
4339
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4341
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4343
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4344
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4346
SET new.f_int1 = old.f_int1 + @max_row,
4347
new.f_int2 = old.f_int2 - @max_row,
4348
new.f_charbig = '####updated per update trigger####';
4351
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4352
f_charbig = '####updated per update statement itself####';
4354
# check trigger-9 success: 1
4356
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4357
f_int2 = CAST(f_char1 AS SIGNED INT),
4358
f_charbig = CONCAT('===',f_char1,'===');
4359
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4361
SET new.f_int1 = new.f_int1 + @max_row,
4362
new.f_int2 = new.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-10 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_3 BEFORE INSERT ON t1 FOR EACH ROW
4376
SET new.f_int1 = @my_max1 + @counter,
4377
new.f_int2 = @my_min2 - @counter,
4378
new.f_charbig = '####updated per insert trigger####';
4379
SET @counter = @counter + 1;
4382
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4383
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4384
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4385
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4386
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4390
# check trigger-11 success: 1
4392
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4393
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4394
AND f_charbig = '####updated per insert trigger####';
4395
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4397
SET new.f_int1 = @my_max1 + @counter,
4398
new.f_int2 = @my_min2 - @counter,
4399
new.f_charbig = '####updated per insert trigger####';
4400
SET @counter = @counter + 1;
4403
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4404
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4405
SELECT CAST(f_int1 AS CHAR),
4406
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4407
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4411
# check trigger-12 success: 1
4413
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4414
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4415
AND f_charbig = '####updated per insert trigger####';
4417
Table Op Msg_type Msg_text
4418
test.t1 analyze note The storage engine for the table doesn't support analyze
4419
CHECK TABLE t1 EXTENDED;
4420
Table Op Msg_type Msg_text
4421
test.t1 check note The storage engine for the table doesn't support check
4422
CHECKSUM TABLE t1 EXTENDED;
4424
test.t1 <some_value>
4426
Table Op Msg_type Msg_text
4427
test.t1 optimize note The storage engine for the table doesn't support optimize
4428
# check layout success: 1
4429
REPAIR TABLE t1 EXTENDED;
4430
Table Op Msg_type Msg_text
4431
test.t1 repair note The storage engine for the table doesn't support repair
4432
# check layout success: 1
4435
# check TRUNCATE success: 1
4436
# check layout success: 1
4437
# End usability test (inc/partition_check.inc)
4439
DROP TABLE IF EXISTS t1;
4445
f_charbig VARCHAR(1000)
4448
PARTITION BY HASH(f_int1) PARTITIONS 2;
4449
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4450
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4451
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4452
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
4453
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4454
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4455
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4456
# Start usability test (inc/partition_check.inc)
4458
SHOW CREATE TABLE t1;
4460
t1 CREATE TABLE `t1` (
4461
`f_int1` int(11) DEFAULT NULL,
4462
`f_int2` int(11) DEFAULT NULL,
4463
`f_char1` char(20) DEFAULT NULL,
4464
`f_char2` char(20) DEFAULT NULL,
4465
`f_charbig` varchar(1000) DEFAULT NULL,
4466
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
4467
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) PARTITIONS 2 */
4477
# check prerequisites-1 success: 1
4478
# check COUNT(*) success: 1
4479
# check MIN/MAX(f_int1) success: 1
4480
# check MIN/MAX(f_int2) success: 1
4481
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4482
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4483
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4484
WHERE f_int1 IN (2,3);
4485
ERROR 23000: Can't write; duplicate key in table 't1'
4486
# check prerequisites-3 success: 1
4487
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
4488
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4489
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
4490
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
4491
WHERE f_int1 IN (2,3);
4492
DELETE FROM t1 WHERE f_charbig = 'delete me';
4493
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4494
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
4495
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
4496
WHERE f_int1 IN (2,3);
4497
DELETE FROM t1 WHERE f_charbig = 'delete me';
4498
# check read via f_int1 success: 1
4499
# check read via f_int2 success: 1
4501
# check multiple-1 success: 1
4502
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4504
# check multiple-2 success: 1
4505
INSERT INTO t1 SELECT * FROM t0_template
4506
WHERE MOD(f_int1,3) = 0;
4508
# check multiple-3 success: 1
4509
UPDATE t1 SET f_int1 = f_int1 + @max_row
4510
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4511
AND @max_row_div2 + @max_row_div4;
4513
# check multiple-4 success: 1
4515
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4516
AND @max_row_div2 + @max_row_div4 + @max_row;
4518
# check multiple-5 success: 1
4519
SELECT COUNT(*) INTO @try_count FROM t0_template
4520
WHERE MOD(f_int1,3) = 0
4521
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4522
SELECT COUNT(*) INTO @clash_count
4523
FROM t1 INNER JOIN t0_template USING(f_int1)
4524
WHERE MOD(f_int1,3) = 0
4525
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4526
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4528
SET f_int1 = @cur_value , f_int2 = @cur_value,
4529
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4530
f_charbig = '#SINGLE#';
4532
# check single-1 success: 1
4533
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4535
SET f_int1 = @cur_value , f_int2 = @cur_value,
4536
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4537
f_charbig = '#SINGLE#';
4539
# check single-2 success: 1
4540
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4541
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4542
UPDATE t1 SET f_int1 = @cur_value2
4543
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4545
# check single-3 success: 1
4546
SET @cur_value1= -1;
4547
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4548
UPDATE t1 SET f_int1 = @cur_value1
4549
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4551
# check single-4 success: 1
4552
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4553
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4555
# check single-5 success: 1
4556
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4558
# check single-6 success: 1
4559
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4561
# check single-7 success: 1
4562
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4563
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4564
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4565
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4566
f_charbig = '#NULL#';
4568
SET f_int1 = NULL , f_int2 = -@max_row,
4569
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4570
f_charbig = '#NULL#';
4571
# check null success: 1
4573
# check null-1 success: 1
4574
UPDATE t1 SET f_int1 = -@max_row
4575
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4576
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4578
# check null-2 success: 1
4579
UPDATE t1 SET f_int1 = NULL
4580
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4581
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4583
# check null-3 success: 1
4585
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4586
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4588
# check null-4 success: 1
4590
WHERE f_int1 = 0 AND f_int2 = 0
4591
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4592
AND f_charbig = '#NULL#';
4593
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4594
SELECT f_int1, f_int1, '', '', 'was inserted'
4595
FROM t0_template source_tab
4596
WHERE MOD(f_int1,3) = 0
4597
AND f_int1 BETWEEN @max_row_div2 AND @max_row
4599
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
4600
f_int2 = 2 * @max_row + source_tab.f_int1,
4601
f_charbig = 'was updated';
4603
# check unique-1-a success: 1
4605
# check unique-1-b success: 1
4606
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4607
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4608
f_int2 = CAST(f_char1 AS SIGNED INT),
4609
f_charbig = CONCAT('===',f_char1,'===')
4610
WHERE f_charbig = 'was updated';
4611
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4612
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
4613
FROM t0_template source_tab
4614
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
4616
# check replace success: 1
4618
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
4620
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
4621
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
4622
UPDATE t1 SET f_int2 = f_int1,
4623
f_char1 = CAST(f_int1 AS CHAR),
4624
f_char2 = CAST(f_int1 AS CHAR),
4625
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
4626
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
4628
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4629
SELECT f_int1, f_int1, '', '', 'was inserted'
4630
FROM t0_template source_tab
4631
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4633
# check transactions-1 success: 1
4636
# check transactions-2 success: 1
4639
# check transactions-3 success: 1
4640
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4644
# check transactions-4 success: 1
4645
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4646
SELECT f_int1, f_int1, '', '', 'was inserted'
4647
FROM t0_template source_tab
4648
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4650
# check transactions-5 success: 1
4653
Warning 1196 Some non-transactional changed tables couldn't be rolled back
4655
# check transactions-6 success: 1
4656
# INFO: Storage engine used for t1 seems to be not transactional.
4659
# check transactions-7 success: 1
4660
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4662
SET @@session.sql_mode = 'traditional';
4663
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4664
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4665
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4666
'', '', 'was inserted' FROM t0_template
4667
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4668
ERROR 22012: Division by 0
4671
# check transactions-8 success: 1
4672
# INFO: Storage engine used for t1 seems to be unable to revert
4673
# changes made by the failing statement.
4674
SET @@session.sql_mode = '';
4676
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4678
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4680
# check special-1 success: 1
4681
UPDATE t1 SET f_charbig = '';
4683
# check special-2 success: 1
4684
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4685
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4686
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4687
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4688
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4689
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4690
'just inserted' FROM t0_template
4691
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4692
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4694
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4695
f_charbig = 'updated by trigger'
4696
WHERE f_int1 = new.f_int1;
4698
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4699
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4700
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4702
# check trigger-1 success: 1
4704
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4705
f_int2 = CAST(f_char1 AS SIGNED INT),
4706
f_charbig = 'just inserted'
4707
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4709
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4710
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4711
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4712
'just inserted' FROM t0_template
4713
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4714
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4716
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4717
f_charbig = 'updated by trigger'
4718
WHERE f_int1 = new.f_int1;
4720
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4721
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4722
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4724
# check trigger-2 success: 1
4726
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4727
f_int2 = CAST(f_char1 AS SIGNED INT),
4728
f_charbig = 'just inserted'
4729
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4731
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4732
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4733
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4734
'just inserted' FROM t0_template
4735
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4736
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4738
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4739
f_charbig = 'updated by trigger'
4740
WHERE f_int1 = new.f_int1;
4742
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4743
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4745
# check trigger-3 success: 1
4747
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4748
f_int2 = CAST(f_char1 AS SIGNED INT),
4749
f_charbig = 'just inserted'
4750
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4752
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4753
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4754
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4755
'just inserted' FROM t0_template
4756
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4757
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4759
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4760
f_charbig = 'updated by trigger'
4761
WHERE f_int1 = - old.f_int1;
4763
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4764
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4766
# check trigger-4 success: 1
4768
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4769
f_int2 = CAST(f_char1 AS SIGNED INT),
4770
f_charbig = 'just inserted'
4771
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4773
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4774
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4775
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4776
'just inserted' FROM t0_template
4777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4778
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4780
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4781
f_charbig = 'updated by trigger'
4782
WHERE f_int1 = new.f_int1;
4784
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4785
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4787
# check trigger-5 success: 1
4789
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4790
f_int2 = CAST(f_char1 AS SIGNED INT),
4791
f_charbig = 'just inserted'
4792
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4794
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4795
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4796
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4797
'just inserted' FROM t0_template
4798
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4799
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4801
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4802
f_charbig = 'updated by trigger'
4803
WHERE f_int1 = - old.f_int1;
4805
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4806
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4808
# check trigger-6 success: 1
4810
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4811
f_int2 = CAST(f_char1 AS SIGNED INT),
4812
f_charbig = 'just inserted'
4813
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4815
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4816
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4817
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4818
'just inserted' FROM t0_template
4819
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4820
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4822
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4823
f_charbig = 'updated by trigger'
4824
WHERE f_int1 = - old.f_int1;
4827
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4829
# check trigger-7 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 = 'just inserted'
4834
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4836
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4837
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4838
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4839
'just inserted' FROM t0_template
4840
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4841
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4843
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4844
f_charbig = 'updated by trigger'
4845
WHERE f_int1 = - old.f_int1;
4848
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4850
# check trigger-8 success: 1
4852
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4853
f_int2 = CAST(f_char1 AS SIGNED INT),
4854
f_charbig = 'just inserted'
4855
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4857
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4859
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4860
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4862
SET new.f_int1 = old.f_int1 + @max_row,
4863
new.f_int2 = old.f_int2 - @max_row,
4864
new.f_charbig = '####updated per update trigger####';
4867
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4868
f_charbig = '####updated per update statement itself####';
4870
# check trigger-9 success: 1
4872
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4873
f_int2 = CAST(f_char1 AS SIGNED INT),
4874
f_charbig = CONCAT('===',f_char1,'===');
4875
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4877
SET new.f_int1 = new.f_int1 + @max_row,
4878
new.f_int2 = new.f_int2 - @max_row,
4879
new.f_charbig = '####updated per update trigger####';
4882
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4883
f_charbig = '####updated per update statement itself####';
4885
# check trigger-10 success: 1
4887
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4888
f_int2 = CAST(f_char1 AS SIGNED INT),
4889
f_charbig = CONCAT('===',f_char1,'===');
4890
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4892
SET new.f_int1 = @my_max1 + @counter,
4893
new.f_int2 = @my_min2 - @counter,
4894
new.f_charbig = '####updated per insert trigger####';
4895
SET @counter = @counter + 1;
4898
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4899
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4900
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4901
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4902
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4906
# check trigger-11 success: 1
4908
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4909
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4910
AND f_charbig = '####updated per insert trigger####';
4911
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4913
SET new.f_int1 = @my_max1 + @counter,
4914
new.f_int2 = @my_min2 - @counter,
4915
new.f_charbig = '####updated per insert trigger####';
4916
SET @counter = @counter + 1;
4919
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4920
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4921
SELECT CAST(f_int1 AS CHAR),
4922
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4923
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4927
# check trigger-12 success: 1
4929
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4930
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4931
AND f_charbig = '####updated per insert trigger####';
4933
Table Op Msg_type Msg_text
4934
test.t1 analyze note The storage engine for the table doesn't support analyze
4935
CHECK TABLE t1 EXTENDED;
4936
Table Op Msg_type Msg_text
4937
test.t1 check note The storage engine for the table doesn't support check
4938
CHECKSUM TABLE t1 EXTENDED;
4940
test.t1 <some_value>
4942
Table Op Msg_type Msg_text
4943
test.t1 optimize note The storage engine for the table doesn't support optimize
4944
# check layout success: 1
4945
REPAIR TABLE t1 EXTENDED;
4946
Table Op Msg_type Msg_text
4947
test.t1 repair note The storage engine for the table doesn't support repair
4948
# check layout success: 1
4951
# check TRUNCATE success: 1
4952
# check layout success: 1
4953
# End usability test (inc/partition_check.inc)
4960
f_charbig VARCHAR(1000)
4963
PARTITION BY KEY(f_int1) PARTITIONS 5;
4964
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4965
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4966
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4967
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
4968
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4969
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4970
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4971
# Start usability test (inc/partition_check.inc)
4973
SHOW CREATE TABLE t1;
4975
t1 CREATE TABLE `t1` (
4976
`f_int1` int(11) DEFAULT NULL,
4977
`f_int2` int(11) DEFAULT NULL,
4978
`f_char1` char(20) DEFAULT NULL,
4979
`f_char2` char(20) DEFAULT NULL,
4980
`f_charbig` varchar(1000) DEFAULT NULL,
4981
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
4982
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) PARTITIONS 5 */
4998
# check prerequisites-1 success: 1
4999
# check COUNT(*) success: 1
5000
# check MIN/MAX(f_int1) success: 1
5001
# check MIN/MAX(f_int2) success: 1
5002
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5003
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5004
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5005
WHERE f_int1 IN (2,3);
5006
ERROR 23000: Can't write; duplicate key in table 't1'
5007
# check prerequisites-3 success: 1
5008
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
5009
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5010
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5011
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5012
WHERE f_int1 IN (2,3);
5013
DELETE FROM t1 WHERE f_charbig = 'delete me';
5014
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5015
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5016
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5017
WHERE f_int1 IN (2,3);
5018
DELETE FROM t1 WHERE f_charbig = 'delete me';
5019
# check read via f_int1 success: 1
5020
# check read via f_int2 success: 1
5022
# check multiple-1 success: 1
5023
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5025
# check multiple-2 success: 1
5026
INSERT INTO t1 SELECT * FROM t0_template
5027
WHERE MOD(f_int1,3) = 0;
5029
# check multiple-3 success: 1
5030
UPDATE t1 SET f_int1 = f_int1 + @max_row
5031
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5032
AND @max_row_div2 + @max_row_div4;
5034
# check multiple-4 success: 1
5036
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5037
AND @max_row_div2 + @max_row_div4 + @max_row;
5039
# check multiple-5 success: 1
5040
SELECT COUNT(*) INTO @try_count FROM t0_template
5041
WHERE MOD(f_int1,3) = 0
5042
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5043
SELECT COUNT(*) INTO @clash_count
5044
FROM t1 INNER JOIN t0_template USING(f_int1)
5045
WHERE MOD(f_int1,3) = 0
5046
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5047
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5049
SET f_int1 = @cur_value , f_int2 = @cur_value,
5050
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5051
f_charbig = '#SINGLE#';
5053
# check single-1 success: 1
5054
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5056
SET f_int1 = @cur_value , f_int2 = @cur_value,
5057
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5058
f_charbig = '#SINGLE#';
5060
# check single-2 success: 1
5061
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5062
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5063
UPDATE t1 SET f_int1 = @cur_value2
5064
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5066
# check single-3 success: 1
5067
SET @cur_value1= -1;
5068
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5069
UPDATE t1 SET f_int1 = @cur_value1
5070
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5072
# check single-4 success: 1
5073
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5074
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5076
# check single-5 success: 1
5077
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5079
# check single-6 success: 1
5080
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5082
# check single-7 success: 1
5083
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
5084
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5085
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5086
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5087
f_charbig = '#NULL#';
5089
SET f_int1 = NULL , f_int2 = -@max_row,
5090
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5091
f_charbig = '#NULL#';
5092
# check null success: 1
5094
# check null-1 success: 1
5095
UPDATE t1 SET f_int1 = -@max_row
5096
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5097
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5099
# check null-2 success: 1
5100
UPDATE t1 SET f_int1 = NULL
5101
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5102
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5104
# check null-3 success: 1
5106
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5107
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5109
# check null-4 success: 1
5111
WHERE f_int1 = 0 AND f_int2 = 0
5112
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5113
AND f_charbig = '#NULL#';
5114
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5115
SELECT f_int1, f_int1, '', '', 'was inserted'
5116
FROM t0_template source_tab
5117
WHERE MOD(f_int1,3) = 0
5118
AND f_int1 BETWEEN @max_row_div2 AND @max_row
5120
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
5121
f_int2 = 2 * @max_row + source_tab.f_int1,
5122
f_charbig = 'was updated';
5124
# check unique-1-a success: 1
5126
# check unique-1-b success: 1
5127
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5128
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5129
f_int2 = CAST(f_char1 AS SIGNED INT),
5130
f_charbig = CONCAT('===',f_char1,'===')
5131
WHERE f_charbig = 'was updated';
5132
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5133
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
5134
FROM t0_template source_tab
5135
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5137
# check replace success: 1
5139
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
5141
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
5142
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
5143
UPDATE t1 SET f_int2 = f_int1,
5144
f_char1 = CAST(f_int1 AS CHAR),
5145
f_char2 = CAST(f_int1 AS CHAR),
5146
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
5147
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
5149
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5150
SELECT f_int1, f_int1, '', '', 'was inserted'
5151
FROM t0_template source_tab
5152
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5154
# check transactions-1 success: 1
5157
# check transactions-2 success: 1
5160
# check transactions-3 success: 1
5161
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5165
# check transactions-4 success: 1
5166
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5167
SELECT f_int1, f_int1, '', '', 'was inserted'
5168
FROM t0_template source_tab
5169
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5171
# check transactions-5 success: 1
5174
Warning 1196 Some non-transactional changed tables couldn't be rolled back
5176
# check transactions-6 success: 1
5177
# INFO: Storage engine used for t1 seems to be not transactional.
5180
# check transactions-7 success: 1
5181
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5183
SET @@session.sql_mode = 'traditional';
5184
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5185
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5186
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5187
'', '', 'was inserted' FROM t0_template
5188
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5189
ERROR 22012: Division by 0
5192
# check transactions-8 success: 1
5193
# INFO: Storage engine used for t1 seems to be unable to revert
5194
# changes made by the failing statement.
5195
SET @@session.sql_mode = '';
5197
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5199
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5201
# check special-1 success: 1
5202
UPDATE t1 SET f_charbig = '';
5204
# check special-2 success: 1
5205
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5206
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5207
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5208
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5209
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5210
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5211
'just inserted' FROM t0_template
5212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5213
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5215
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5216
f_charbig = 'updated by trigger'
5217
WHERE f_int1 = new.f_int1;
5219
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5220
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5221
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5223
# check trigger-1 success: 1
5225
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5226
f_int2 = CAST(f_char1 AS SIGNED INT),
5227
f_charbig = 'just inserted'
5228
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5230
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5231
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5232
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5233
'just inserted' FROM t0_template
5234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5235
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5237
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5238
f_charbig = 'updated by trigger'
5239
WHERE f_int1 = new.f_int1;
5241
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5242
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5243
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5245
# check trigger-2 success: 1
5247
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5248
f_int2 = CAST(f_char1 AS SIGNED INT),
5249
f_charbig = 'just inserted'
5250
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5252
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5254
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5255
'just inserted' FROM t0_template
5256
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5257
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5259
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5260
f_charbig = 'updated by trigger'
5261
WHERE f_int1 = new.f_int1;
5263
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5264
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5266
# check trigger-3 success: 1
5268
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5269
f_int2 = CAST(f_char1 AS SIGNED INT),
5270
f_charbig = 'just inserted'
5271
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5273
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5274
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5275
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5276
'just inserted' FROM t0_template
5277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5278
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5280
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5281
f_charbig = 'updated by trigger'
5282
WHERE f_int1 = - old.f_int1;
5284
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5285
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5287
# check trigger-4 success: 1
5289
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5290
f_int2 = CAST(f_char1 AS SIGNED INT),
5291
f_charbig = 'just inserted'
5292
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5294
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5295
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5296
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5297
'just inserted' FROM t0_template
5298
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5299
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5301
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5302
f_charbig = 'updated by trigger'
5303
WHERE f_int1 = new.f_int1;
5305
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5306
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5308
# check trigger-5 success: 1
5310
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5311
f_int2 = CAST(f_char1 AS SIGNED INT),
5312
f_charbig = 'just inserted'
5313
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5315
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5316
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5317
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5318
'just inserted' FROM t0_template
5319
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5320
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5322
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5323
f_charbig = 'updated by trigger'
5324
WHERE f_int1 = - old.f_int1;
5326
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5327
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5329
# check trigger-6 success: 1
5331
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5332
f_int2 = CAST(f_char1 AS SIGNED INT),
5333
f_charbig = 'just inserted'
5334
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5336
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5337
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5338
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5339
'just inserted' FROM t0_template
5340
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5341
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5343
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5344
f_charbig = 'updated by trigger'
5345
WHERE f_int1 = - old.f_int1;
5348
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5350
# check trigger-7 success: 1
5352
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5353
f_int2 = CAST(f_char1 AS SIGNED INT),
5354
f_charbig = 'just inserted'
5355
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5357
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5358
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5359
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5360
'just inserted' FROM t0_template
5361
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5362
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5364
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5365
f_charbig = 'updated by trigger'
5366
WHERE f_int1 = - old.f_int1;
5369
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5371
# check trigger-8 success: 1
5373
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5374
f_int2 = CAST(f_char1 AS SIGNED INT),
5375
f_charbig = 'just inserted'
5376
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5378
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5381
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5383
SET new.f_int1 = old.f_int1 + @max_row,
5384
new.f_int2 = old.f_int2 - @max_row,
5385
new.f_charbig = '####updated per update trigger####';
5388
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5389
f_charbig = '####updated per update statement itself####';
5391
# check trigger-9 success: 1
5393
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5394
f_int2 = CAST(f_char1 AS SIGNED INT),
5395
f_charbig = CONCAT('===',f_char1,'===');
5396
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5398
SET new.f_int1 = new.f_int1 + @max_row,
5399
new.f_int2 = new.f_int2 - @max_row,
5400
new.f_charbig = '####updated per update trigger####';
5403
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5404
f_charbig = '####updated per update statement itself####';
5406
# check trigger-10 success: 1
5408
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5409
f_int2 = CAST(f_char1 AS SIGNED INT),
5410
f_charbig = CONCAT('===',f_char1,'===');
5411
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5413
SET new.f_int1 = @my_max1 + @counter,
5414
new.f_int2 = @my_min2 - @counter,
5415
new.f_charbig = '####updated per insert trigger####';
5416
SET @counter = @counter + 1;
5419
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5420
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5421
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5422
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5423
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5427
# check trigger-11 success: 1
5429
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5430
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5431
AND f_charbig = '####updated per insert trigger####';
5432
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5434
SET new.f_int1 = @my_max1 + @counter,
5435
new.f_int2 = @my_min2 - @counter,
5436
new.f_charbig = '####updated per insert trigger####';
5437
SET @counter = @counter + 1;
5440
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5441
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5442
SELECT CAST(f_int1 AS CHAR),
5443
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5444
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5448
# check trigger-12 success: 1
5450
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5451
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5452
AND f_charbig = '####updated per insert trigger####';
5454
Table Op Msg_type Msg_text
5455
test.t1 analyze note The storage engine for the table doesn't support analyze
5456
CHECK TABLE t1 EXTENDED;
5457
Table Op Msg_type Msg_text
5458
test.t1 check note The storage engine for the table doesn't support check
5459
CHECKSUM TABLE t1 EXTENDED;
5461
test.t1 <some_value>
5463
Table Op Msg_type Msg_text
5464
test.t1 optimize note The storage engine for the table doesn't support optimize
5465
# check layout success: 1
5466
REPAIR TABLE t1 EXTENDED;
5467
Table Op Msg_type Msg_text
5468
test.t1 repair note The storage engine for the table doesn't support repair
5469
# check layout success: 1
5472
# check TRUNCATE success: 1
5473
# check layout success: 1
5474
# End usability test (inc/partition_check.inc)
5481
f_charbig VARCHAR(1000)
5484
PARTITION BY LIST(MOD(f_int1,4))
5485
(PARTITION part_3 VALUES IN (-3),
5486
PARTITION part_2 VALUES IN (-2),
5487
PARTITION part_1 VALUES IN (-1),
5488
PARTITION part_N VALUES IN (NULL),
5489
PARTITION part0 VALUES IN (0),
5490
PARTITION part1 VALUES IN (1),
5491
PARTITION part2 VALUES IN (2),
5492
PARTITION part3 VALUES IN (3));
5493
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5494
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5495
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5496
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
5497
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5498
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5499
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5500
# Start usability test (inc/partition_check.inc)
5502
SHOW CREATE TABLE t1;
5504
t1 CREATE TABLE `t1` (
5505
`f_int1` int(11) DEFAULT NULL,
5506
`f_int2` int(11) DEFAULT NULL,
5507
`f_char1` char(20) DEFAULT NULL,
5508
`f_char2` char(20) DEFAULT NULL,
5509
`f_charbig` varchar(1000) DEFAULT NULL,
5510
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
5511
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM, PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM, PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM, PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM, PARTITION part0 VALUES IN (0) ENGINE = MyISAM, PARTITION part1 VALUES IN (1) ENGINE = MyISAM, PARTITION part2 VALUES IN (2) ENGINE = MyISAM, PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
5533
# check prerequisites-1 success: 1
5534
# check COUNT(*) success: 1
5535
# check MIN/MAX(f_int1) success: 1
5536
# check MIN/MAX(f_int2) success: 1
5537
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5538
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5539
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5540
WHERE f_int1 IN (2,3);
5541
ERROR 23000: Can't write; duplicate key in table 't1'
5542
# check prerequisites-3 success: 1
5543
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
5544
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5545
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5546
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5547
WHERE f_int1 IN (2,3);
5548
DELETE FROM t1 WHERE f_charbig = 'delete me';
5549
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5550
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
5551
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
5552
WHERE f_int1 IN (2,3);
5553
DELETE FROM t1 WHERE f_charbig = 'delete me';
5554
# check read via f_int1 success: 1
5555
# check read via f_int2 success: 1
5557
# check multiple-1 success: 1
5558
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5560
# check multiple-2 success: 1
5561
INSERT INTO t1 SELECT * FROM t0_template
5562
WHERE MOD(f_int1,3) = 0;
5564
# check multiple-3 success: 1
5565
UPDATE t1 SET f_int1 = f_int1 + @max_row
5566
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5567
AND @max_row_div2 + @max_row_div4;
5569
# check multiple-4 success: 1
5571
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5572
AND @max_row_div2 + @max_row_div4 + @max_row;
5574
# check multiple-5 success: 1
5575
SELECT COUNT(*) INTO @try_count FROM t0_template
5576
WHERE MOD(f_int1,3) = 0
5577
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5578
SELECT COUNT(*) INTO @clash_count
5579
FROM t1 INNER JOIN t0_template USING(f_int1)
5580
WHERE MOD(f_int1,3) = 0
5581
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5582
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5584
SET f_int1 = @cur_value , f_int2 = @cur_value,
5585
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5586
f_charbig = '#SINGLE#';
5588
# check single-1 success: 1
5589
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5591
SET f_int1 = @cur_value , f_int2 = @cur_value,
5592
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5593
f_charbig = '#SINGLE#';
5595
# check single-2 success: 1
5596
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5597
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5598
UPDATE t1 SET f_int1 = @cur_value2
5599
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5601
# check single-3 success: 1
5602
SET @cur_value1= -1;
5603
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5604
UPDATE t1 SET f_int1 = @cur_value1
5605
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5607
# check single-4 success: 1
5608
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5609
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5611
# check single-5 success: 1
5612
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5614
# check single-6 success: 1
5615
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5617
# check single-7 success: 1
5618
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
5619
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5620
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5621
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5622
f_charbig = '#NULL#';
5624
SET f_int1 = NULL , f_int2 = -@max_row,
5625
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5626
f_charbig = '#NULL#';
5627
# check null success: 1
5629
# check null-1 success: 1
5630
UPDATE t1 SET f_int1 = -@max_row
5631
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5632
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5634
# check null-2 success: 1
5635
UPDATE t1 SET f_int1 = NULL
5636
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5637
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5639
# check null-3 success: 1
5641
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5642
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5644
# check null-4 success: 1
5646
WHERE f_int1 = 0 AND f_int2 = 0
5647
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5648
AND f_charbig = '#NULL#';
5649
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5650
SELECT f_int1, f_int1, '', '', 'was inserted'
5651
FROM t0_template source_tab
5652
WHERE MOD(f_int1,3) = 0
5653
AND f_int1 BETWEEN @max_row_div2 AND @max_row
5655
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
5656
f_int2 = 2 * @max_row + source_tab.f_int1,
5657
f_charbig = 'was updated';
5659
# check unique-1-a success: 1
5661
# check unique-1-b success: 1
5662
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5663
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5664
f_int2 = CAST(f_char1 AS SIGNED INT),
5665
f_charbig = CONCAT('===',f_char1,'===')
5666
WHERE f_charbig = 'was updated';
5667
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5668
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
5669
FROM t0_template source_tab
5670
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
5672
# check replace success: 1
5674
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
5676
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
5677
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
5678
UPDATE t1 SET f_int2 = f_int1,
5679
f_char1 = CAST(f_int1 AS CHAR),
5680
f_char2 = CAST(f_int1 AS CHAR),
5681
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
5682
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
5684
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5685
SELECT f_int1, f_int1, '', '', 'was inserted'
5686
FROM t0_template source_tab
5687
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5689
# check transactions-1 success: 1
5692
# check transactions-2 success: 1
5695
# check transactions-3 success: 1
5696
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5700
# check transactions-4 success: 1
5701
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5702
SELECT f_int1, f_int1, '', '', 'was inserted'
5703
FROM t0_template source_tab
5704
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5706
# check transactions-5 success: 1
5709
Warning 1196 Some non-transactional changed tables couldn't be rolled back
5711
# check transactions-6 success: 1
5712
# INFO: Storage engine used for t1 seems to be not transactional.
5715
# check transactions-7 success: 1
5716
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5718
SET @@session.sql_mode = 'traditional';
5719
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5720
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5721
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5722
'', '', 'was inserted' FROM t0_template
5723
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5724
ERROR 22012: Division by 0
5727
# check transactions-8 success: 1
5728
# INFO: Storage engine used for t1 seems to be unable to revert
5729
# changes made by the failing statement.
5730
SET @@session.sql_mode = '';
5732
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5734
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5736
# check special-1 success: 1
5737
UPDATE t1 SET f_charbig = '';
5739
# check special-2 success: 1
5740
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5741
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5742
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5743
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5744
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5745
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5746
'just inserted' FROM t0_template
5747
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5748
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5750
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5751
f_charbig = 'updated by trigger'
5752
WHERE f_int1 = new.f_int1;
5754
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5755
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5756
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5758
# check trigger-1 success: 1
5760
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5761
f_int2 = CAST(f_char1 AS SIGNED INT),
5762
f_charbig = 'just inserted'
5763
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5765
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5766
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5767
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5768
'just inserted' FROM t0_template
5769
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5770
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5772
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5773
f_charbig = 'updated by trigger'
5774
WHERE f_int1 = new.f_int1;
5776
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5777
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5778
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5780
# check trigger-2 success: 1
5782
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5783
f_int2 = CAST(f_char1 AS SIGNED INT),
5784
f_charbig = 'just inserted'
5785
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5787
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5788
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5789
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5790
'just inserted' FROM t0_template
5791
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5792
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5794
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5795
f_charbig = 'updated by trigger'
5796
WHERE f_int1 = new.f_int1;
5798
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5799
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5801
# check trigger-3 success: 1
5803
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5804
f_int2 = CAST(f_char1 AS SIGNED INT),
5805
f_charbig = 'just inserted'
5806
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5808
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5809
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5810
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5811
'just inserted' FROM t0_template
5812
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5813
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5815
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5816
f_charbig = 'updated by trigger'
5817
WHERE f_int1 = - old.f_int1;
5819
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5820
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5822
# check trigger-4 success: 1
5824
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5825
f_int2 = CAST(f_char1 AS SIGNED INT),
5826
f_charbig = 'just inserted'
5827
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5829
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5830
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5831
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5832
'just inserted' FROM t0_template
5833
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5834
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5836
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5837
f_charbig = 'updated by trigger'
5838
WHERE f_int1 = new.f_int1;
5840
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5841
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5843
# check trigger-5 success: 1
5845
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5846
f_int2 = CAST(f_char1 AS SIGNED INT),
5847
f_charbig = 'just inserted'
5848
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5850
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5851
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5852
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5853
'just inserted' FROM t0_template
5854
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5855
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5857
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5858
f_charbig = 'updated by trigger'
5859
WHERE f_int1 = - old.f_int1;
5861
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5862
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5864
# check trigger-6 success: 1
5866
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5867
f_int2 = CAST(f_char1 AS SIGNED INT),
5868
f_charbig = 'just inserted'
5869
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5871
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5872
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5873
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5874
'just inserted' FROM t0_template
5875
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5876
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5878
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5879
f_charbig = 'updated by trigger'
5880
WHERE f_int1 = - old.f_int1;
5883
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5885
# check trigger-7 success: 1
5887
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5888
f_int2 = CAST(f_char1 AS SIGNED INT),
5889
f_charbig = 'just inserted'
5890
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5892
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5893
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5894
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5895
'just inserted' FROM t0_template
5896
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5897
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5899
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5900
f_charbig = 'updated by trigger'
5901
WHERE f_int1 = - old.f_int1;
5904
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5906
# check trigger-8 success: 1
5908
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5909
f_int2 = CAST(f_char1 AS SIGNED INT),
5910
f_charbig = 'just inserted'
5911
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5913
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5915
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5916
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5918
SET new.f_int1 = old.f_int1 + @max_row,
5919
new.f_int2 = old.f_int2 - @max_row,
5920
new.f_charbig = '####updated per update trigger####';
5923
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5924
f_charbig = '####updated per update statement itself####';
5926
# check trigger-9 success: 1
5928
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5929
f_int2 = CAST(f_char1 AS SIGNED INT),
5930
f_charbig = CONCAT('===',f_char1,'===');
5931
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5933
SET new.f_int1 = new.f_int1 + @max_row,
5934
new.f_int2 = new.f_int2 - @max_row,
5935
new.f_charbig = '####updated per update trigger####';
5938
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5939
f_charbig = '####updated per update statement itself####';
5941
# check trigger-10 success: 1
5943
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5944
f_int2 = CAST(f_char1 AS SIGNED INT),
5945
f_charbig = CONCAT('===',f_char1,'===');
5946
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5948
SET new.f_int1 = @my_max1 + @counter,
5949
new.f_int2 = @my_min2 - @counter,
5950
new.f_charbig = '####updated per insert trigger####';
5951
SET @counter = @counter + 1;
5954
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5955
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5956
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5957
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5958
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5962
# check trigger-11 success: 1
5964
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5965
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5966
AND f_charbig = '####updated per insert trigger####';
5967
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5969
SET new.f_int1 = @my_max1 + @counter,
5970
new.f_int2 = @my_min2 - @counter,
5971
new.f_charbig = '####updated per insert trigger####';
5972
SET @counter = @counter + 1;
5975
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5976
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5977
SELECT CAST(f_int1 AS CHAR),
5978
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5979
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5983
# check trigger-12 success: 1
5985
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5986
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5987
AND f_charbig = '####updated per insert trigger####';
5989
Table Op Msg_type Msg_text
5990
test.t1 analyze note The storage engine for the table doesn't support analyze
5991
CHECK TABLE t1 EXTENDED;
5992
Table Op Msg_type Msg_text
5993
test.t1 check note The storage engine for the table doesn't support check
5994
CHECKSUM TABLE t1 EXTENDED;
5996
test.t1 <some_value>
5998
Table Op Msg_type Msg_text
5999
test.t1 optimize note The storage engine for the table doesn't support optimize
6000
# check layout success: 1
6001
REPAIR TABLE t1 EXTENDED;
6002
Table Op Msg_type Msg_text
6003
test.t1 repair note The storage engine for the table doesn't support repair
6004
# check layout success: 1
6007
# check TRUNCATE success: 1
6008
# check layout success: 1
6009
# End usability test (inc/partition_check.inc)
6016
f_charbig VARCHAR(1000)
6019
PARTITION BY RANGE(f_int1)
6020
(PARTITION parta VALUES LESS THAN (0),
6021
PARTITION partb VALUES LESS THAN (5),
6022
PARTITION partc VALUES LESS THAN (10),
6023
PARTITION partd VALUES LESS THAN (10 + 5),
6024
PARTITION parte VALUES LESS THAN (20),
6025
PARTITION partf VALUES LESS THAN (2147483646));
6026
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6027
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6028
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6029
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
6030
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6031
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6032
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6033
# Start usability test (inc/partition_check.inc)
6035
SHOW CREATE TABLE t1;
6037
t1 CREATE TABLE `t1` (
6038
`f_int1` int(11) DEFAULT NULL,
6039
`f_int2` int(11) DEFAULT NULL,
6040
`f_char1` char(20) DEFAULT NULL,
6041
`f_char2` char(20) DEFAULT NULL,
6042
`f_charbig` varchar(1000) DEFAULT NULL,
6043
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
6044
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM, PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM, PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
6062
# check prerequisites-1 success: 1
6063
# check COUNT(*) success: 1
6064
# check MIN/MAX(f_int1) success: 1
6065
# check MIN/MAX(f_int2) success: 1
6066
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6067
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6068
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6069
WHERE f_int1 IN (2,3);
6070
ERROR 23000: Can't write; duplicate key in table 't1'
6071
# check prerequisites-3 success: 1
6072
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
6073
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6074
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6075
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6076
WHERE f_int1 IN (2,3);
6077
DELETE FROM t1 WHERE f_charbig = 'delete me';
6078
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6079
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6080
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6081
WHERE f_int1 IN (2,3);
6082
DELETE FROM t1 WHERE f_charbig = 'delete me';
6083
# check read via f_int1 success: 1
6084
# check read via f_int2 success: 1
6086
# check multiple-1 success: 1
6087
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6089
# check multiple-2 success: 1
6090
INSERT INTO t1 SELECT * FROM t0_template
6091
WHERE MOD(f_int1,3) = 0;
6093
# check multiple-3 success: 1
6094
UPDATE t1 SET f_int1 = f_int1 + @max_row
6095
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6096
AND @max_row_div2 + @max_row_div4;
6098
# check multiple-4 success: 1
6100
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6101
AND @max_row_div2 + @max_row_div4 + @max_row;
6103
# check multiple-5 success: 1
6104
SELECT COUNT(*) INTO @try_count FROM t0_template
6105
WHERE MOD(f_int1,3) = 0
6106
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6107
SELECT COUNT(*) INTO @clash_count
6108
FROM t1 INNER JOIN t0_template USING(f_int1)
6109
WHERE MOD(f_int1,3) = 0
6110
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6111
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6113
SET f_int1 = @cur_value , f_int2 = @cur_value,
6114
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6115
f_charbig = '#SINGLE#';
6117
# check single-1 success: 1
6118
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6120
SET f_int1 = @cur_value , f_int2 = @cur_value,
6121
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6122
f_charbig = '#SINGLE#';
6124
# check single-2 success: 1
6125
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6126
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6127
UPDATE t1 SET f_int1 = @cur_value2
6128
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6130
# check single-3 success: 1
6131
SET @cur_value1= -1;
6132
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6133
UPDATE t1 SET f_int1 = @cur_value1
6134
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6136
# check single-4 success: 1
6137
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6138
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6140
# check single-5 success: 1
6141
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6143
# check single-6 success: 1
6144
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6145
ERROR HY000: Table has no partition for value 2147483647
6146
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6147
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6148
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6149
f_charbig = '#NULL#';
6151
SET f_int1 = NULL , f_int2 = -@max_row,
6152
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6153
f_charbig = '#NULL#';
6154
# check null success: 1
6156
# check null-1 success: 1
6157
UPDATE t1 SET f_int1 = -@max_row
6158
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6159
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6161
# check null-2 success: 1
6162
UPDATE t1 SET f_int1 = NULL
6163
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6164
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6166
# check null-3 success: 1
6168
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6169
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6171
# check null-4 success: 1
6173
WHERE f_int1 = 0 AND f_int2 = 0
6174
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6175
AND f_charbig = '#NULL#';
6176
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6177
SELECT f_int1, f_int1, '', '', 'was inserted'
6178
FROM t0_template source_tab
6179
WHERE MOD(f_int1,3) = 0
6180
AND f_int1 BETWEEN @max_row_div2 AND @max_row
6182
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
6183
f_int2 = 2 * @max_row + source_tab.f_int1,
6184
f_charbig = 'was updated';
6186
# check unique-1-a success: 1
6188
# check unique-1-b success: 1
6189
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6190
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6191
f_int2 = CAST(f_char1 AS SIGNED INT),
6192
f_charbig = CONCAT('===',f_char1,'===')
6193
WHERE f_charbig = 'was updated';
6194
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6195
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
6196
FROM t0_template source_tab
6197
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6199
# check replace success: 1
6201
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
6203
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
6204
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
6205
UPDATE t1 SET f_int2 = f_int1,
6206
f_char1 = CAST(f_int1 AS CHAR),
6207
f_char2 = CAST(f_int1 AS CHAR),
6208
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
6209
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
6211
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6212
SELECT f_int1, f_int1, '', '', 'was inserted'
6213
FROM t0_template source_tab
6214
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6216
# check transactions-1 success: 1
6219
# check transactions-2 success: 1
6222
# check transactions-3 success: 1
6223
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6227
# check transactions-4 success: 1
6228
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6229
SELECT f_int1, f_int1, '', '', 'was inserted'
6230
FROM t0_template source_tab
6231
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6233
# check transactions-5 success: 1
6236
Warning 1196 Some non-transactional changed tables couldn't be rolled back
6238
# check transactions-6 success: 1
6239
# INFO: Storage engine used for t1 seems to be not transactional.
6242
# check transactions-7 success: 1
6243
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6245
SET @@session.sql_mode = 'traditional';
6246
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6247
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6248
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6249
'', '', 'was inserted' FROM t0_template
6250
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6251
ERROR 22012: Division by 0
6254
# check transactions-8 success: 1
6255
# INFO: Storage engine used for t1 seems to be unable to revert
6256
# changes made by the failing statement.
6257
SET @@session.sql_mode = '';
6259
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6261
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6263
# check special-1 success: 1
6264
UPDATE t1 SET f_charbig = '';
6266
# check special-2 success: 1
6267
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6268
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6269
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6270
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6271
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6272
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6273
'just inserted' FROM t0_template
6274
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6275
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6277
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6278
f_charbig = 'updated by trigger'
6279
WHERE f_int1 = new.f_int1;
6281
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6282
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6283
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6285
# check trigger-1 success: 1
6287
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6288
f_int2 = CAST(f_char1 AS SIGNED INT),
6289
f_charbig = 'just inserted'
6290
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6292
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6293
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6294
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6295
'just inserted' FROM t0_template
6296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6297
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6299
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6300
f_charbig = 'updated by trigger'
6301
WHERE f_int1 = new.f_int1;
6303
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6304
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6305
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6307
# check trigger-2 success: 1
6309
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6310
f_int2 = CAST(f_char1 AS SIGNED INT),
6311
f_charbig = 'just inserted'
6312
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6314
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6315
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6316
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6317
'just inserted' FROM t0_template
6318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6319
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6321
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6322
f_charbig = 'updated by trigger'
6323
WHERE f_int1 = new.f_int1;
6325
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6326
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6328
# check trigger-3 success: 1
6330
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6331
f_int2 = CAST(f_char1 AS SIGNED INT),
6332
f_charbig = 'just inserted'
6333
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6335
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6336
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6337
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6338
'just inserted' FROM t0_template
6339
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6340
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6342
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6343
f_charbig = 'updated by trigger'
6344
WHERE f_int1 = - old.f_int1;
6346
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6347
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6349
# check trigger-4 success: 1
6351
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6352
f_int2 = CAST(f_char1 AS SIGNED INT),
6353
f_charbig = 'just inserted'
6354
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6356
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6357
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6358
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6359
'just inserted' FROM t0_template
6360
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6361
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6363
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6364
f_charbig = 'updated by trigger'
6365
WHERE f_int1 = new.f_int1;
6367
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6368
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6370
# check trigger-5 success: 1
6372
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6373
f_int2 = CAST(f_char1 AS SIGNED INT),
6374
f_charbig = 'just inserted'
6375
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6377
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6378
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6379
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6380
'just inserted' FROM t0_template
6381
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6382
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6384
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6385
f_charbig = 'updated by trigger'
6386
WHERE f_int1 = - old.f_int1;
6388
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6389
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6391
# check trigger-6 success: 1
6393
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6394
f_int2 = CAST(f_char1 AS SIGNED INT),
6395
f_charbig = 'just inserted'
6396
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6398
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6399
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6400
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6401
'just inserted' FROM t0_template
6402
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6403
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6405
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6406
f_charbig = 'updated by trigger'
6407
WHERE f_int1 = - old.f_int1;
6410
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6412
# check trigger-7 success: 1
6414
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6415
f_int2 = CAST(f_char1 AS SIGNED INT),
6416
f_charbig = 'just inserted'
6417
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6419
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6420
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6421
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6422
'just inserted' FROM t0_template
6423
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6424
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6426
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6427
f_charbig = 'updated by trigger'
6428
WHERE f_int1 = - old.f_int1;
6431
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6433
# check trigger-8 success: 1
6435
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6436
f_int2 = CAST(f_char1 AS SIGNED INT),
6437
f_charbig = 'just inserted'
6438
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6440
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6442
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6443
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6445
SET new.f_int1 = old.f_int1 + @max_row,
6446
new.f_int2 = old.f_int2 - @max_row,
6447
new.f_charbig = '####updated per update trigger####';
6450
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6451
f_charbig = '####updated per update statement itself####';
6453
# check trigger-9 success: 1
6455
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6456
f_int2 = CAST(f_char1 AS SIGNED INT),
6457
f_charbig = CONCAT('===',f_char1,'===');
6458
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6460
SET new.f_int1 = new.f_int1 + @max_row,
6461
new.f_int2 = new.f_int2 - @max_row,
6462
new.f_charbig = '####updated per update trigger####';
6465
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6466
f_charbig = '####updated per update statement itself####';
6468
# check trigger-10 success: 1
6470
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6471
f_int2 = CAST(f_char1 AS SIGNED INT),
6472
f_charbig = CONCAT('===',f_char1,'===');
6473
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6475
SET new.f_int1 = @my_max1 + @counter,
6476
new.f_int2 = @my_min2 - @counter,
6477
new.f_charbig = '####updated per insert trigger####';
6478
SET @counter = @counter + 1;
6481
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6482
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6483
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6484
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6485
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6489
# check trigger-11 success: 1
6491
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6492
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6493
AND f_charbig = '####updated per insert trigger####';
6494
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6496
SET new.f_int1 = @my_max1 + @counter,
6497
new.f_int2 = @my_min2 - @counter,
6498
new.f_charbig = '####updated per insert trigger####';
6499
SET @counter = @counter + 1;
6502
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6503
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6504
SELECT CAST(f_int1 AS CHAR),
6505
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6506
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6510
# check trigger-12 success: 1
6512
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6513
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6514
AND f_charbig = '####updated per insert trigger####';
6516
Table Op Msg_type Msg_text
6517
test.t1 analyze note The storage engine for the table doesn't support analyze
6518
CHECK TABLE t1 EXTENDED;
6519
Table Op Msg_type Msg_text
6520
test.t1 check note The storage engine for the table doesn't support check
6521
CHECKSUM TABLE t1 EXTENDED;
6523
test.t1 <some_value>
6525
Table Op Msg_type Msg_text
6526
test.t1 optimize note The storage engine for the table doesn't support optimize
6527
# check layout success: 1
6528
REPAIR TABLE t1 EXTENDED;
6529
Table Op Msg_type Msg_text
6530
test.t1 repair note The storage engine for the table doesn't support repair
6531
# check layout success: 1
6534
# check TRUNCATE success: 1
6535
# check layout success: 1
6536
# End usability test (inc/partition_check.inc)
6543
f_charbig VARCHAR(1000)
6546
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
6547
(PARTITION parta VALUES LESS THAN (0),
6548
PARTITION partb VALUES LESS THAN (5),
6549
PARTITION partc VALUES LESS THAN (10),
6550
PARTITION partd VALUES LESS THAN (2147483646));
6551
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6552
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6553
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6554
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
6555
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6556
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6557
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6558
# Start usability test (inc/partition_check.inc)
6560
SHOW CREATE TABLE t1;
6562
t1 CREATE TABLE `t1` (
6563
`f_int1` int(11) DEFAULT NULL,
6564
`f_int2` int(11) DEFAULT NULL,
6565
`f_char1` char(20) DEFAULT NULL,
6566
`f_char2` char(20) DEFAULT NULL,
6567
`f_charbig` varchar(1000) DEFAULT NULL,
6568
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
6569
) ENGINE=MyISAM 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 = MyISAM, PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM, PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
6572
t1#P#parta#SP#partasp0.MYD
6573
t1#P#parta#SP#partasp0.MYI
6574
t1#P#parta#SP#partasp1.MYD
6575
t1#P#parta#SP#partasp1.MYI
6576
t1#P#partb#SP#partbsp0.MYD
6577
t1#P#partb#SP#partbsp0.MYI
6578
t1#P#partb#SP#partbsp1.MYD
6579
t1#P#partb#SP#partbsp1.MYI
6580
t1#P#partc#SP#partcsp0.MYD
6581
t1#P#partc#SP#partcsp0.MYI
6582
t1#P#partc#SP#partcsp1.MYD
6583
t1#P#partc#SP#partcsp1.MYI
6584
t1#P#partd#SP#partdsp0.MYD
6585
t1#P#partd#SP#partdsp0.MYI
6586
t1#P#partd#SP#partdsp1.MYD
6587
t1#P#partd#SP#partdsp1.MYI
6591
# check prerequisites-1 success: 1
6592
# check COUNT(*) success: 1
6593
# check MIN/MAX(f_int1) success: 1
6594
# check MIN/MAX(f_int2) success: 1
6595
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6596
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6597
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6598
WHERE f_int1 IN (2,3);
6599
ERROR 23000: Can't write; duplicate key in table 't1'
6600
# check prerequisites-3 success: 1
6601
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
6602
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6603
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6604
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6605
WHERE f_int1 IN (2,3);
6606
DELETE FROM t1 WHERE f_charbig = 'delete me';
6607
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6608
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
6609
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
6610
WHERE f_int1 IN (2,3);
6611
DELETE FROM t1 WHERE f_charbig = 'delete me';
6612
# check read via f_int1 success: 1
6613
# check read via f_int2 success: 1
6615
# check multiple-1 success: 1
6616
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6618
# check multiple-2 success: 1
6619
INSERT INTO t1 SELECT * FROM t0_template
6620
WHERE MOD(f_int1,3) = 0;
6622
# check multiple-3 success: 1
6623
UPDATE t1 SET f_int1 = f_int1 + @max_row
6624
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6625
AND @max_row_div2 + @max_row_div4;
6627
# check multiple-4 success: 1
6629
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6630
AND @max_row_div2 + @max_row_div4 + @max_row;
6632
# check multiple-5 success: 1
6633
SELECT COUNT(*) INTO @try_count FROM t0_template
6634
WHERE MOD(f_int1,3) = 0
6635
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6636
SELECT COUNT(*) INTO @clash_count
6637
FROM t1 INNER JOIN t0_template USING(f_int1)
6638
WHERE MOD(f_int1,3) = 0
6639
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6640
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6642
SET f_int1 = @cur_value , f_int2 = @cur_value,
6643
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6644
f_charbig = '#SINGLE#';
6646
# check single-1 success: 1
6647
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6649
SET f_int1 = @cur_value , f_int2 = @cur_value,
6650
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6651
f_charbig = '#SINGLE#';
6653
# check single-2 success: 1
6654
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6655
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6656
UPDATE t1 SET f_int1 = @cur_value2
6657
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6659
# check single-3 success: 1
6660
SET @cur_value1= -1;
6661
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6662
UPDATE t1 SET f_int1 = @cur_value1
6663
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6665
# check single-4 success: 1
6666
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6667
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6669
# check single-5 success: 1
6670
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6672
# check single-6 success: 1
6673
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6675
# check single-7 success: 1
6676
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6677
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6678
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6679
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6680
f_charbig = '#NULL#';
6682
SET f_int1 = NULL , f_int2 = -@max_row,
6683
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6684
f_charbig = '#NULL#';
6685
# check null success: 1
6687
# check null-1 success: 1
6688
UPDATE t1 SET f_int1 = -@max_row
6689
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6690
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6692
# check null-2 success: 1
6693
UPDATE t1 SET f_int1 = NULL
6694
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6695
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6697
# check null-3 success: 1
6699
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6700
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6702
# check null-4 success: 1
6704
WHERE f_int1 = 0 AND f_int2 = 0
6705
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6706
AND f_charbig = '#NULL#';
6707
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6708
SELECT f_int1, f_int1, '', '', 'was inserted'
6709
FROM t0_template source_tab
6710
WHERE MOD(f_int1,3) = 0
6711
AND f_int1 BETWEEN @max_row_div2 AND @max_row
6713
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
6714
f_int2 = 2 * @max_row + source_tab.f_int1,
6715
f_charbig = 'was updated';
6717
# check unique-1-a success: 1
6719
# check unique-1-b success: 1
6720
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6721
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6722
f_int2 = CAST(f_char1 AS SIGNED INT),
6723
f_charbig = CONCAT('===',f_char1,'===')
6724
WHERE f_charbig = 'was updated';
6725
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6726
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
6727
FROM t0_template source_tab
6728
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
6730
# check replace success: 1
6732
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
6734
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
6735
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
6736
UPDATE t1 SET f_int2 = f_int1,
6737
f_char1 = CAST(f_int1 AS CHAR),
6738
f_char2 = CAST(f_int1 AS CHAR),
6739
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
6740
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
6742
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6743
SELECT f_int1, f_int1, '', '', 'was inserted'
6744
FROM t0_template source_tab
6745
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6747
# check transactions-1 success: 1
6750
# check transactions-2 success: 1
6753
# check transactions-3 success: 1
6754
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6758
# check transactions-4 success: 1
6759
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6760
SELECT f_int1, f_int1, '', '', 'was inserted'
6761
FROM t0_template source_tab
6762
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6764
# check transactions-5 success: 1
6767
Warning 1196 Some non-transactional changed tables couldn't be rolled back
6769
# check transactions-6 success: 1
6770
# INFO: Storage engine used for t1 seems to be not transactional.
6773
# check transactions-7 success: 1
6774
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6776
SET @@session.sql_mode = 'traditional';
6777
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6778
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6779
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6780
'', '', 'was inserted' FROM t0_template
6781
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6782
ERROR 22012: Division by 0
6785
# check transactions-8 success: 1
6786
# INFO: Storage engine used for t1 seems to be unable to revert
6787
# changes made by the failing statement.
6788
SET @@session.sql_mode = '';
6790
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6792
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6794
# check special-1 success: 1
6795
UPDATE t1 SET f_charbig = '';
6797
# check special-2 success: 1
6798
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6799
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6800
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6801
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6802
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6803
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6804
'just inserted' FROM t0_template
6805
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6806
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6808
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6809
f_charbig = 'updated by trigger'
6810
WHERE f_int1 = new.f_int1;
6812
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6813
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6814
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6816
# check trigger-1 success: 1
6818
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6819
f_int2 = CAST(f_char1 AS SIGNED INT),
6820
f_charbig = 'just inserted'
6821
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6823
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6824
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6825
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6826
'just inserted' FROM t0_template
6827
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6828
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6830
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6831
f_charbig = 'updated by trigger'
6832
WHERE f_int1 = new.f_int1;
6834
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6835
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6836
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6838
# check trigger-2 success: 1
6840
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6841
f_int2 = CAST(f_char1 AS SIGNED INT),
6842
f_charbig = 'just inserted'
6843
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6845
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6846
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6847
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6848
'just inserted' FROM t0_template
6849
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6850
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6852
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6853
f_charbig = 'updated by trigger'
6854
WHERE f_int1 = new.f_int1;
6856
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6857
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6859
# check trigger-3 success: 1
6861
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6862
f_int2 = CAST(f_char1 AS SIGNED INT),
6863
f_charbig = 'just inserted'
6864
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6866
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6867
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6868
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6869
'just inserted' FROM t0_template
6870
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6871
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6873
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6874
f_charbig = 'updated by trigger'
6875
WHERE f_int1 = - old.f_int1;
6877
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6878
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6880
# check trigger-4 success: 1
6882
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6883
f_int2 = CAST(f_char1 AS SIGNED INT),
6884
f_charbig = 'just inserted'
6885
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6887
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6888
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6889
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6890
'just inserted' FROM t0_template
6891
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6892
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6894
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6895
f_charbig = 'updated by trigger'
6896
WHERE f_int1 = new.f_int1;
6898
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6899
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6901
# check trigger-5 success: 1
6903
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6904
f_int2 = CAST(f_char1 AS SIGNED INT),
6905
f_charbig = 'just inserted'
6906
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6908
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6909
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6910
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6911
'just inserted' FROM t0_template
6912
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6913
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6915
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6916
f_charbig = 'updated by trigger'
6917
WHERE f_int1 = - old.f_int1;
6919
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6920
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6922
# check trigger-6 success: 1
6924
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6925
f_int2 = CAST(f_char1 AS SIGNED INT),
6926
f_charbig = 'just inserted'
6927
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6929
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6930
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6931
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6932
'just inserted' FROM t0_template
6933
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6934
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6936
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6937
f_charbig = 'updated by trigger'
6938
WHERE f_int1 = - old.f_int1;
6941
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6943
# check trigger-7 success: 1
6945
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6946
f_int2 = CAST(f_char1 AS SIGNED INT),
6947
f_charbig = 'just inserted'
6948
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6950
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6951
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6952
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6953
'just inserted' FROM t0_template
6954
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6955
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6957
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6958
f_charbig = 'updated by trigger'
6959
WHERE f_int1 = - old.f_int1;
6962
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6964
# check trigger-8 success: 1
6966
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6967
f_int2 = CAST(f_char1 AS SIGNED INT),
6968
f_charbig = 'just inserted'
6969
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6971
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6973
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6974
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6976
SET new.f_int1 = old.f_int1 + @max_row,
6977
new.f_int2 = old.f_int2 - @max_row,
6978
new.f_charbig = '####updated per update trigger####';
6981
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6982
f_charbig = '####updated per update statement itself####';
6984
# check trigger-9 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 = CONCAT('===',f_char1,'===');
6989
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6991
SET new.f_int1 = new.f_int1 + @max_row,
6992
new.f_int2 = new.f_int2 - @max_row,
6993
new.f_charbig = '####updated per update trigger####';
6996
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6997
f_charbig = '####updated per update statement itself####';
6999
# check trigger-10 success: 1
7001
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7002
f_int2 = CAST(f_char1 AS SIGNED INT),
7003
f_charbig = CONCAT('===',f_char1,'===');
7004
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7006
SET new.f_int1 = @my_max1 + @counter,
7007
new.f_int2 = @my_min2 - @counter,
7008
new.f_charbig = '####updated per insert trigger####';
7009
SET @counter = @counter + 1;
7012
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7013
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7014
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7015
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7016
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7020
# check trigger-11 success: 1
7022
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7023
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7024
AND f_charbig = '####updated per insert trigger####';
7025
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7027
SET new.f_int1 = @my_max1 + @counter,
7028
new.f_int2 = @my_min2 - @counter,
7029
new.f_charbig = '####updated per insert trigger####';
7030
SET @counter = @counter + 1;
7033
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7034
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7035
SELECT CAST(f_int1 AS CHAR),
7036
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7037
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7041
# check trigger-12 success: 1
7043
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7044
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7045
AND f_charbig = '####updated per insert trigger####';
7047
Table Op Msg_type Msg_text
7048
test.t1 analyze note The storage engine for the table doesn't support analyze
7049
CHECK TABLE t1 EXTENDED;
7050
Table Op Msg_type Msg_text
7051
test.t1 check note The storage engine for the table doesn't support check
7052
CHECKSUM TABLE t1 EXTENDED;
7054
test.t1 <some_value>
7056
Table Op Msg_type Msg_text
7057
test.t1 optimize note The storage engine for the table doesn't support optimize
7058
# check layout success: 1
7059
REPAIR TABLE t1 EXTENDED;
7060
Table Op Msg_type Msg_text
7061
test.t1 repair note The storage engine for the table doesn't support repair
7062
# check layout success: 1
7065
# check TRUNCATE success: 1
7066
# check layout success: 1
7067
# End usability test (inc/partition_check.inc)
7074
f_charbig VARCHAR(1000)
7077
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
7078
(PARTITION part1 VALUES LESS THAN (0)
7079
(SUBPARTITION subpart11, SUBPARTITION subpart12),
7080
PARTITION part2 VALUES LESS THAN (5)
7081
(SUBPARTITION subpart21, SUBPARTITION subpart22),
7082
PARTITION part3 VALUES LESS THAN (10)
7083
(SUBPARTITION subpart31, SUBPARTITION subpart32),
7084
PARTITION part4 VALUES LESS THAN (2147483646)
7085
(SUBPARTITION subpart41, SUBPARTITION subpart42));
7086
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7087
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7088
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7089
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
7090
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7091
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7092
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7093
# Start usability test (inc/partition_check.inc)
7095
SHOW CREATE TABLE t1;
7097
t1 CREATE TABLE `t1` (
7098
`f_int1` int(11) DEFAULT NULL,
7099
`f_int2` int(11) DEFAULT NULL,
7100
`f_char1` char(20) DEFAULT NULL,
7101
`f_char2` char(20) DEFAULT NULL,
7102
`f_charbig` varchar(1000) DEFAULT NULL,
7103
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
7104
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = MyISAM, SUBPARTITION subpart12 ENGINE = MyISAM), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = MyISAM, SUBPARTITION subpart22 ENGINE = MyISAM), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = MyISAM, SUBPARTITION subpart32 ENGINE = MyISAM), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = MyISAM, SUBPARTITION subpart42 ENGINE = MyISAM)) */
7107
t1#P#part1#SP#subpart11.MYD
7108
t1#P#part1#SP#subpart11.MYI
7109
t1#P#part1#SP#subpart12.MYD
7110
t1#P#part1#SP#subpart12.MYI
7111
t1#P#part2#SP#subpart21.MYD
7112
t1#P#part2#SP#subpart21.MYI
7113
t1#P#part2#SP#subpart22.MYD
7114
t1#P#part2#SP#subpart22.MYI
7115
t1#P#part3#SP#subpart31.MYD
7116
t1#P#part3#SP#subpart31.MYI
7117
t1#P#part3#SP#subpart32.MYD
7118
t1#P#part3#SP#subpart32.MYI
7119
t1#P#part4#SP#subpart41.MYD
7120
t1#P#part4#SP#subpart41.MYI
7121
t1#P#part4#SP#subpart42.MYD
7122
t1#P#part4#SP#subpart42.MYI
7126
# check prerequisites-1 success: 1
7127
# check COUNT(*) success: 1
7128
# check MIN/MAX(f_int1) success: 1
7129
# check MIN/MAX(f_int2) success: 1
7130
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7131
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7132
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7133
WHERE f_int1 IN (2,3);
7134
ERROR 23000: Can't write; duplicate key in table 't1'
7135
# check prerequisites-3 success: 1
7136
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
7137
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7138
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7139
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7140
WHERE f_int1 IN (2,3);
7141
DELETE FROM t1 WHERE f_charbig = 'delete me';
7142
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7143
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7144
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7145
WHERE f_int1 IN (2,3);
7146
DELETE FROM t1 WHERE f_charbig = 'delete me';
7147
# check read via f_int1 success: 1
7148
# check read via f_int2 success: 1
7150
# check multiple-1 success: 1
7151
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7153
# check multiple-2 success: 1
7154
INSERT INTO t1 SELECT * FROM t0_template
7155
WHERE MOD(f_int1,3) = 0;
7157
# check multiple-3 success: 1
7158
UPDATE t1 SET f_int1 = f_int1 + @max_row
7159
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7160
AND @max_row_div2 + @max_row_div4;
7162
# check multiple-4 success: 1
7164
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7165
AND @max_row_div2 + @max_row_div4 + @max_row;
7167
# check multiple-5 success: 1
7168
SELECT COUNT(*) INTO @try_count FROM t0_template
7169
WHERE MOD(f_int1,3) = 0
7170
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7171
SELECT COUNT(*) INTO @clash_count
7172
FROM t1 INNER JOIN t0_template USING(f_int1)
7173
WHERE MOD(f_int1,3) = 0
7174
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7175
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7177
SET f_int1 = @cur_value , f_int2 = @cur_value,
7178
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7179
f_charbig = '#SINGLE#';
7181
# check single-1 success: 1
7182
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7184
SET f_int1 = @cur_value , f_int2 = @cur_value,
7185
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7186
f_charbig = '#SINGLE#';
7188
# check single-2 success: 1
7189
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7190
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7191
UPDATE t1 SET f_int1 = @cur_value2
7192
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7194
# check single-3 success: 1
7195
SET @cur_value1= -1;
7196
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7197
UPDATE t1 SET f_int1 = @cur_value1
7198
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7200
# check single-4 success: 1
7201
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7202
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7204
# check single-5 success: 1
7205
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7207
# check single-6 success: 1
7208
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7209
ERROR HY000: Table has no partition for value 2147483647
7210
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7211
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7212
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7213
f_charbig = '#NULL#';
7215
SET f_int1 = NULL , f_int2 = -@max_row,
7216
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7217
f_charbig = '#NULL#';
7218
# check null success: 1
7220
# check null-1 success: 1
7221
UPDATE t1 SET f_int1 = -@max_row
7222
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7223
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7225
# check null-2 success: 1
7226
UPDATE t1 SET f_int1 = NULL
7227
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7228
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7230
# check null-3 success: 1
7232
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7233
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7235
# check null-4 success: 1
7237
WHERE f_int1 = 0 AND f_int2 = 0
7238
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7239
AND f_charbig = '#NULL#';
7240
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7241
SELECT f_int1, f_int1, '', '', 'was inserted'
7242
FROM t0_template source_tab
7243
WHERE MOD(f_int1,3) = 0
7244
AND f_int1 BETWEEN @max_row_div2 AND @max_row
7246
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
7247
f_int2 = 2 * @max_row + source_tab.f_int1,
7248
f_charbig = 'was updated';
7250
# check unique-1-a success: 1
7252
# check unique-1-b success: 1
7253
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7254
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7255
f_int2 = CAST(f_char1 AS SIGNED INT),
7256
f_charbig = CONCAT('===',f_char1,'===')
7257
WHERE f_charbig = 'was updated';
7258
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7259
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
7260
FROM t0_template source_tab
7261
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7263
# check replace success: 1
7265
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
7267
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
7268
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
7269
UPDATE t1 SET f_int2 = f_int1,
7270
f_char1 = CAST(f_int1 AS CHAR),
7271
f_char2 = CAST(f_int1 AS CHAR),
7272
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
7273
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
7275
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7276
SELECT f_int1, f_int1, '', '', 'was inserted'
7277
FROM t0_template source_tab
7278
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7280
# check transactions-1 success: 1
7283
# check transactions-2 success: 1
7286
# check transactions-3 success: 1
7287
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7291
# check transactions-4 success: 1
7292
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7293
SELECT f_int1, f_int1, '', '', 'was inserted'
7294
FROM t0_template source_tab
7295
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7297
# check transactions-5 success: 1
7300
Warning 1196 Some non-transactional changed tables couldn't be rolled back
7302
# check transactions-6 success: 1
7303
# INFO: Storage engine used for t1 seems to be not transactional.
7306
# check transactions-7 success: 1
7307
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7309
SET @@session.sql_mode = 'traditional';
7310
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7311
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7312
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7313
'', '', 'was inserted' FROM t0_template
7314
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7315
ERROR 22012: Division by 0
7318
# check transactions-8 success: 1
7319
# INFO: Storage engine used for t1 seems to be unable to revert
7320
# changes made by the failing statement.
7321
SET @@session.sql_mode = '';
7323
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7325
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7327
# check special-1 success: 1
7328
UPDATE t1 SET f_charbig = '';
7330
# check special-2 success: 1
7331
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7332
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7333
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7334
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7335
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7336
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7337
'just inserted' FROM t0_template
7338
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7339
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7341
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7342
f_charbig = 'updated by trigger'
7343
WHERE f_int1 = new.f_int1;
7345
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7346
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7347
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7349
# check trigger-1 success: 1
7351
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7352
f_int2 = CAST(f_char1 AS SIGNED INT),
7353
f_charbig = 'just inserted'
7354
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7356
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7357
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7358
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7359
'just inserted' FROM t0_template
7360
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7361
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7363
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7364
f_charbig = 'updated by trigger'
7365
WHERE f_int1 = new.f_int1;
7367
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7368
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7369
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7371
# check trigger-2 success: 1
7373
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7374
f_int2 = CAST(f_char1 AS SIGNED INT),
7375
f_charbig = 'just inserted'
7376
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7378
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7379
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7380
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7381
'just inserted' FROM t0_template
7382
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7383
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7385
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7386
f_charbig = 'updated by trigger'
7387
WHERE f_int1 = new.f_int1;
7389
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7390
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7392
# check trigger-3 success: 1
7394
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7395
f_int2 = CAST(f_char1 AS SIGNED INT),
7396
f_charbig = 'just inserted'
7397
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7399
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7400
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7401
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7402
'just inserted' FROM t0_template
7403
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7404
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7406
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7407
f_charbig = 'updated by trigger'
7408
WHERE f_int1 = - old.f_int1;
7410
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7411
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7413
# check trigger-4 success: 1
7415
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7416
f_int2 = CAST(f_char1 AS SIGNED INT),
7417
f_charbig = 'just inserted'
7418
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7420
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7421
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7422
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7423
'just inserted' FROM t0_template
7424
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7425
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7427
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7428
f_charbig = 'updated by trigger'
7429
WHERE f_int1 = new.f_int1;
7431
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7432
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7434
# check trigger-5 success: 1
7436
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7437
f_int2 = CAST(f_char1 AS SIGNED INT),
7438
f_charbig = 'just inserted'
7439
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7441
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7442
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7443
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7444
'just inserted' FROM t0_template
7445
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7446
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7448
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7449
f_charbig = 'updated by trigger'
7450
WHERE f_int1 = - old.f_int1;
7452
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7453
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7455
# check trigger-6 success: 1
7457
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7458
f_int2 = CAST(f_char1 AS SIGNED INT),
7459
f_charbig = 'just inserted'
7460
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7462
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7463
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7464
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7465
'just inserted' FROM t0_template
7466
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7467
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7469
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7470
f_charbig = 'updated by trigger'
7471
WHERE f_int1 = - old.f_int1;
7474
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7476
# check trigger-7 success: 1
7478
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7479
f_int2 = CAST(f_char1 AS SIGNED INT),
7480
f_charbig = 'just inserted'
7481
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7483
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7484
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7485
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7486
'just inserted' FROM t0_template
7487
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7488
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7490
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7491
f_charbig = 'updated by trigger'
7492
WHERE f_int1 = - old.f_int1;
7495
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7497
# check trigger-8 success: 1
7499
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7500
f_int2 = CAST(f_char1 AS SIGNED INT),
7501
f_charbig = 'just inserted'
7502
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7504
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7506
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7507
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7509
SET new.f_int1 = old.f_int1 + @max_row,
7510
new.f_int2 = old.f_int2 - @max_row,
7511
new.f_charbig = '####updated per update trigger####';
7514
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7515
f_charbig = '####updated per update statement itself####';
7517
# check trigger-9 success: 1
7519
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7520
f_int2 = CAST(f_char1 AS SIGNED INT),
7521
f_charbig = CONCAT('===',f_char1,'===');
7522
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7524
SET new.f_int1 = new.f_int1 + @max_row,
7525
new.f_int2 = new.f_int2 - @max_row,
7526
new.f_charbig = '####updated per update trigger####';
7529
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7530
f_charbig = '####updated per update statement itself####';
7532
# check trigger-10 success: 1
7534
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7535
f_int2 = CAST(f_char1 AS SIGNED INT),
7536
f_charbig = CONCAT('===',f_char1,'===');
7537
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7539
SET new.f_int1 = @my_max1 + @counter,
7540
new.f_int2 = @my_min2 - @counter,
7541
new.f_charbig = '####updated per insert trigger####';
7542
SET @counter = @counter + 1;
7545
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7546
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7547
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7548
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7549
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7553
# check trigger-11 success: 1
7555
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7556
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7557
AND f_charbig = '####updated per insert trigger####';
7558
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7560
SET new.f_int1 = @my_max1 + @counter,
7561
new.f_int2 = @my_min2 - @counter,
7562
new.f_charbig = '####updated per insert trigger####';
7563
SET @counter = @counter + 1;
7566
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7567
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7568
SELECT CAST(f_int1 AS CHAR),
7569
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7574
# check trigger-12 success: 1
7576
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7577
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7578
AND f_charbig = '####updated per insert trigger####';
7580
Table Op Msg_type Msg_text
7581
test.t1 analyze note The storage engine for the table doesn't support analyze
7582
CHECK TABLE t1 EXTENDED;
7583
Table Op Msg_type Msg_text
7584
test.t1 check note The storage engine for the table doesn't support check
7585
CHECKSUM TABLE t1 EXTENDED;
7587
test.t1 <some_value>
7589
Table Op Msg_type Msg_text
7590
test.t1 optimize note The storage engine for the table doesn't support optimize
7591
# check layout success: 1
7592
REPAIR TABLE t1 EXTENDED;
7593
Table Op Msg_type Msg_text
7594
test.t1 repair note The storage engine for the table doesn't support repair
7595
# check layout success: 1
7598
# check TRUNCATE success: 1
7599
# check layout success: 1
7600
# End usability test (inc/partition_check.inc)
7607
f_charbig VARCHAR(1000)
7610
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
7611
(PARTITION part1 VALUES IN (0)
7612
(SUBPARTITION sp11, SUBPARTITION sp12),
7613
PARTITION part2 VALUES IN (1)
7614
(SUBPARTITION sp21, SUBPARTITION sp22),
7615
PARTITION part3 VALUES IN (2)
7616
(SUBPARTITION sp31, SUBPARTITION sp32),
7617
PARTITION part4 VALUES IN (NULL)
7618
(SUBPARTITION sp41, SUBPARTITION sp42));
7619
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7620
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7621
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7622
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
7623
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7624
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7625
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7626
# Start usability test (inc/partition_check.inc)
7628
SHOW CREATE TABLE t1;
7630
t1 CREATE TABLE `t1` (
7631
`f_int1` int(11) DEFAULT NULL,
7632
`f_int2` int(11) DEFAULT NULL,
7633
`f_char1` char(20) DEFAULT NULL,
7634
`f_char2` char(20) DEFAULT NULL,
7635
`f_charbig` varchar(1000) DEFAULT NULL,
7636
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
7637
) ENGINE=MyISAM 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 = MyISAM, SUBPARTITION sp12 ENGINE = MyISAM), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = MyISAM, SUBPARTITION sp22 ENGINE = MyISAM), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = MyISAM, SUBPARTITION sp32 ENGINE = MyISAM), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = MyISAM, SUBPARTITION sp42 ENGINE = MyISAM)) */
7640
t1#P#part1#SP#sp11.MYD
7641
t1#P#part1#SP#sp11.MYI
7642
t1#P#part1#SP#sp12.MYD
7643
t1#P#part1#SP#sp12.MYI
7644
t1#P#part2#SP#sp21.MYD
7645
t1#P#part2#SP#sp21.MYI
7646
t1#P#part2#SP#sp22.MYD
7647
t1#P#part2#SP#sp22.MYI
7648
t1#P#part3#SP#sp31.MYD
7649
t1#P#part3#SP#sp31.MYI
7650
t1#P#part3#SP#sp32.MYD
7651
t1#P#part3#SP#sp32.MYI
7652
t1#P#part4#SP#sp41.MYD
7653
t1#P#part4#SP#sp41.MYI
7654
t1#P#part4#SP#sp42.MYD
7655
t1#P#part4#SP#sp42.MYI
7659
# check prerequisites-1 success: 1
7660
# check COUNT(*) success: 1
7661
# check MIN/MAX(f_int1) success: 1
7662
# check MIN/MAX(f_int2) success: 1
7663
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7664
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7665
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7666
WHERE f_int1 IN (2,3);
7667
ERROR 23000: Can't write; duplicate key in table 't1'
7668
# check prerequisites-3 success: 1
7669
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
7670
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7671
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7672
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7673
WHERE f_int1 IN (2,3);
7674
DELETE FROM t1 WHERE f_charbig = 'delete me';
7675
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7676
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7677
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7678
WHERE f_int1 IN (2,3);
7679
DELETE FROM t1 WHERE f_charbig = 'delete me';
7680
# check read via f_int1 success: 1
7681
# check read via f_int2 success: 1
7683
# check multiple-1 success: 1
7684
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7686
# check multiple-2 success: 1
7687
INSERT INTO t1 SELECT * FROM t0_template
7688
WHERE MOD(f_int1,3) = 0;
7690
# check multiple-3 success: 1
7691
UPDATE t1 SET f_int1 = f_int1 + @max_row
7692
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7693
AND @max_row_div2 + @max_row_div4;
7695
# check multiple-4 success: 1
7697
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7698
AND @max_row_div2 + @max_row_div4 + @max_row;
7700
# check multiple-5 success: 1
7701
SELECT COUNT(*) INTO @try_count FROM t0_template
7702
WHERE MOD(f_int1,3) = 0
7703
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7704
SELECT COUNT(*) INTO @clash_count
7705
FROM t1 INNER JOIN t0_template USING(f_int1)
7706
WHERE MOD(f_int1,3) = 0
7707
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7708
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7710
SET f_int1 = @cur_value , f_int2 = @cur_value,
7711
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7712
f_charbig = '#SINGLE#';
7714
# check single-1 success: 1
7715
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7717
SET f_int1 = @cur_value , f_int2 = @cur_value,
7718
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7719
f_charbig = '#SINGLE#';
7721
# check single-2 success: 1
7722
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7723
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7724
UPDATE t1 SET f_int1 = @cur_value2
7725
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7727
# check single-3 success: 1
7728
SET @cur_value1= -1;
7729
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7730
UPDATE t1 SET f_int1 = @cur_value1
7731
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7733
# check single-4 success: 1
7734
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7735
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7737
# check single-5 success: 1
7738
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7740
# check single-6 success: 1
7741
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7743
# check single-7 success: 1
7744
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7745
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7746
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7747
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7748
f_charbig = '#NULL#';
7750
SET f_int1 = NULL , f_int2 = -@max_row,
7751
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7752
f_charbig = '#NULL#';
7753
# check null success: 1
7755
# check null-1 success: 1
7756
UPDATE t1 SET f_int1 = -@max_row
7757
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7758
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7760
# check null-2 success: 1
7761
UPDATE t1 SET f_int1 = NULL
7762
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7763
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7765
# check null-3 success: 1
7767
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7768
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7770
# check null-4 success: 1
7772
WHERE f_int1 = 0 AND f_int2 = 0
7773
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7774
AND f_charbig = '#NULL#';
7775
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7776
SELECT f_int1, f_int1, '', '', 'was inserted'
7777
FROM t0_template source_tab
7778
WHERE MOD(f_int1,3) = 0
7779
AND f_int1 BETWEEN @max_row_div2 AND @max_row
7781
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
7782
f_int2 = 2 * @max_row + source_tab.f_int1,
7783
f_charbig = 'was updated';
7785
# check unique-1-a success: 1
7787
# check unique-1-b success: 1
7788
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7789
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7790
f_int2 = CAST(f_char1 AS SIGNED INT),
7791
f_charbig = CONCAT('===',f_char1,'===')
7792
WHERE f_charbig = 'was updated';
7793
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7794
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
7795
FROM t0_template source_tab
7796
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7798
# check replace success: 1
7800
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
7802
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
7803
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
7804
UPDATE t1 SET f_int2 = f_int1,
7805
f_char1 = CAST(f_int1 AS CHAR),
7806
f_char2 = CAST(f_int1 AS CHAR),
7807
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
7808
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
7810
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7811
SELECT f_int1, f_int1, '', '', 'was inserted'
7812
FROM t0_template source_tab
7813
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7815
# check transactions-1 success: 1
7818
# check transactions-2 success: 1
7821
# check transactions-3 success: 1
7822
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7826
# check transactions-4 success: 1
7827
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7828
SELECT f_int1, f_int1, '', '', 'was inserted'
7829
FROM t0_template source_tab
7830
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7832
# check transactions-5 success: 1
7835
Warning 1196 Some non-transactional changed tables couldn't be rolled back
7837
# check transactions-6 success: 1
7838
# INFO: Storage engine used for t1 seems to be not transactional.
7841
# check transactions-7 success: 1
7842
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7844
SET @@session.sql_mode = 'traditional';
7845
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7846
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7847
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7848
'', '', 'was inserted' FROM t0_template
7849
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7850
ERROR 22012: Division by 0
7853
# check transactions-8 success: 1
7854
# INFO: Storage engine used for t1 seems to be unable to revert
7855
# changes made by the failing statement.
7856
SET @@session.sql_mode = '';
7858
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7860
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7862
# check special-1 success: 1
7863
UPDATE t1 SET f_charbig = '';
7865
# check special-2 success: 1
7866
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7867
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7868
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7869
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7870
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7871
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7872
'just inserted' FROM t0_template
7873
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7874
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7876
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7877
f_charbig = 'updated by trigger'
7878
WHERE f_int1 = new.f_int1;
7880
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7881
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7882
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7884
# check trigger-1 success: 1
7886
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7887
f_int2 = CAST(f_char1 AS SIGNED INT),
7888
f_charbig = 'just inserted'
7889
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7891
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7892
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7893
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7894
'just inserted' FROM t0_template
7895
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7896
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7898
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7899
f_charbig = 'updated by trigger'
7900
WHERE f_int1 = new.f_int1;
7902
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7903
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7904
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7906
# check trigger-2 success: 1
7908
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7909
f_int2 = CAST(f_char1 AS SIGNED INT),
7910
f_charbig = 'just inserted'
7911
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7913
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7914
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7915
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7916
'just inserted' FROM t0_template
7917
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7918
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7920
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7921
f_charbig = 'updated by trigger'
7922
WHERE f_int1 = new.f_int1;
7924
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7925
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7927
# check trigger-3 success: 1
7929
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7930
f_int2 = CAST(f_char1 AS SIGNED INT),
7931
f_charbig = 'just inserted'
7932
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7934
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7935
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7936
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7937
'just inserted' FROM t0_template
7938
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7939
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7941
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7942
f_charbig = 'updated by trigger'
7943
WHERE f_int1 = - old.f_int1;
7945
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7946
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7948
# check trigger-4 success: 1
7950
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7951
f_int2 = CAST(f_char1 AS SIGNED INT),
7952
f_charbig = 'just inserted'
7953
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7955
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7956
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7957
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7958
'just inserted' FROM t0_template
7959
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7960
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7962
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7963
f_charbig = 'updated by trigger'
7964
WHERE f_int1 = new.f_int1;
7966
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7967
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7969
# check trigger-5 success: 1
7971
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7972
f_int2 = CAST(f_char1 AS SIGNED INT),
7973
f_charbig = 'just inserted'
7974
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7976
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7977
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7978
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7979
'just inserted' FROM t0_template
7980
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7981
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7983
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7984
f_charbig = 'updated by trigger'
7985
WHERE f_int1 = - old.f_int1;
7987
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7988
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7990
# check trigger-6 success: 1
7992
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7993
f_int2 = CAST(f_char1 AS SIGNED INT),
7994
f_charbig = 'just inserted'
7995
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7997
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7998
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7999
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8000
'just inserted' FROM t0_template
8001
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8002
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8004
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8005
f_charbig = 'updated by trigger'
8006
WHERE f_int1 = - old.f_int1;
8009
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8011
# check trigger-7 success: 1
8013
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8014
f_int2 = CAST(f_char1 AS SIGNED INT),
8015
f_charbig = 'just inserted'
8016
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8018
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8019
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8020
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8021
'just inserted' FROM t0_template
8022
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8023
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8025
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8026
f_charbig = 'updated by trigger'
8027
WHERE f_int1 = - old.f_int1;
8030
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8032
# check trigger-8 success: 1
8034
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8035
f_int2 = CAST(f_char1 AS SIGNED INT),
8036
f_charbig = 'just inserted'
8037
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8039
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8041
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8042
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8044
SET new.f_int1 = old.f_int1 + @max_row,
8045
new.f_int2 = old.f_int2 - @max_row,
8046
new.f_charbig = '####updated per update trigger####';
8049
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8050
f_charbig = '####updated per update statement itself####';
8052
# check trigger-9 success: 1
8054
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8055
f_int2 = CAST(f_char1 AS SIGNED INT),
8056
f_charbig = CONCAT('===',f_char1,'===');
8057
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8059
SET new.f_int1 = new.f_int1 + @max_row,
8060
new.f_int2 = new.f_int2 - @max_row,
8061
new.f_charbig = '####updated per update trigger####';
8064
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8065
f_charbig = '####updated per update statement itself####';
8067
# check trigger-10 success: 1
8069
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8070
f_int2 = CAST(f_char1 AS SIGNED INT),
8071
f_charbig = CONCAT('===',f_char1,'===');
8072
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8074
SET new.f_int1 = @my_max1 + @counter,
8075
new.f_int2 = @my_min2 - @counter,
8076
new.f_charbig = '####updated per insert trigger####';
8077
SET @counter = @counter + 1;
8080
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8081
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8082
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8083
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8084
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8088
# check trigger-11 success: 1
8090
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8091
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8092
AND f_charbig = '####updated per insert trigger####';
8093
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8095
SET new.f_int1 = @my_max1 + @counter,
8096
new.f_int2 = @my_min2 - @counter,
8097
new.f_charbig = '####updated per insert trigger####';
8098
SET @counter = @counter + 1;
8101
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8102
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8103
SELECT CAST(f_int1 AS CHAR),
8104
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8105
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8109
# check trigger-12 success: 1
8111
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8112
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8113
AND f_charbig = '####updated per insert trigger####';
8115
Table Op Msg_type Msg_text
8116
test.t1 analyze note The storage engine for the table doesn't support analyze
8117
CHECK TABLE t1 EXTENDED;
8118
Table Op Msg_type Msg_text
8119
test.t1 check note The storage engine for the table doesn't support check
8120
CHECKSUM TABLE t1 EXTENDED;
8122
test.t1 <some_value>
8124
Table Op Msg_type Msg_text
8125
test.t1 optimize note The storage engine for the table doesn't support optimize
8126
# check layout success: 1
8127
REPAIR TABLE t1 EXTENDED;
8128
Table Op Msg_type Msg_text
8129
test.t1 repair note The storage engine for the table doesn't support repair
8130
# check layout success: 1
8133
# check TRUNCATE success: 1
8134
# check layout success: 1
8135
# End usability test (inc/partition_check.inc)
8142
f_charbig VARCHAR(1000)
8145
PARTITION BY LIST(ABS(MOD(f_int1,2)))
8146
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
8147
(PARTITION part1 VALUES IN (0),
8148
PARTITION part2 VALUES IN (1),
8149
PARTITION part3 VALUES IN (NULL));
8150
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8151
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8152
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8153
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
8154
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8155
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8156
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8157
# Start usability test (inc/partition_check.inc)
8159
SHOW CREATE TABLE t1;
8161
t1 CREATE TABLE `t1` (
8162
`f_int1` int(11) DEFAULT NULL,
8163
`f_int2` int(11) DEFAULT NULL,
8164
`f_char1` char(20) DEFAULT NULL,
8165
`f_char2` char(20) DEFAULT NULL,
8166
`f_charbig` varchar(1000) DEFAULT NULL,
8167
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
8168
) ENGINE=MyISAM 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 = MyISAM, PARTITION part2 VALUES IN (1) ENGINE = MyISAM, PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
8171
t1#P#part1#SP#part1sp0.MYD
8172
t1#P#part1#SP#part1sp0.MYI
8173
t1#P#part1#SP#part1sp1.MYD
8174
t1#P#part1#SP#part1sp1.MYI
8175
t1#P#part1#SP#part1sp2.MYD
8176
t1#P#part1#SP#part1sp2.MYI
8177
t1#P#part2#SP#part2sp0.MYD
8178
t1#P#part2#SP#part2sp0.MYI
8179
t1#P#part2#SP#part2sp1.MYD
8180
t1#P#part2#SP#part2sp1.MYI
8181
t1#P#part2#SP#part2sp2.MYD
8182
t1#P#part2#SP#part2sp2.MYI
8183
t1#P#part3#SP#part3sp0.MYD
8184
t1#P#part3#SP#part3sp0.MYI
8185
t1#P#part3#SP#part3sp1.MYD
8186
t1#P#part3#SP#part3sp1.MYI
8187
t1#P#part3#SP#part3sp2.MYD
8188
t1#P#part3#SP#part3sp2.MYI
8192
# check prerequisites-1 success: 1
8193
# check COUNT(*) success: 1
8194
# check MIN/MAX(f_int1) success: 1
8195
# check MIN/MAX(f_int2) success: 1
8196
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8197
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8198
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8199
WHERE f_int1 IN (2,3);
8200
ERROR 23000: Can't write; duplicate key in table 't1'
8201
# check prerequisites-3 success: 1
8202
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8203
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8204
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8205
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8206
WHERE f_int1 IN (2,3);
8207
DELETE FROM t1 WHERE f_charbig = 'delete me';
8208
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8209
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8210
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8211
WHERE f_int1 IN (2,3);
8212
DELETE FROM t1 WHERE f_charbig = 'delete me';
8213
# check read via f_int1 success: 1
8214
# check read via f_int2 success: 1
8216
# check multiple-1 success: 1
8217
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8219
# check multiple-2 success: 1
8220
INSERT INTO t1 SELECT * FROM t0_template
8221
WHERE MOD(f_int1,3) = 0;
8223
# check multiple-3 success: 1
8224
UPDATE t1 SET f_int1 = f_int1 + @max_row
8225
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8226
AND @max_row_div2 + @max_row_div4;
8228
# check multiple-4 success: 1
8230
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8231
AND @max_row_div2 + @max_row_div4 + @max_row;
8233
# check multiple-5 success: 1
8234
SELECT COUNT(*) INTO @try_count FROM t0_template
8235
WHERE MOD(f_int1,3) = 0
8236
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8237
SELECT COUNT(*) INTO @clash_count
8238
FROM t1 INNER JOIN t0_template USING(f_int1)
8239
WHERE MOD(f_int1,3) = 0
8240
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8241
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8243
SET f_int1 = @cur_value , f_int2 = @cur_value,
8244
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8245
f_charbig = '#SINGLE#';
8247
# check single-1 success: 1
8248
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8250
SET f_int1 = @cur_value , f_int2 = @cur_value,
8251
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8252
f_charbig = '#SINGLE#';
8254
# check single-2 success: 1
8255
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8256
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8257
UPDATE t1 SET f_int1 = @cur_value2
8258
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8260
# check single-3 success: 1
8261
SET @cur_value1= -1;
8262
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8263
UPDATE t1 SET f_int1 = @cur_value1
8264
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8266
# check single-4 success: 1
8267
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8268
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8270
# check single-5 success: 1
8271
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8273
# check single-6 success: 1
8274
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8276
# check single-7 success: 1
8277
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8278
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8279
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8280
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8281
f_charbig = '#NULL#';
8283
SET f_int1 = NULL , f_int2 = -@max_row,
8284
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8285
f_charbig = '#NULL#';
8286
# check null success: 1
8288
# check null-1 success: 1
8289
UPDATE t1 SET f_int1 = -@max_row
8290
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8291
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8293
# check null-2 success: 1
8294
UPDATE t1 SET f_int1 = NULL
8295
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8296
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8298
# check null-3 success: 1
8300
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8301
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8303
# check null-4 success: 1
8305
WHERE f_int1 = 0 AND f_int2 = 0
8306
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8307
AND f_charbig = '#NULL#';
8308
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8309
SELECT f_int1, f_int1, '', '', 'was inserted'
8310
FROM t0_template source_tab
8311
WHERE MOD(f_int1,3) = 0
8312
AND f_int1 BETWEEN @max_row_div2 AND @max_row
8314
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8315
f_int2 = 2 * @max_row + source_tab.f_int1,
8316
f_charbig = 'was updated';
8318
# check unique-1-a success: 1
8320
# check unique-1-b success: 1
8321
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8323
f_int2 = CAST(f_char1 AS SIGNED INT),
8324
f_charbig = CONCAT('===',f_char1,'===')
8325
WHERE f_charbig = 'was updated';
8326
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8327
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8328
FROM t0_template source_tab
8329
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8331
# check replace success: 1
8333
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8335
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8336
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8337
UPDATE t1 SET f_int2 = f_int1,
8338
f_char1 = CAST(f_int1 AS CHAR),
8339
f_char2 = CAST(f_int1 AS CHAR),
8340
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8341
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
8343
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8344
SELECT f_int1, f_int1, '', '', 'was inserted'
8345
FROM t0_template source_tab
8346
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8348
# check transactions-1 success: 1
8351
# check transactions-2 success: 1
8354
# check transactions-3 success: 1
8355
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8359
# check transactions-4 success: 1
8360
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8361
SELECT f_int1, f_int1, '', '', 'was inserted'
8362
FROM t0_template source_tab
8363
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8365
# check transactions-5 success: 1
8368
Warning 1196 Some non-transactional changed tables couldn't be rolled back
8370
# check transactions-6 success: 1
8371
# INFO: Storage engine used for t1 seems to be not transactional.
8374
# check transactions-7 success: 1
8375
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8377
SET @@session.sql_mode = 'traditional';
8378
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8379
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8380
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8381
'', '', 'was inserted' FROM t0_template
8382
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8383
ERROR 22012: Division by 0
8386
# check transactions-8 success: 1
8387
# INFO: Storage engine used for t1 seems to be unable to revert
8388
# changes made by the failing statement.
8389
SET @@session.sql_mode = '';
8391
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8393
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8395
# check special-1 success: 1
8396
UPDATE t1 SET f_charbig = '';
8398
# check special-2 success: 1
8399
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8400
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8401
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8402
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8403
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8404
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8405
'just inserted' FROM t0_template
8406
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8407
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8409
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8410
f_charbig = 'updated by trigger'
8411
WHERE f_int1 = new.f_int1;
8413
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8414
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8415
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8417
# check trigger-1 success: 1
8419
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8420
f_int2 = CAST(f_char1 AS SIGNED INT),
8421
f_charbig = 'just inserted'
8422
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8424
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8425
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8426
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8427
'just inserted' FROM t0_template
8428
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8429
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8431
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8432
f_charbig = 'updated by trigger'
8433
WHERE f_int1 = new.f_int1;
8435
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8436
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8437
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8439
# check trigger-2 success: 1
8441
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8442
f_int2 = CAST(f_char1 AS SIGNED INT),
8443
f_charbig = 'just inserted'
8444
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8446
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8447
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8448
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8449
'just inserted' FROM t0_template
8450
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8451
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8453
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8454
f_charbig = 'updated by trigger'
8455
WHERE f_int1 = new.f_int1;
8457
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8458
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8460
# check trigger-3 success: 1
8462
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8463
f_int2 = CAST(f_char1 AS SIGNED INT),
8464
f_charbig = 'just inserted'
8465
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8467
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8468
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8469
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8470
'just inserted' FROM t0_template
8471
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8472
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8474
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8475
f_charbig = 'updated by trigger'
8476
WHERE f_int1 = - old.f_int1;
8478
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8479
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8481
# check trigger-4 success: 1
8483
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8484
f_int2 = CAST(f_char1 AS SIGNED INT),
8485
f_charbig = 'just inserted'
8486
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8488
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8489
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8490
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8491
'just inserted' FROM t0_template
8492
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8493
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8495
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8496
f_charbig = 'updated by trigger'
8497
WHERE f_int1 = new.f_int1;
8499
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8500
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8502
# check trigger-5 success: 1
8504
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8505
f_int2 = CAST(f_char1 AS SIGNED INT),
8506
f_charbig = 'just inserted'
8507
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8509
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8510
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8511
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8512
'just inserted' FROM t0_template
8513
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8514
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8516
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8517
f_charbig = 'updated by trigger'
8518
WHERE f_int1 = - old.f_int1;
8520
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8521
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8523
# check trigger-6 success: 1
8525
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8526
f_int2 = CAST(f_char1 AS SIGNED INT),
8527
f_charbig = 'just inserted'
8528
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8530
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8531
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8532
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8533
'just inserted' FROM t0_template
8534
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8535
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8537
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8538
f_charbig = 'updated by trigger'
8539
WHERE f_int1 = - old.f_int1;
8542
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8544
# check trigger-7 success: 1
8546
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8547
f_int2 = CAST(f_char1 AS SIGNED INT),
8548
f_charbig = 'just inserted'
8549
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8551
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8552
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8553
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8554
'just inserted' FROM t0_template
8555
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8556
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8558
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8559
f_charbig = 'updated by trigger'
8560
WHERE f_int1 = - old.f_int1;
8563
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8565
# check trigger-8 success: 1
8567
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8568
f_int2 = CAST(f_char1 AS SIGNED INT),
8569
f_charbig = 'just inserted'
8570
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8572
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8574
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8575
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8577
SET new.f_int1 = old.f_int1 + @max_row,
8578
new.f_int2 = old.f_int2 - @max_row,
8579
new.f_charbig = '####updated per update trigger####';
8582
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8583
f_charbig = '####updated per update statement itself####';
8585
# check trigger-9 success: 1
8587
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8588
f_int2 = CAST(f_char1 AS SIGNED INT),
8589
f_charbig = CONCAT('===',f_char1,'===');
8590
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8592
SET new.f_int1 = new.f_int1 + @max_row,
8593
new.f_int2 = new.f_int2 - @max_row,
8594
new.f_charbig = '####updated per update trigger####';
8597
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8598
f_charbig = '####updated per update statement itself####';
8600
# check trigger-10 success: 1
8602
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8603
f_int2 = CAST(f_char1 AS SIGNED INT),
8604
f_charbig = CONCAT('===',f_char1,'===');
8605
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8607
SET new.f_int1 = @my_max1 + @counter,
8608
new.f_int2 = @my_min2 - @counter,
8609
new.f_charbig = '####updated per insert trigger####';
8610
SET @counter = @counter + 1;
8613
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8614
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8615
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8616
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8617
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8621
# check trigger-11 success: 1
8623
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8624
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8625
AND f_charbig = '####updated per insert trigger####';
8626
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8628
SET new.f_int1 = @my_max1 + @counter,
8629
new.f_int2 = @my_min2 - @counter,
8630
new.f_charbig = '####updated per insert trigger####';
8631
SET @counter = @counter + 1;
8634
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8635
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8636
SELECT CAST(f_int1 AS CHAR),
8637
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8638
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8642
# check trigger-12 success: 1
8644
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8645
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8646
AND f_charbig = '####updated per insert trigger####';
8648
Table Op Msg_type Msg_text
8649
test.t1 analyze note The storage engine for the table doesn't support analyze
8650
CHECK TABLE t1 EXTENDED;
8651
Table Op Msg_type Msg_text
8652
test.t1 check note The storage engine for the table doesn't support check
8653
CHECKSUM TABLE t1 EXTENDED;
8655
test.t1 <some_value>
8657
Table Op Msg_type Msg_text
8658
test.t1 optimize note The storage engine for the table doesn't support optimize
8659
# check layout success: 1
8660
REPAIR TABLE t1 EXTENDED;
8661
Table Op Msg_type Msg_text
8662
test.t1 repair note The storage engine for the table doesn't support repair
8663
# check layout success: 1
8666
# check TRUNCATE success: 1
8667
# check layout success: 1
8668
# End usability test (inc/partition_check.inc)
8670
DROP VIEW IF EXISTS v1;
8671
DROP TABLE IF EXISTS t1;
8672
DROP TABLE IF EXISTS t0_aux;
8673
DROP TABLE IF EXISTS t0_definition;
8674
DROP TABLE IF EXISTS t0_template;