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 */
239
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
240
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
241
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
242
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
243
$MYSQLTEST_VARDIR/master-data/test/t1.frm
244
$MYSQLTEST_VARDIR/master-data/test/t1.par
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 */
754
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
755
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
756
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
757
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
758
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYD
759
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYI
760
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYD
761
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYI
762
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYD
763
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYI
764
$MYSQLTEST_VARDIR/master-data/test/t1.frm
765
$MYSQLTEST_VARDIR/master-data/test/t1.par
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) */
1283
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD
1284
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI
1285
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD
1286
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI
1287
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD
1288
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI
1289
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD
1290
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI
1291
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD
1292
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI
1293
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD
1294
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI
1295
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD
1296
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI
1297
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD
1298
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI
1299
$MYSQLTEST_VARDIR/master-data/test/t1.frm
1300
$MYSQLTEST_VARDIR/master-data/test/t1.par
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) */
1816
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD
1817
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI
1818
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYD
1819
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYI
1820
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYD
1821
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYI
1822
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYD
1823
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYI
1824
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYD
1825
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYI
1826
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYD
1827
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYI
1828
$MYSQLTEST_VARDIR/master-data/test/t1.frm
1829
$MYSQLTEST_VARDIR/master-data/test/t1.par
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
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYD
2342
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYI
2343
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYD
2344
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYI
2345
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYD
2346
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYI
2347
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYD
2348
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYI
2349
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYD
2350
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYI
2351
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYD
2352
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYI
2353
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYD
2354
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYI
2355
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYD
2356
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYI
2357
$MYSQLTEST_VARDIR/master-data/test/t1.frm
2358
$MYSQLTEST_VARDIR/master-data/test/t1.par
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
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYD
2877
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYI
2878
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYD
2879
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYI
2880
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYD
2881
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYI
2882
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYD
2883
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYI
2884
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYD
2885
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYI
2886
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYD
2887
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYI
2888
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYD
2889
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYI
2890
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYD
2891
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYI
2892
$MYSQLTEST_VARDIR/master-data/test/t1.frm
2893
$MYSQLTEST_VARDIR/master-data/test/t1.par
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
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYD
3410
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYI
3411
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYD
3412
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYI
3413
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYD
3414
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYI
3415
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYD
3416
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYI
3417
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYD
3418
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYI
3419
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYD
3420
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYI
3421
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYD
3422
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYI
3423
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYD
3424
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYI
3425
$MYSQLTEST_VARDIR/master-data/test/t1.frm
3426
$MYSQLTEST_VARDIR/master-data/test/t1.par
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
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYD
3941
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYI
3942
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYD
3943
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYI
3944
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYD
3945
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYI
3946
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYD
3947
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYI
3948
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYD
3949
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYI
3950
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYD
3951
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYI
3952
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYD
3953
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYI
3954
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYD
3955
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYI
3956
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYD
3957
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYI
3958
$MYSQLTEST_VARDIR/master-data/test/t1.frm
3959
$MYSQLTEST_VARDIR/master-data/test/t1.par
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 */
4470
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
4471
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
4472
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
4473
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
4474
$MYSQLTEST_VARDIR/master-data/test/t1.frm
4475
$MYSQLTEST_VARDIR/master-data/test/t1.par
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 */
4985
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
4986
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
4987
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
4988
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
4989
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYD
4990
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYI
4991
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYD
4992
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYI
4993
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYD
4994
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYI
4995
$MYSQLTEST_VARDIR/master-data/test/t1.frm
4996
$MYSQLTEST_VARDIR/master-data/test/t1.par
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) */
5514
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD
5515
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI
5516
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD
5517
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI
5518
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD
5519
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI
5520
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD
5521
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI
5522
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD
5523
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI
5524
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD
5525
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI
5526
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD
5527
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI
5528
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD
5529
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI
5530
$MYSQLTEST_VARDIR/master-data/test/t1.frm
5531
$MYSQLTEST_VARDIR/master-data/test/t1.par
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) */
6047
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD
6048
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI
6049
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYD
6050
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYI
6051
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYD
6052
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYI
6053
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYD
6054
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYI
6055
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYD
6056
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYI
6057
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYD
6058
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYI
6059
$MYSQLTEST_VARDIR/master-data/test/t1.frm
6060
$MYSQLTEST_VARDIR/master-data/test/t1.par
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
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYD
6573
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYI
6574
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYD
6575
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYI
6576
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYD
6577
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYI
6578
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYD
6579
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYI
6580
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYD
6581
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYI
6582
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYD
6583
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYI
6584
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYD
6585
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYI
6586
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYD
6587
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYI
6588
$MYSQLTEST_VARDIR/master-data/test/t1.frm
6589
$MYSQLTEST_VARDIR/master-data/test/t1.par
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
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYD
7108
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYI
7109
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYD
7110
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYI
7111
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYD
7112
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYI
7113
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYD
7114
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYI
7115
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYD
7116
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYI
7117
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYD
7118
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYI
7119
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYD
7120
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYI
7121
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYD
7122
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYI
7123
$MYSQLTEST_VARDIR/master-data/test/t1.frm
7124
$MYSQLTEST_VARDIR/master-data/test/t1.par
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
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYD
7641
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYI
7642
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYD
7643
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYI
7644
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYD
7645
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYI
7646
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYD
7647
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYI
7648
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYD
7649
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYI
7650
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYD
7651
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYI
7652
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYD
7653
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYI
7654
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYD
7655
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYI
7656
$MYSQLTEST_VARDIR/master-data/test/t1.frm
7657
$MYSQLTEST_VARDIR/master-data/test/t1.par
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
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYD
8172
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYI
8173
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYD
8174
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYI
8175
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYD
8176
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYI
8177
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYD
8178
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYI
8179
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYD
8180
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYI
8181
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYD
8182
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYI
8183
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYD
8184
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYI
8185
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYD
8186
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYI
8187
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYD
8188
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYI
8189
$MYSQLTEST_VARDIR/master-data/test/t1.frm
8190
$MYSQLTEST_VARDIR/master-data/test/t1.par
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
#------------------------------------------------------------------------
8671
# 1.2 ADD PRIMARY KEY or UNIQUE INDEX to table with two columns
8672
# (f_int1 and f_int2) within the partitioning function
8673
#------------------------------------------------------------------------
8674
# 1.2.2 UNIQUE INDEX consisting of two columns
8675
DROP TABLE IF EXISTS t1;
8681
f_charbig VARCHAR(1000)
8684
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
8685
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8686
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8687
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8688
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
8689
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8690
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8691
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8692
# Start usability test (inc/partition_check.inc)
8694
SHOW CREATE TABLE t1;
8696
t1 CREATE TABLE `t1` (
8697
`f_int1` int(11) DEFAULT NULL,
8698
`f_int2` int(11) DEFAULT NULL,
8699
`f_char1` char(20) DEFAULT NULL,
8700
`f_char2` char(20) DEFAULT NULL,
8701
`f_charbig` varchar(1000) DEFAULT NULL,
8702
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
8703
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
8706
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
8707
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
8708
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
8709
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
8710
$MYSQLTEST_VARDIR/master-data/test/t1.frm
8711
$MYSQLTEST_VARDIR/master-data/test/t1.par
8713
# check prerequisites-1 success: 1
8714
# check COUNT(*) success: 1
8715
# check MIN/MAX(f_int1) success: 1
8716
# check MIN/MAX(f_int2) success: 1
8717
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8718
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8719
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8720
WHERE f_int1 IN (2,3);
8721
ERROR 23000: Can't write; duplicate key in table 't1'
8722
# check prerequisites-3 success: 1
8723
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8724
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8725
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8726
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8727
WHERE f_int1 IN (2,3);
8728
DELETE FROM t1 WHERE f_charbig = 'delete me';
8729
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8730
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8731
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8732
WHERE f_int1 IN (2,3);
8733
DELETE FROM t1 WHERE f_charbig = 'delete me';
8734
# check read via f_int1 success: 1
8735
# check read via f_int2 success: 1
8737
# check multiple-1 success: 1
8738
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8740
# check multiple-2 success: 1
8741
INSERT INTO t1 SELECT * FROM t0_template
8742
WHERE MOD(f_int1,3) = 0;
8744
# check multiple-3 success: 1
8745
UPDATE t1 SET f_int1 = f_int1 + @max_row
8746
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8747
AND @max_row_div2 + @max_row_div4;
8749
# check multiple-4 success: 1
8751
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8752
AND @max_row_div2 + @max_row_div4 + @max_row;
8754
# check multiple-5 success: 1
8755
SELECT COUNT(*) INTO @try_count FROM t0_template
8756
WHERE MOD(f_int1,3) = 0
8757
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8758
SELECT COUNT(*) INTO @clash_count
8759
FROM t1 INNER JOIN t0_template USING(f_int1)
8760
WHERE MOD(f_int1,3) = 0
8761
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8762
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8764
SET f_int1 = @cur_value , f_int2 = @cur_value,
8765
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8766
f_charbig = '#SINGLE#';
8768
# check single-1 success: 1
8769
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8771
SET f_int1 = @cur_value , f_int2 = @cur_value,
8772
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8773
f_charbig = '#SINGLE#';
8775
# check single-2 success: 1
8776
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8777
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8778
UPDATE t1 SET f_int1 = @cur_value2
8779
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8781
# check single-3 success: 1
8782
SET @cur_value1= -1;
8783
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8784
UPDATE t1 SET f_int1 = @cur_value1
8785
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8787
# check single-4 success: 1
8788
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8789
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8791
# check single-5 success: 1
8792
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8794
# check single-6 success: 1
8795
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8797
# check single-7 success: 1
8798
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8799
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8800
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8801
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8802
f_charbig = '#NULL#';
8804
SET f_int1 = NULL , f_int2 = -@max_row,
8805
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8806
f_charbig = '#NULL#';
8807
# check null success: 1
8809
# check null-1 success: 1
8810
UPDATE t1 SET f_int1 = -@max_row
8811
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8812
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8814
# check null-2 success: 1
8815
UPDATE t1 SET f_int1 = NULL
8816
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8817
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8819
# check null-3 success: 1
8821
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8822
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8824
# check null-4 success: 1
8826
WHERE f_int1 = 0 AND f_int2 = 0
8827
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8828
AND f_charbig = '#NULL#';
8829
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8830
SELECT f_int1, f_int1, '', '', 'was inserted'
8831
FROM t0_template source_tab
8832
WHERE MOD(f_int1,3) = 0
8833
AND f_int1 BETWEEN @max_row_div2 AND @max_row
8835
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8836
f_int2 = 2 * @max_row + source_tab.f_int1,
8837
f_charbig = 'was updated';
8839
# check unique-1-a success: 1
8841
# check unique-1-b success: 1
8842
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8843
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8844
f_int2 = CAST(f_char1 AS SIGNED INT),
8845
f_charbig = CONCAT('===',f_char1,'===')
8846
WHERE f_charbig = 'was updated';
8847
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8848
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8849
FROM t0_template source_tab
8850
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8852
# check replace success: 1
8854
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8856
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8857
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8858
UPDATE t1 SET f_int2 = f_int1,
8859
f_char1 = CAST(f_int1 AS CHAR),
8860
f_char2 = CAST(f_int1 AS CHAR),
8861
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8862
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
8864
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8865
SELECT f_int1, f_int1, '', '', 'was inserted'
8866
FROM t0_template source_tab
8867
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8869
# check transactions-1 success: 1
8872
# check transactions-2 success: 1
8875
# check transactions-3 success: 1
8876
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8880
# check transactions-4 success: 1
8881
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8882
SELECT f_int1, f_int1, '', '', 'was inserted'
8883
FROM t0_template source_tab
8884
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8886
# check transactions-5 success: 1
8889
Warning 1196 Some non-transactional changed tables couldn't be rolled back
8891
# check transactions-6 success: 1
8892
# INFO: Storage engine used for t1 seems to be not transactional.
8895
# check transactions-7 success: 1
8896
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8898
SET @@session.sql_mode = 'traditional';
8899
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8900
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8901
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8902
'', '', 'was inserted' FROM t0_template
8903
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8904
ERROR 22012: Division by 0
8907
# check transactions-8 success: 1
8908
# INFO: Storage engine used for t1 seems to be unable to revert
8909
# changes made by the failing statement.
8910
SET @@session.sql_mode = '';
8912
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8914
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8916
# check special-1 success: 1
8917
UPDATE t1 SET f_charbig = '';
8919
# check special-2 success: 1
8920
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8921
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8922
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8923
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8924
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8925
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8926
'just inserted' FROM t0_template
8927
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8928
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8930
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8931
f_charbig = 'updated by trigger'
8932
WHERE f_int1 = new.f_int1;
8934
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8935
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8936
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8938
# check trigger-1 success: 1
8940
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8941
f_int2 = CAST(f_char1 AS SIGNED INT),
8942
f_charbig = 'just inserted'
8943
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8945
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8946
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8947
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8948
'just inserted' FROM t0_template
8949
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8950
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8952
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8953
f_charbig = 'updated by trigger'
8954
WHERE f_int1 = new.f_int1;
8956
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8957
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8958
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8960
# check trigger-2 success: 1
8962
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8963
f_int2 = CAST(f_char1 AS SIGNED INT),
8964
f_charbig = 'just inserted'
8965
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8967
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8968
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8969
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8970
'just inserted' FROM t0_template
8971
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8972
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8974
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8975
f_charbig = 'updated by trigger'
8976
WHERE f_int1 = new.f_int1;
8978
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8979
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8981
# check trigger-3 success: 1
8983
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8984
f_int2 = CAST(f_char1 AS SIGNED INT),
8985
f_charbig = 'just inserted'
8986
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8988
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8989
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8990
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8991
'just inserted' FROM t0_template
8992
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8993
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8995
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8996
f_charbig = 'updated by trigger'
8997
WHERE f_int1 = - old.f_int1;
8999
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9000
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9002
# check trigger-4 success: 1
9004
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9005
f_int2 = CAST(f_char1 AS SIGNED INT),
9006
f_charbig = 'just inserted'
9007
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9009
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9010
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9011
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9012
'just inserted' FROM t0_template
9013
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9014
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9016
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9017
f_charbig = 'updated by trigger'
9018
WHERE f_int1 = new.f_int1;
9020
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9021
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9023
# check trigger-5 success: 1
9025
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9026
f_int2 = CAST(f_char1 AS SIGNED INT),
9027
f_charbig = 'just inserted'
9028
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9030
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9031
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9032
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9033
'just inserted' FROM t0_template
9034
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9035
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9037
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9038
f_charbig = 'updated by trigger'
9039
WHERE f_int1 = - old.f_int1;
9041
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9042
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9044
# check trigger-6 success: 1
9046
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9047
f_int2 = CAST(f_char1 AS SIGNED INT),
9048
f_charbig = 'just inserted'
9049
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9051
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9052
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9053
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9054
'just inserted' FROM t0_template
9055
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9056
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9058
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9059
f_charbig = 'updated by trigger'
9060
WHERE f_int1 = - old.f_int1;
9063
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9065
# check trigger-7 success: 1
9067
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9068
f_int2 = CAST(f_char1 AS SIGNED INT),
9069
f_charbig = 'just inserted'
9070
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9072
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9073
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9074
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9075
'just inserted' FROM t0_template
9076
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9077
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9079
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9080
f_charbig = 'updated by trigger'
9081
WHERE f_int1 = - old.f_int1;
9084
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9086
# check trigger-8 success: 1
9088
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9089
f_int2 = CAST(f_char1 AS SIGNED INT),
9090
f_charbig = 'just inserted'
9091
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9093
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9095
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9096
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9098
SET new.f_int1 = old.f_int1 + @max_row,
9099
new.f_int2 = old.f_int2 - @max_row,
9100
new.f_charbig = '####updated per update trigger####';
9103
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9104
f_charbig = '####updated per update statement itself####';
9106
# check trigger-9 success: 1
9108
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9109
f_int2 = CAST(f_char1 AS SIGNED INT),
9110
f_charbig = CONCAT('===',f_char1,'===');
9111
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9113
SET new.f_int1 = new.f_int1 + @max_row,
9114
new.f_int2 = new.f_int2 - @max_row,
9115
new.f_charbig = '####updated per update trigger####';
9118
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9119
f_charbig = '####updated per update statement itself####';
9121
# check trigger-10 success: 1
9123
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9124
f_int2 = CAST(f_char1 AS SIGNED INT),
9125
f_charbig = CONCAT('===',f_char1,'===');
9126
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9128
SET new.f_int1 = @my_max1 + @counter,
9129
new.f_int2 = @my_min2 - @counter,
9130
new.f_charbig = '####updated per insert trigger####';
9131
SET @counter = @counter + 1;
9134
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9135
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9136
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9137
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9138
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9142
# check trigger-11 success: 1
9144
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9145
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9146
AND f_charbig = '####updated per insert trigger####';
9147
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9149
SET new.f_int1 = @my_max1 + @counter,
9150
new.f_int2 = @my_min2 - @counter,
9151
new.f_charbig = '####updated per insert trigger####';
9152
SET @counter = @counter + 1;
9155
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9156
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9157
SELECT CAST(f_int1 AS CHAR),
9158
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9159
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9163
# check trigger-12 success: 1
9165
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9166
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9167
AND f_charbig = '####updated per insert trigger####';
9169
Table Op Msg_type Msg_text
9170
test.t1 analyze note The storage engine for the table doesn't support analyze
9171
CHECK TABLE t1 EXTENDED;
9172
Table Op Msg_type Msg_text
9173
test.t1 check note The storage engine for the table doesn't support check
9174
CHECKSUM TABLE t1 EXTENDED;
9176
test.t1 <some_value>
9178
Table Op Msg_type Msg_text
9179
test.t1 optimize note The storage engine for the table doesn't support optimize
9180
# check layout success: 1
9181
REPAIR TABLE t1 EXTENDED;
9182
Table Op Msg_type Msg_text
9183
test.t1 repair note The storage engine for the table doesn't support repair
9184
# check layout success: 1
9187
# check TRUNCATE success: 1
9188
# check layout success: 1
9189
# End usability test (inc/partition_check.inc)
9196
f_charbig VARCHAR(1000)
9199
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
9200
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9201
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9202
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9203
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
9204
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9205
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9206
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9207
# Start usability test (inc/partition_check.inc)
9209
SHOW CREATE TABLE t1;
9211
t1 CREATE TABLE `t1` (
9212
`f_int1` int(11) DEFAULT NULL,
9213
`f_int2` int(11) DEFAULT NULL,
9214
`f_char1` char(20) DEFAULT NULL,
9215
`f_char2` char(20) DEFAULT NULL,
9216
`f_charbig` varchar(1000) DEFAULT NULL,
9217
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
9218
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
9221
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
9222
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
9223
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
9224
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
9225
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYD
9226
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYI
9227
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYD
9228
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYI
9229
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYD
9230
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYI
9231
$MYSQLTEST_VARDIR/master-data/test/t1.frm
9232
$MYSQLTEST_VARDIR/master-data/test/t1.par
9234
# check prerequisites-1 success: 1
9235
# check COUNT(*) success: 1
9236
# check MIN/MAX(f_int1) success: 1
9237
# check MIN/MAX(f_int2) success: 1
9238
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9239
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9240
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9241
WHERE f_int1 IN (2,3);
9242
ERROR 23000: Can't write; duplicate key in table 't1'
9243
# check prerequisites-3 success: 1
9244
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9245
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9246
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9247
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9248
WHERE f_int1 IN (2,3);
9249
DELETE FROM t1 WHERE f_charbig = 'delete me';
9250
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9251
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9252
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9253
WHERE f_int1 IN (2,3);
9254
DELETE FROM t1 WHERE f_charbig = 'delete me';
9255
# check read via f_int1 success: 1
9256
# check read via f_int2 success: 1
9258
# check multiple-1 success: 1
9259
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9261
# check multiple-2 success: 1
9262
INSERT INTO t1 SELECT * FROM t0_template
9263
WHERE MOD(f_int1,3) = 0;
9265
# check multiple-3 success: 1
9266
UPDATE t1 SET f_int1 = f_int1 + @max_row
9267
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9268
AND @max_row_div2 + @max_row_div4;
9270
# check multiple-4 success: 1
9272
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9273
AND @max_row_div2 + @max_row_div4 + @max_row;
9275
# check multiple-5 success: 1
9276
SELECT COUNT(*) INTO @try_count FROM t0_template
9277
WHERE MOD(f_int1,3) = 0
9278
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9279
SELECT COUNT(*) INTO @clash_count
9280
FROM t1 INNER JOIN t0_template USING(f_int1)
9281
WHERE MOD(f_int1,3) = 0
9282
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9283
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9285
SET f_int1 = @cur_value , f_int2 = @cur_value,
9286
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9287
f_charbig = '#SINGLE#';
9289
# check single-1 success: 1
9290
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9292
SET f_int1 = @cur_value , f_int2 = @cur_value,
9293
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9294
f_charbig = '#SINGLE#';
9296
# check single-2 success: 1
9297
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9298
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9299
UPDATE t1 SET f_int1 = @cur_value2
9300
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9302
# check single-3 success: 1
9303
SET @cur_value1= -1;
9304
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9305
UPDATE t1 SET f_int1 = @cur_value1
9306
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9308
# check single-4 success: 1
9309
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9310
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9312
# check single-5 success: 1
9313
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9315
# check single-6 success: 1
9316
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9318
# check single-7 success: 1
9319
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9320
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9321
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9322
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9323
f_charbig = '#NULL#';
9325
SET f_int1 = NULL , f_int2 = -@max_row,
9326
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9327
f_charbig = '#NULL#';
9328
# check null success: 1
9330
# check null-1 success: 1
9331
UPDATE t1 SET f_int1 = -@max_row
9332
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9333
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9335
# check null-2 success: 1
9336
UPDATE t1 SET f_int1 = NULL
9337
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9338
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9340
# check null-3 success: 1
9342
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9343
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9345
# check null-4 success: 1
9347
WHERE f_int1 = 0 AND f_int2 = 0
9348
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9349
AND f_charbig = '#NULL#';
9350
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9351
SELECT f_int1, f_int1, '', '', 'was inserted'
9352
FROM t0_template source_tab
9353
WHERE MOD(f_int1,3) = 0
9354
AND f_int1 BETWEEN @max_row_div2 AND @max_row
9356
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
9357
f_int2 = 2 * @max_row + source_tab.f_int1,
9358
f_charbig = 'was updated';
9360
# check unique-1-a success: 1
9362
# check unique-1-b success: 1
9363
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9364
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9365
f_int2 = CAST(f_char1 AS SIGNED INT),
9366
f_charbig = CONCAT('===',f_char1,'===')
9367
WHERE f_charbig = 'was updated';
9368
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9369
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
9370
FROM t0_template source_tab
9371
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9373
# check replace success: 1
9375
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
9377
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
9378
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
9379
UPDATE t1 SET f_int2 = f_int1,
9380
f_char1 = CAST(f_int1 AS CHAR),
9381
f_char2 = CAST(f_int1 AS CHAR),
9382
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
9383
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
9385
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9386
SELECT f_int1, f_int1, '', '', 'was inserted'
9387
FROM t0_template source_tab
9388
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9390
# check transactions-1 success: 1
9393
# check transactions-2 success: 1
9396
# check transactions-3 success: 1
9397
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9401
# check transactions-4 success: 1
9402
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9403
SELECT f_int1, f_int1, '', '', 'was inserted'
9404
FROM t0_template source_tab
9405
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9407
# check transactions-5 success: 1
9410
Warning 1196 Some non-transactional changed tables couldn't be rolled back
9412
# check transactions-6 success: 1
9413
# INFO: Storage engine used for t1 seems to be not transactional.
9416
# check transactions-7 success: 1
9417
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9419
SET @@session.sql_mode = 'traditional';
9420
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9421
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9422
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9423
'', '', 'was inserted' FROM t0_template
9424
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9425
ERROR 22012: Division by 0
9428
# check transactions-8 success: 1
9429
# INFO: Storage engine used for t1 seems to be unable to revert
9430
# changes made by the failing statement.
9431
SET @@session.sql_mode = '';
9433
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9435
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9437
# check special-1 success: 1
9438
UPDATE t1 SET f_charbig = '';
9440
# check special-2 success: 1
9441
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9442
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9443
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9444
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9445
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9446
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9447
'just inserted' FROM t0_template
9448
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9449
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9451
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9452
f_charbig = 'updated by trigger'
9453
WHERE f_int1 = new.f_int1;
9455
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9456
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9457
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9459
# check trigger-1 success: 1
9461
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9462
f_int2 = CAST(f_char1 AS SIGNED INT),
9463
f_charbig = 'just inserted'
9464
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9466
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9467
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9468
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9469
'just inserted' FROM t0_template
9470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9471
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9473
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9474
f_charbig = 'updated by trigger'
9475
WHERE f_int1 = new.f_int1;
9477
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9478
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9479
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9481
# check trigger-2 success: 1
9483
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9484
f_int2 = CAST(f_char1 AS SIGNED INT),
9485
f_charbig = 'just inserted'
9486
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9488
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9489
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9490
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9491
'just inserted' FROM t0_template
9492
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9493
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9495
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9496
f_charbig = 'updated by trigger'
9497
WHERE f_int1 = new.f_int1;
9499
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9500
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9502
# check trigger-3 success: 1
9504
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9505
f_int2 = CAST(f_char1 AS SIGNED INT),
9506
f_charbig = 'just inserted'
9507
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9509
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9510
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9511
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9512
'just inserted' FROM t0_template
9513
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9514
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9516
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9517
f_charbig = 'updated by trigger'
9518
WHERE f_int1 = - old.f_int1;
9520
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9521
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9523
# check trigger-4 success: 1
9525
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9526
f_int2 = CAST(f_char1 AS SIGNED INT),
9527
f_charbig = 'just inserted'
9528
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9530
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9531
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9532
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9533
'just inserted' FROM t0_template
9534
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9535
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9537
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9538
f_charbig = 'updated by trigger'
9539
WHERE f_int1 = new.f_int1;
9541
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9542
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9544
# check trigger-5 success: 1
9546
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9547
f_int2 = CAST(f_char1 AS SIGNED INT),
9548
f_charbig = 'just inserted'
9549
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9551
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9552
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9553
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9554
'just inserted' FROM t0_template
9555
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9556
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9558
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9559
f_charbig = 'updated by trigger'
9560
WHERE f_int1 = - old.f_int1;
9562
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9563
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9565
# check trigger-6 success: 1
9567
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9568
f_int2 = CAST(f_char1 AS SIGNED INT),
9569
f_charbig = 'just inserted'
9570
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9572
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9573
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9574
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9575
'just inserted' FROM t0_template
9576
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9577
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9579
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9580
f_charbig = 'updated by trigger'
9581
WHERE f_int1 = - old.f_int1;
9584
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9586
# check trigger-7 success: 1
9588
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9589
f_int2 = CAST(f_char1 AS SIGNED INT),
9590
f_charbig = 'just inserted'
9591
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9593
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9594
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9595
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9596
'just inserted' FROM t0_template
9597
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9598
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9600
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9601
f_charbig = 'updated by trigger'
9602
WHERE f_int1 = - old.f_int1;
9605
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9607
# check trigger-8 success: 1
9609
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9610
f_int2 = CAST(f_char1 AS SIGNED INT),
9611
f_charbig = 'just inserted'
9612
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9614
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9616
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9617
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9619
SET new.f_int1 = old.f_int1 + @max_row,
9620
new.f_int2 = old.f_int2 - @max_row,
9621
new.f_charbig = '####updated per update trigger####';
9624
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9625
f_charbig = '####updated per update statement itself####';
9627
# check trigger-9 success: 1
9629
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9630
f_int2 = CAST(f_char1 AS SIGNED INT),
9631
f_charbig = CONCAT('===',f_char1,'===');
9632
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9634
SET new.f_int1 = new.f_int1 + @max_row,
9635
new.f_int2 = new.f_int2 - @max_row,
9636
new.f_charbig = '####updated per update trigger####';
9639
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9640
f_charbig = '####updated per update statement itself####';
9642
# check trigger-10 success: 1
9644
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9645
f_int2 = CAST(f_char1 AS SIGNED INT),
9646
f_charbig = CONCAT('===',f_char1,'===');
9647
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9649
SET new.f_int1 = @my_max1 + @counter,
9650
new.f_int2 = @my_min2 - @counter,
9651
new.f_charbig = '####updated per insert trigger####';
9652
SET @counter = @counter + 1;
9655
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9656
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9657
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9658
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9659
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9663
# check trigger-11 success: 1
9665
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9666
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9667
AND f_charbig = '####updated per insert trigger####';
9668
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9670
SET new.f_int1 = @my_max1 + @counter,
9671
new.f_int2 = @my_min2 - @counter,
9672
new.f_charbig = '####updated per insert trigger####';
9673
SET @counter = @counter + 1;
9676
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9677
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9678
SELECT CAST(f_int1 AS CHAR),
9679
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9680
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9684
# check trigger-12 success: 1
9686
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9687
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9688
AND f_charbig = '####updated per insert trigger####';
9690
Table Op Msg_type Msg_text
9691
test.t1 analyze note The storage engine for the table doesn't support analyze
9692
CHECK TABLE t1 EXTENDED;
9693
Table Op Msg_type Msg_text
9694
test.t1 check note The storage engine for the table doesn't support check
9695
CHECKSUM TABLE t1 EXTENDED;
9697
test.t1 <some_value>
9699
Table Op Msg_type Msg_text
9700
test.t1 optimize note The storage engine for the table doesn't support optimize
9701
# check layout success: 1
9702
REPAIR TABLE t1 EXTENDED;
9703
Table Op Msg_type Msg_text
9704
test.t1 repair note The storage engine for the table doesn't support repair
9705
# check layout success: 1
9708
# check TRUNCATE success: 1
9709
# check layout success: 1
9710
# End usability test (inc/partition_check.inc)
9717
f_charbig VARCHAR(1000)
9720
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
9721
(PARTITION part_3 VALUES IN (-3),
9722
PARTITION part_2 VALUES IN (-2),
9723
PARTITION part_1 VALUES IN (-1),
9724
PARTITION part_N VALUES IN (NULL),
9725
PARTITION part0 VALUES IN (0),
9726
PARTITION part1 VALUES IN (1),
9727
PARTITION part2 VALUES IN (2),
9728
PARTITION part3 VALUES IN (3));
9729
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9730
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9731
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9732
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
9733
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9734
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9735
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9736
# Start usability test (inc/partition_check.inc)
9738
SHOW CREATE TABLE t1;
9740
t1 CREATE TABLE `t1` (
9741
`f_int1` int(11) DEFAULT NULL,
9742
`f_int2` int(11) DEFAULT NULL,
9743
`f_char1` char(20) DEFAULT NULL,
9744
`f_char2` char(20) DEFAULT NULL,
9745
`f_charbig` varchar(1000) DEFAULT NULL,
9746
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
9747
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,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) */
9750
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD
9751
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI
9752
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD
9753
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI
9754
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD
9755
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI
9756
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD
9757
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI
9758
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD
9759
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI
9760
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD
9761
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI
9762
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD
9763
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI
9764
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD
9765
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI
9766
$MYSQLTEST_VARDIR/master-data/test/t1.frm
9767
$MYSQLTEST_VARDIR/master-data/test/t1.par
9769
# check prerequisites-1 success: 1
9770
# check COUNT(*) success: 1
9771
# check MIN/MAX(f_int1) success: 1
9772
# check MIN/MAX(f_int2) success: 1
9773
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9774
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9775
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9776
WHERE f_int1 IN (2,3);
9777
ERROR 23000: Can't write; duplicate key in table 't1'
9778
# check prerequisites-3 success: 1
9779
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9780
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9781
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9782
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9783
WHERE f_int1 IN (2,3);
9784
DELETE FROM t1 WHERE f_charbig = 'delete me';
9785
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9786
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9787
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9788
WHERE f_int1 IN (2,3);
9789
DELETE FROM t1 WHERE f_charbig = 'delete me';
9790
# check read via f_int1 success: 1
9791
# check read via f_int2 success: 1
9793
# check multiple-1 success: 1
9794
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9796
# check multiple-2 success: 1
9797
INSERT INTO t1 SELECT * FROM t0_template
9798
WHERE MOD(f_int1,3) = 0;
9800
# check multiple-3 success: 1
9801
UPDATE t1 SET f_int1 = f_int1 + @max_row
9802
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9803
AND @max_row_div2 + @max_row_div4;
9805
# check multiple-4 success: 1
9807
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9808
AND @max_row_div2 + @max_row_div4 + @max_row;
9810
# check multiple-5 success: 1
9811
SELECT COUNT(*) INTO @try_count FROM t0_template
9812
WHERE MOD(f_int1,3) = 0
9813
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9814
SELECT COUNT(*) INTO @clash_count
9815
FROM t1 INNER JOIN t0_template USING(f_int1)
9816
WHERE MOD(f_int1,3) = 0
9817
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9818
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9820
SET f_int1 = @cur_value , f_int2 = @cur_value,
9821
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9822
f_charbig = '#SINGLE#';
9824
# check single-1 success: 1
9825
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9827
SET f_int1 = @cur_value , f_int2 = @cur_value,
9828
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9829
f_charbig = '#SINGLE#';
9831
# check single-2 success: 1
9832
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9833
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9834
UPDATE t1 SET f_int1 = @cur_value2
9835
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9837
# check single-3 success: 1
9838
SET @cur_value1= -1;
9839
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9840
UPDATE t1 SET f_int1 = @cur_value1
9841
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9843
# check single-4 success: 1
9844
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9845
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9847
# check single-5 success: 1
9848
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9850
# check single-6 success: 1
9851
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9853
# check single-7 success: 1
9854
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9855
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9856
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9857
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9858
f_charbig = '#NULL#';
9860
SET f_int1 = NULL , f_int2 = -@max_row,
9861
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9862
f_charbig = '#NULL#';
9863
# check null success: 1
9865
# check null-1 success: 1
9866
UPDATE t1 SET f_int1 = -@max_row
9867
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9868
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9870
# check null-2 success: 1
9871
UPDATE t1 SET f_int1 = NULL
9872
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9873
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9875
# check null-3 success: 1
9877
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9878
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9880
# check null-4 success: 1
9882
WHERE f_int1 = 0 AND f_int2 = 0
9883
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9884
AND f_charbig = '#NULL#';
9885
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9886
SELECT f_int1, f_int1, '', '', 'was inserted'
9887
FROM t0_template source_tab
9888
WHERE MOD(f_int1,3) = 0
9889
AND f_int1 BETWEEN @max_row_div2 AND @max_row
9891
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
9892
f_int2 = 2 * @max_row + source_tab.f_int1,
9893
f_charbig = 'was updated';
9895
# check unique-1-a success: 1
9897
# check unique-1-b success: 1
9898
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9899
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9900
f_int2 = CAST(f_char1 AS SIGNED INT),
9901
f_charbig = CONCAT('===',f_char1,'===')
9902
WHERE f_charbig = 'was updated';
9903
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9904
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
9905
FROM t0_template source_tab
9906
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9908
# check replace success: 1
9910
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
9912
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
9913
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
9914
UPDATE t1 SET f_int2 = f_int1,
9915
f_char1 = CAST(f_int1 AS CHAR),
9916
f_char2 = CAST(f_int1 AS CHAR),
9917
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
9918
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
9920
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9921
SELECT f_int1, f_int1, '', '', 'was inserted'
9922
FROM t0_template source_tab
9923
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9925
# check transactions-1 success: 1
9928
# check transactions-2 success: 1
9931
# check transactions-3 success: 1
9932
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9936
# check transactions-4 success: 1
9937
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9938
SELECT f_int1, f_int1, '', '', 'was inserted'
9939
FROM t0_template source_tab
9940
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9942
# check transactions-5 success: 1
9945
Warning 1196 Some non-transactional changed tables couldn't be rolled back
9947
# check transactions-6 success: 1
9948
# INFO: Storage engine used for t1 seems to be not transactional.
9951
# check transactions-7 success: 1
9952
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9954
SET @@session.sql_mode = 'traditional';
9955
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9956
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9957
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9958
'', '', 'was inserted' FROM t0_template
9959
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9960
ERROR 22012: Division by 0
9963
# check transactions-8 success: 1
9964
# INFO: Storage engine used for t1 seems to be unable to revert
9965
# changes made by the failing statement.
9966
SET @@session.sql_mode = '';
9968
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9970
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9972
# check special-1 success: 1
9973
UPDATE t1 SET f_charbig = '';
9975
# check special-2 success: 1
9976
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9977
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9978
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9979
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9980
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9981
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9982
'just inserted' FROM t0_template
9983
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9984
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9986
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9987
f_charbig = 'updated by trigger'
9988
WHERE f_int1 = new.f_int1;
9990
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9991
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9992
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9994
# check trigger-1 success: 1
9996
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9997
f_int2 = CAST(f_char1 AS SIGNED INT),
9998
f_charbig = 'just inserted'
9999
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10001
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10002
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10003
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10004
'just inserted' FROM t0_template
10005
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10006
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10008
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10009
f_charbig = 'updated by trigger'
10010
WHERE f_int1 = new.f_int1;
10012
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10013
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10014
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10016
# check trigger-2 success: 1
10017
DROP TRIGGER trg_1;
10018
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10019
f_int2 = CAST(f_char1 AS SIGNED INT),
10020
f_charbig = 'just inserted'
10021
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10023
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10024
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10025
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10026
'just inserted' FROM t0_template
10027
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10028
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10030
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10031
f_charbig = 'updated by trigger'
10032
WHERE f_int1 = new.f_int1;
10034
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10035
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10037
# check trigger-3 success: 1
10038
DROP TRIGGER trg_1;
10039
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10040
f_int2 = CAST(f_char1 AS SIGNED INT),
10041
f_charbig = 'just inserted'
10042
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10044
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10045
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10046
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10047
'just inserted' FROM t0_template
10048
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10049
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10051
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10052
f_charbig = 'updated by trigger'
10053
WHERE f_int1 = - old.f_int1;
10055
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10056
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10058
# check trigger-4 success: 1
10059
DROP TRIGGER trg_1;
10060
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10061
f_int2 = CAST(f_char1 AS SIGNED INT),
10062
f_charbig = 'just inserted'
10063
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10065
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10066
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10067
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10068
'just inserted' FROM t0_template
10069
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10070
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10072
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10073
f_charbig = 'updated by trigger'
10074
WHERE f_int1 = new.f_int1;
10076
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10077
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10079
# check trigger-5 success: 1
10080
DROP TRIGGER trg_1;
10081
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10082
f_int2 = CAST(f_char1 AS SIGNED INT),
10083
f_charbig = 'just inserted'
10084
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10086
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10087
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10088
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10089
'just inserted' FROM t0_template
10090
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10091
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10093
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10094
f_charbig = 'updated by trigger'
10095
WHERE f_int1 = - old.f_int1;
10097
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10098
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10100
# check trigger-6 success: 1
10101
DROP TRIGGER trg_1;
10102
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10103
f_int2 = CAST(f_char1 AS SIGNED INT),
10104
f_charbig = 'just inserted'
10105
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10107
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10108
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10109
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10110
'just inserted' FROM t0_template
10111
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10112
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10114
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10115
f_charbig = 'updated by trigger'
10116
WHERE f_int1 = - old.f_int1;
10119
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10121
# check trigger-7 success: 1
10122
DROP TRIGGER trg_1;
10123
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10124
f_int2 = CAST(f_char1 AS SIGNED INT),
10125
f_charbig = 'just inserted'
10126
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10128
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10129
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10130
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10131
'just inserted' FROM t0_template
10132
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10133
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10135
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10136
f_charbig = 'updated by trigger'
10137
WHERE f_int1 = - old.f_int1;
10140
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10142
# check trigger-8 success: 1
10143
DROP TRIGGER trg_1;
10144
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10145
f_int2 = CAST(f_char1 AS SIGNED INT),
10146
f_charbig = 'just inserted'
10147
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10149
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10151
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10152
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10154
SET new.f_int1 = old.f_int1 + @max_row,
10155
new.f_int2 = old.f_int2 - @max_row,
10156
new.f_charbig = '####updated per update trigger####';
10159
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10160
f_charbig = '####updated per update statement itself####';
10162
# check trigger-9 success: 1
10163
DROP TRIGGER trg_2;
10164
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10165
f_int2 = CAST(f_char1 AS SIGNED INT),
10166
f_charbig = CONCAT('===',f_char1,'===');
10167
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10169
SET new.f_int1 = new.f_int1 + @max_row,
10170
new.f_int2 = new.f_int2 - @max_row,
10171
new.f_charbig = '####updated per update trigger####';
10174
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10175
f_charbig = '####updated per update statement itself####';
10177
# check trigger-10 success: 1
10178
DROP TRIGGER trg_2;
10179
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10180
f_int2 = CAST(f_char1 AS SIGNED INT),
10181
f_charbig = CONCAT('===',f_char1,'===');
10182
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10184
SET new.f_int1 = @my_max1 + @counter,
10185
new.f_int2 = @my_min2 - @counter,
10186
new.f_charbig = '####updated per insert trigger####';
10187
SET @counter = @counter + 1;
10190
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10191
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10192
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10193
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10196
DROP TRIGGER trg_3;
10198
# check trigger-11 success: 1
10200
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10201
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10202
AND f_charbig = '####updated per insert trigger####';
10203
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10205
SET new.f_int1 = @my_max1 + @counter,
10206
new.f_int2 = @my_min2 - @counter,
10207
new.f_charbig = '####updated per insert trigger####';
10208
SET @counter = @counter + 1;
10211
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10212
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10213
SELECT CAST(f_int1 AS CHAR),
10214
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10215
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10217
DROP TRIGGER trg_3;
10219
# check trigger-12 success: 1
10221
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10222
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10223
AND f_charbig = '####updated per insert trigger####';
10225
Table Op Msg_type Msg_text
10226
test.t1 analyze note The storage engine for the table doesn't support analyze
10227
CHECK TABLE t1 EXTENDED;
10228
Table Op Msg_type Msg_text
10229
test.t1 check note The storage engine for the table doesn't support check
10230
CHECKSUM TABLE t1 EXTENDED;
10232
test.t1 <some_value>
10234
Table Op Msg_type Msg_text
10235
test.t1 optimize note The storage engine for the table doesn't support optimize
10236
# check layout success: 1
10237
REPAIR TABLE t1 EXTENDED;
10238
Table Op Msg_type Msg_text
10239
test.t1 repair note The storage engine for the table doesn't support repair
10240
# check layout success: 1
10243
# check TRUNCATE success: 1
10244
# check layout success: 1
10245
# End usability test (inc/partition_check.inc)
10252
f_charbig VARCHAR(1000)
10255
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
10256
(PARTITION parta VALUES LESS THAN (0),
10257
PARTITION partb VALUES LESS THAN (5),
10258
PARTITION partc VALUES LESS THAN (10),
10259
PARTITION partd VALUES LESS THAN (10 + 5),
10260
PARTITION parte VALUES LESS THAN (20),
10261
PARTITION partf VALUES LESS THAN (2147483646));
10262
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10263
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10264
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10265
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
10266
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10267
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10268
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10269
# Start usability test (inc/partition_check.inc)
10271
SHOW CREATE TABLE t1;
10273
t1 CREATE TABLE `t1` (
10274
`f_int1` int(11) DEFAULT NULL,
10275
`f_int2` int(11) DEFAULT NULL,
10276
`f_char1` char(20) DEFAULT NULL,
10277
`f_char2` char(20) DEFAULT NULL,
10278
`f_charbig` varchar(1000) DEFAULT NULL,
10279
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
10280
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 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 (15) ENGINE = MyISAM, PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
10283
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD
10284
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI
10285
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYD
10286
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYI
10287
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYD
10288
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYI
10289
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYD
10290
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYI
10291
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYD
10292
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYI
10293
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYD
10294
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYI
10295
$MYSQLTEST_VARDIR/master-data/test/t1.frm
10296
$MYSQLTEST_VARDIR/master-data/test/t1.par
10298
# check prerequisites-1 success: 1
10299
# check COUNT(*) success: 1
10300
# check MIN/MAX(f_int1) success: 1
10301
# check MIN/MAX(f_int2) success: 1
10302
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10303
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10304
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10305
WHERE f_int1 IN (2,3);
10306
ERROR 23000: Can't write; duplicate key in table 't1'
10307
# check prerequisites-3 success: 1
10308
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
10309
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10310
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10311
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10312
WHERE f_int1 IN (2,3);
10313
DELETE FROM t1 WHERE f_charbig = 'delete me';
10314
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10315
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10316
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10317
WHERE f_int1 IN (2,3);
10318
DELETE FROM t1 WHERE f_charbig = 'delete me';
10319
# check read via f_int1 success: 1
10320
# check read via f_int2 success: 1
10322
# check multiple-1 success: 1
10323
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10325
# check multiple-2 success: 1
10326
INSERT INTO t1 SELECT * FROM t0_template
10327
WHERE MOD(f_int1,3) = 0;
10329
# check multiple-3 success: 1
10330
UPDATE t1 SET f_int1 = f_int1 + @max_row
10331
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10332
AND @max_row_div2 + @max_row_div4;
10334
# check multiple-4 success: 1
10336
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10337
AND @max_row_div2 + @max_row_div4 + @max_row;
10339
# check multiple-5 success: 1
10340
SELECT COUNT(*) INTO @try_count FROM t0_template
10341
WHERE MOD(f_int1,3) = 0
10342
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10343
SELECT COUNT(*) INTO @clash_count
10344
FROM t1 INNER JOIN t0_template USING(f_int1)
10345
WHERE MOD(f_int1,3) = 0
10346
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10347
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10349
SET f_int1 = @cur_value , f_int2 = @cur_value,
10350
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10351
f_charbig = '#SINGLE#';
10353
# check single-1 success: 1
10354
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10356
SET f_int1 = @cur_value , f_int2 = @cur_value,
10357
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10358
f_charbig = '#SINGLE#';
10360
# check single-2 success: 1
10361
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10362
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10363
UPDATE t1 SET f_int1 = @cur_value2
10364
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10366
# check single-3 success: 1
10367
SET @cur_value1= -1;
10368
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10369
UPDATE t1 SET f_int1 = @cur_value1
10370
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10372
# check single-4 success: 1
10373
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10374
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10376
# check single-5 success: 1
10377
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10379
# check single-6 success: 1
10380
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10381
ERROR HY000: Table has no partition for value 2147483647
10382
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10383
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10384
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10385
f_charbig = '#NULL#';
10387
SET f_int1 = NULL , f_int2 = -@max_row,
10388
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10389
f_charbig = '#NULL#';
10390
# check null success: 1
10392
# check null-1 success: 1
10393
UPDATE t1 SET f_int1 = -@max_row
10394
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10395
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10397
# check null-2 success: 1
10398
UPDATE t1 SET f_int1 = NULL
10399
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10400
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10402
# check null-3 success: 1
10404
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10405
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10407
# check null-4 success: 1
10409
WHERE f_int1 = 0 AND f_int2 = 0
10410
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10411
AND f_charbig = '#NULL#';
10412
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10413
SELECT f_int1, f_int1, '', '', 'was inserted'
10414
FROM t0_template source_tab
10415
WHERE MOD(f_int1,3) = 0
10416
AND f_int1 BETWEEN @max_row_div2 AND @max_row
10418
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
10419
f_int2 = 2 * @max_row + source_tab.f_int1,
10420
f_charbig = 'was updated';
10422
# check unique-1-a success: 1
10424
# check unique-1-b success: 1
10425
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10426
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10427
f_int2 = CAST(f_char1 AS SIGNED INT),
10428
f_charbig = CONCAT('===',f_char1,'===')
10429
WHERE f_charbig = 'was updated';
10430
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10431
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
10432
FROM t0_template source_tab
10433
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10435
# check replace success: 1
10437
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
10439
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
10440
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
10441
UPDATE t1 SET f_int2 = f_int1,
10442
f_char1 = CAST(f_int1 AS CHAR),
10443
f_char2 = CAST(f_int1 AS CHAR),
10444
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
10445
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
10447
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10448
SELECT f_int1, f_int1, '', '', 'was inserted'
10449
FROM t0_template source_tab
10450
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10452
# check transactions-1 success: 1
10455
# check transactions-2 success: 1
10458
# check transactions-3 success: 1
10459
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10463
# check transactions-4 success: 1
10464
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10465
SELECT f_int1, f_int1, '', '', 'was inserted'
10466
FROM t0_template source_tab
10467
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10469
# check transactions-5 success: 1
10472
Warning 1196 Some non-transactional changed tables couldn't be rolled back
10474
# check transactions-6 success: 1
10475
# INFO: Storage engine used for t1 seems to be not transactional.
10478
# check transactions-7 success: 1
10479
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10481
SET @@session.sql_mode = 'traditional';
10482
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10483
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10484
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10485
'', '', 'was inserted' FROM t0_template
10486
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10487
ERROR 22012: Division by 0
10490
# check transactions-8 success: 1
10491
# INFO: Storage engine used for t1 seems to be unable to revert
10492
# changes made by the failing statement.
10493
SET @@session.sql_mode = '';
10495
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10497
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10499
# check special-1 success: 1
10500
UPDATE t1 SET f_charbig = '';
10502
# check special-2 success: 1
10503
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10504
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10505
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10506
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10507
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10508
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10509
'just inserted' FROM t0_template
10510
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10511
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10513
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10514
f_charbig = 'updated by trigger'
10515
WHERE f_int1 = new.f_int1;
10517
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10518
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10519
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10521
# check trigger-1 success: 1
10522
DROP TRIGGER trg_1;
10523
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10524
f_int2 = CAST(f_char1 AS SIGNED INT),
10525
f_charbig = 'just inserted'
10526
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10528
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10529
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10530
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10531
'just inserted' FROM t0_template
10532
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10533
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10535
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10536
f_charbig = 'updated by trigger'
10537
WHERE f_int1 = new.f_int1;
10539
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10540
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10541
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10543
# check trigger-2 success: 1
10544
DROP TRIGGER trg_1;
10545
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10546
f_int2 = CAST(f_char1 AS SIGNED INT),
10547
f_charbig = 'just inserted'
10548
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10550
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10551
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10552
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10553
'just inserted' FROM t0_template
10554
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10555
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10557
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10558
f_charbig = 'updated by trigger'
10559
WHERE f_int1 = new.f_int1;
10561
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10562
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10564
# check trigger-3 success: 1
10565
DROP TRIGGER trg_1;
10566
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10567
f_int2 = CAST(f_char1 AS SIGNED INT),
10568
f_charbig = 'just inserted'
10569
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10571
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10572
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10573
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10574
'just inserted' FROM t0_template
10575
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10576
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10578
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10579
f_charbig = 'updated by trigger'
10580
WHERE f_int1 = - old.f_int1;
10582
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10583
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10585
# check trigger-4 success: 1
10586
DROP TRIGGER trg_1;
10587
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10588
f_int2 = CAST(f_char1 AS SIGNED INT),
10589
f_charbig = 'just inserted'
10590
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10592
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10593
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10594
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10595
'just inserted' FROM t0_template
10596
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10597
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10599
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10600
f_charbig = 'updated by trigger'
10601
WHERE f_int1 = new.f_int1;
10603
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10604
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10606
# check trigger-5 success: 1
10607
DROP TRIGGER trg_1;
10608
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10609
f_int2 = CAST(f_char1 AS SIGNED INT),
10610
f_charbig = 'just inserted'
10611
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10613
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10614
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10615
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10616
'just inserted' FROM t0_template
10617
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10618
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10620
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10621
f_charbig = 'updated by trigger'
10622
WHERE f_int1 = - old.f_int1;
10624
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10625
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10627
# check trigger-6 success: 1
10628
DROP TRIGGER trg_1;
10629
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10630
f_int2 = CAST(f_char1 AS SIGNED INT),
10631
f_charbig = 'just inserted'
10632
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10634
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10635
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10636
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10637
'just inserted' FROM t0_template
10638
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10639
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10641
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10642
f_charbig = 'updated by trigger'
10643
WHERE f_int1 = - old.f_int1;
10646
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10648
# check trigger-7 success: 1
10649
DROP TRIGGER trg_1;
10650
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10651
f_int2 = CAST(f_char1 AS SIGNED INT),
10652
f_charbig = 'just inserted'
10653
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10655
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10656
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10657
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10658
'just inserted' FROM t0_template
10659
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10660
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10662
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10663
f_charbig = 'updated by trigger'
10664
WHERE f_int1 = - old.f_int1;
10667
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10669
# check trigger-8 success: 1
10670
DROP TRIGGER trg_1;
10671
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10672
f_int2 = CAST(f_char1 AS SIGNED INT),
10673
f_charbig = 'just inserted'
10674
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10676
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10678
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10679
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10681
SET new.f_int1 = old.f_int1 + @max_row,
10682
new.f_int2 = old.f_int2 - @max_row,
10683
new.f_charbig = '####updated per update trigger####';
10686
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10687
f_charbig = '####updated per update statement itself####';
10689
# check trigger-9 success: 1
10690
DROP TRIGGER trg_2;
10691
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10692
f_int2 = CAST(f_char1 AS SIGNED INT),
10693
f_charbig = CONCAT('===',f_char1,'===');
10694
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10696
SET new.f_int1 = new.f_int1 + @max_row,
10697
new.f_int2 = new.f_int2 - @max_row,
10698
new.f_charbig = '####updated per update trigger####';
10701
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10702
f_charbig = '####updated per update statement itself####';
10704
# check trigger-10 success: 1
10705
DROP TRIGGER trg_2;
10706
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10707
f_int2 = CAST(f_char1 AS SIGNED INT),
10708
f_charbig = CONCAT('===',f_char1,'===');
10709
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10711
SET new.f_int1 = @my_max1 + @counter,
10712
new.f_int2 = @my_min2 - @counter,
10713
new.f_charbig = '####updated per insert trigger####';
10714
SET @counter = @counter + 1;
10717
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10718
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10719
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10720
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10721
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10723
DROP TRIGGER trg_3;
10725
# check trigger-11 success: 1
10727
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10728
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10729
AND f_charbig = '####updated per insert trigger####';
10730
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10732
SET new.f_int1 = @my_max1 + @counter,
10733
new.f_int2 = @my_min2 - @counter,
10734
new.f_charbig = '####updated per insert trigger####';
10735
SET @counter = @counter + 1;
10738
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10739
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10740
SELECT CAST(f_int1 AS CHAR),
10741
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10744
DROP TRIGGER trg_3;
10746
# check trigger-12 success: 1
10748
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10749
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10750
AND f_charbig = '####updated per insert trigger####';
10752
Table Op Msg_type Msg_text
10753
test.t1 analyze note The storage engine for the table doesn't support analyze
10754
CHECK TABLE t1 EXTENDED;
10755
Table Op Msg_type Msg_text
10756
test.t1 check note The storage engine for the table doesn't support check
10757
CHECKSUM TABLE t1 EXTENDED;
10759
test.t1 <some_value>
10761
Table Op Msg_type Msg_text
10762
test.t1 optimize note The storage engine for the table doesn't support optimize
10763
# check layout success: 1
10764
REPAIR TABLE t1 EXTENDED;
10765
Table Op Msg_type Msg_text
10766
test.t1 repair note The storage engine for the table doesn't support repair
10767
# check layout success: 1
10770
# check TRUNCATE success: 1
10771
# check layout success: 1
10772
# End usability test (inc/partition_check.inc)
10779
f_charbig VARCHAR(1000)
10782
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
10783
(PARTITION parta VALUES LESS THAN (0),
10784
PARTITION partb VALUES LESS THAN (5),
10785
PARTITION partc VALUES LESS THAN (10),
10786
PARTITION partd VALUES LESS THAN (2147483646));
10787
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10788
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10789
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10790
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
10791
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10792
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10793
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10794
# Start usability test (inc/partition_check.inc)
10796
SHOW CREATE TABLE t1;
10798
t1 CREATE TABLE `t1` (
10799
`f_int1` int(11) DEFAULT NULL,
10800
`f_int2` int(11) DEFAULT NULL,
10801
`f_char1` char(20) DEFAULT NULL,
10802
`f_char2` char(20) DEFAULT NULL,
10803
`f_charbig` varchar(1000) DEFAULT NULL,
10804
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
10805
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) 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) */
10808
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYD
10809
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYI
10810
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYD
10811
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYI
10812
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYD
10813
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYI
10814
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYD
10815
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYI
10816
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYD
10817
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYI
10818
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYD
10819
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYI
10820
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYD
10821
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYI
10822
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYD
10823
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYI
10824
$MYSQLTEST_VARDIR/master-data/test/t1.frm
10825
$MYSQLTEST_VARDIR/master-data/test/t1.par
10827
# check prerequisites-1 success: 1
10828
# check COUNT(*) success: 1
10829
# check MIN/MAX(f_int1) success: 1
10830
# check MIN/MAX(f_int2) success: 1
10831
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10832
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10833
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10834
WHERE f_int1 IN (2,3);
10835
ERROR 23000: Can't write; duplicate key in table 't1'
10836
# check prerequisites-3 success: 1
10837
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
10838
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10839
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10840
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10841
WHERE f_int1 IN (2,3);
10842
DELETE FROM t1 WHERE f_charbig = 'delete me';
10843
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10844
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10845
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10846
WHERE f_int1 IN (2,3);
10847
DELETE FROM t1 WHERE f_charbig = 'delete me';
10848
# check read via f_int1 success: 1
10849
# check read via f_int2 success: 1
10851
# check multiple-1 success: 1
10852
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10854
# check multiple-2 success: 1
10855
INSERT INTO t1 SELECT * FROM t0_template
10856
WHERE MOD(f_int1,3) = 0;
10858
# check multiple-3 success: 1
10859
UPDATE t1 SET f_int1 = f_int1 + @max_row
10860
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10861
AND @max_row_div2 + @max_row_div4;
10863
# check multiple-4 success: 1
10865
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10866
AND @max_row_div2 + @max_row_div4 + @max_row;
10868
# check multiple-5 success: 1
10869
SELECT COUNT(*) INTO @try_count FROM t0_template
10870
WHERE MOD(f_int1,3) = 0
10871
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10872
SELECT COUNT(*) INTO @clash_count
10873
FROM t1 INNER JOIN t0_template USING(f_int1)
10874
WHERE MOD(f_int1,3) = 0
10875
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10876
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10878
SET f_int1 = @cur_value , f_int2 = @cur_value,
10879
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10880
f_charbig = '#SINGLE#';
10882
# check single-1 success: 1
10883
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10885
SET f_int1 = @cur_value , f_int2 = @cur_value,
10886
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10887
f_charbig = '#SINGLE#';
10889
# check single-2 success: 1
10890
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10891
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10892
UPDATE t1 SET f_int1 = @cur_value2
10893
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10895
# check single-3 success: 1
10896
SET @cur_value1= -1;
10897
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10898
UPDATE t1 SET f_int1 = @cur_value1
10899
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10901
# check single-4 success: 1
10902
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10903
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10905
# check single-5 success: 1
10906
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10908
# check single-6 success: 1
10909
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10910
ERROR HY000: Table has no partition for value 2147483647
10911
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10912
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10913
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10914
f_charbig = '#NULL#';
10916
SET f_int1 = NULL , f_int2 = -@max_row,
10917
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10918
f_charbig = '#NULL#';
10919
# check null success: 1
10921
# check null-1 success: 1
10922
UPDATE t1 SET f_int1 = -@max_row
10923
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10924
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10926
# check null-2 success: 1
10927
UPDATE t1 SET f_int1 = NULL
10928
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10929
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10931
# check null-3 success: 1
10933
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10934
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10936
# check null-4 success: 1
10938
WHERE f_int1 = 0 AND f_int2 = 0
10939
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10940
AND f_charbig = '#NULL#';
10941
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10942
SELECT f_int1, f_int1, '', '', 'was inserted'
10943
FROM t0_template source_tab
10944
WHERE MOD(f_int1,3) = 0
10945
AND f_int1 BETWEEN @max_row_div2 AND @max_row
10947
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
10948
f_int2 = 2 * @max_row + source_tab.f_int1,
10949
f_charbig = 'was updated';
10951
# check unique-1-a success: 1
10953
# check unique-1-b success: 1
10954
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10955
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10956
f_int2 = CAST(f_char1 AS SIGNED INT),
10957
f_charbig = CONCAT('===',f_char1,'===')
10958
WHERE f_charbig = 'was updated';
10959
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10960
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
10961
FROM t0_template source_tab
10962
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10964
# check replace success: 1
10966
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
10968
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
10969
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
10970
UPDATE t1 SET f_int2 = f_int1,
10971
f_char1 = CAST(f_int1 AS CHAR),
10972
f_char2 = CAST(f_int1 AS CHAR),
10973
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
10974
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
10976
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10977
SELECT f_int1, f_int1, '', '', 'was inserted'
10978
FROM t0_template source_tab
10979
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10981
# check transactions-1 success: 1
10984
# check transactions-2 success: 1
10987
# check transactions-3 success: 1
10988
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10992
# check transactions-4 success: 1
10993
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10994
SELECT f_int1, f_int1, '', '', 'was inserted'
10995
FROM t0_template source_tab
10996
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10998
# check transactions-5 success: 1
11001
Warning 1196 Some non-transactional changed tables couldn't be rolled back
11003
# check transactions-6 success: 1
11004
# INFO: Storage engine used for t1 seems to be not transactional.
11007
# check transactions-7 success: 1
11008
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11010
SET @@session.sql_mode = 'traditional';
11011
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11012
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11013
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11014
'', '', 'was inserted' FROM t0_template
11015
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11016
ERROR 22012: Division by 0
11019
# check transactions-8 success: 1
11020
# INFO: Storage engine used for t1 seems to be unable to revert
11021
# changes made by the failing statement.
11022
SET @@session.sql_mode = '';
11024
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11026
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11028
# check special-1 success: 1
11029
UPDATE t1 SET f_charbig = '';
11031
# check special-2 success: 1
11032
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11033
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11034
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11035
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11036
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11037
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11038
'just inserted' FROM t0_template
11039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11040
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11042
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11043
f_charbig = 'updated by trigger'
11044
WHERE f_int1 = new.f_int1;
11046
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11047
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11048
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11050
# check trigger-1 success: 1
11051
DROP TRIGGER trg_1;
11052
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11053
f_int2 = CAST(f_char1 AS SIGNED INT),
11054
f_charbig = 'just inserted'
11055
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11057
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11058
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11059
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11060
'just inserted' FROM t0_template
11061
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11062
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11064
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11065
f_charbig = 'updated by trigger'
11066
WHERE f_int1 = new.f_int1;
11068
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11069
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11070
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11072
# check trigger-2 success: 1
11073
DROP TRIGGER trg_1;
11074
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11075
f_int2 = CAST(f_char1 AS SIGNED INT),
11076
f_charbig = 'just inserted'
11077
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11079
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11080
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11081
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11082
'just inserted' FROM t0_template
11083
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11084
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11086
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11087
f_charbig = 'updated by trigger'
11088
WHERE f_int1 = new.f_int1;
11090
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11091
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11093
# check trigger-3 success: 1
11094
DROP TRIGGER trg_1;
11095
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11096
f_int2 = CAST(f_char1 AS SIGNED INT),
11097
f_charbig = 'just inserted'
11098
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11100
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11101
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11102
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11103
'just inserted' FROM t0_template
11104
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11105
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11107
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11108
f_charbig = 'updated by trigger'
11109
WHERE f_int1 = - old.f_int1;
11111
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11112
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11114
# check trigger-4 success: 1
11115
DROP TRIGGER trg_1;
11116
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11117
f_int2 = CAST(f_char1 AS SIGNED INT),
11118
f_charbig = 'just inserted'
11119
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11121
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11122
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11123
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11124
'just inserted' FROM t0_template
11125
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11126
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11128
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11129
f_charbig = 'updated by trigger'
11130
WHERE f_int1 = new.f_int1;
11132
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11133
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11135
# check trigger-5 success: 1
11136
DROP TRIGGER trg_1;
11137
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11138
f_int2 = CAST(f_char1 AS SIGNED INT),
11139
f_charbig = 'just inserted'
11140
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11142
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11143
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11144
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11145
'just inserted' FROM t0_template
11146
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11147
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11149
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11150
f_charbig = 'updated by trigger'
11151
WHERE f_int1 = - old.f_int1;
11153
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11154
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11156
# check trigger-6 success: 1
11157
DROP TRIGGER trg_1;
11158
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11159
f_int2 = CAST(f_char1 AS SIGNED INT),
11160
f_charbig = 'just inserted'
11161
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11163
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11164
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11165
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11166
'just inserted' FROM t0_template
11167
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11168
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11170
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11171
f_charbig = 'updated by trigger'
11172
WHERE f_int1 = - old.f_int1;
11175
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11177
# check trigger-7 success: 1
11178
DROP TRIGGER trg_1;
11179
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11180
f_int2 = CAST(f_char1 AS SIGNED INT),
11181
f_charbig = 'just inserted'
11182
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11184
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11185
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11186
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11187
'just inserted' FROM t0_template
11188
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11189
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11191
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11192
f_charbig = 'updated by trigger'
11193
WHERE f_int1 = - old.f_int1;
11196
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11198
# check trigger-8 success: 1
11199
DROP TRIGGER trg_1;
11200
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11201
f_int2 = CAST(f_char1 AS SIGNED INT),
11202
f_charbig = 'just inserted'
11203
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11205
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11207
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11208
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11210
SET new.f_int1 = old.f_int1 + @max_row,
11211
new.f_int2 = old.f_int2 - @max_row,
11212
new.f_charbig = '####updated per update trigger####';
11215
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11216
f_charbig = '####updated per update statement itself####';
11218
# check trigger-9 success: 1
11219
DROP TRIGGER trg_2;
11220
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11221
f_int2 = CAST(f_char1 AS SIGNED INT),
11222
f_charbig = CONCAT('===',f_char1,'===');
11223
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11225
SET new.f_int1 = new.f_int1 + @max_row,
11226
new.f_int2 = new.f_int2 - @max_row,
11227
new.f_charbig = '####updated per update trigger####';
11230
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11231
f_charbig = '####updated per update statement itself####';
11233
# check trigger-10 success: 1
11234
DROP TRIGGER trg_2;
11235
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11236
f_int2 = CAST(f_char1 AS SIGNED INT),
11237
f_charbig = CONCAT('===',f_char1,'===');
11238
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11240
SET new.f_int1 = @my_max1 + @counter,
11241
new.f_int2 = @my_min2 - @counter,
11242
new.f_charbig = '####updated per insert trigger####';
11243
SET @counter = @counter + 1;
11246
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11247
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11248
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11249
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11250
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11252
DROP TRIGGER trg_3;
11254
# check trigger-11 success: 1
11256
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11257
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11258
AND f_charbig = '####updated per insert trigger####';
11259
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11261
SET new.f_int1 = @my_max1 + @counter,
11262
new.f_int2 = @my_min2 - @counter,
11263
new.f_charbig = '####updated per insert trigger####';
11264
SET @counter = @counter + 1;
11267
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11268
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11269
SELECT CAST(f_int1 AS CHAR),
11270
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11271
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11273
DROP TRIGGER trg_3;
11275
# check trigger-12 success: 1
11277
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11278
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11279
AND f_charbig = '####updated per insert trigger####';
11281
Table Op Msg_type Msg_text
11282
test.t1 analyze note The storage engine for the table doesn't support analyze
11283
CHECK TABLE t1 EXTENDED;
11284
Table Op Msg_type Msg_text
11285
test.t1 check note The storage engine for the table doesn't support check
11286
CHECKSUM TABLE t1 EXTENDED;
11288
test.t1 <some_value>
11290
Table Op Msg_type Msg_text
11291
test.t1 optimize note The storage engine for the table doesn't support optimize
11292
# check layout success: 1
11293
REPAIR TABLE t1 EXTENDED;
11294
Table Op Msg_type Msg_text
11295
test.t1 repair note The storage engine for the table doesn't support repair
11296
# check layout success: 1
11299
# check TRUNCATE success: 1
11300
# check layout success: 1
11301
# End usability test (inc/partition_check.inc)
11308
f_charbig VARCHAR(1000)
11311
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
11312
(PARTITION part1 VALUES LESS THAN (0)
11313
(SUBPARTITION subpart11, SUBPARTITION subpart12),
11314
PARTITION part2 VALUES LESS THAN (5)
11315
(SUBPARTITION subpart21, SUBPARTITION subpart22),
11316
PARTITION part3 VALUES LESS THAN (10)
11317
(SUBPARTITION subpart31, SUBPARTITION subpart32),
11318
PARTITION part4 VALUES LESS THAN (2147483646)
11319
(SUBPARTITION subpart41, SUBPARTITION subpart42));
11320
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11321
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11322
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11323
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
11324
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11325
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11326
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11327
# Start usability test (inc/partition_check.inc)
11329
SHOW CREATE TABLE t1;
11331
t1 CREATE TABLE `t1` (
11332
`f_int1` int(11) DEFAULT NULL,
11333
`f_int2` int(11) DEFAULT NULL,
11334
`f_char1` char(20) DEFAULT NULL,
11335
`f_char2` char(20) DEFAULT NULL,
11336
`f_charbig` varchar(1000) DEFAULT NULL,
11337
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
11338
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (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)) */
11341
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYD
11342
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYI
11343
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYD
11344
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYI
11345
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYD
11346
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYI
11347
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYD
11348
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYI
11349
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYD
11350
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYI
11351
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYD
11352
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYI
11353
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYD
11354
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYI
11355
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYD
11356
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYI
11357
$MYSQLTEST_VARDIR/master-data/test/t1.frm
11358
$MYSQLTEST_VARDIR/master-data/test/t1.par
11360
# check prerequisites-1 success: 1
11361
# check COUNT(*) success: 1
11362
# check MIN/MAX(f_int1) success: 1
11363
# check MIN/MAX(f_int2) success: 1
11364
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11365
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11366
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11367
WHERE f_int1 IN (2,3);
11368
ERROR 23000: Can't write; duplicate key in table 't1'
11369
# check prerequisites-3 success: 1
11370
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
11371
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11372
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11373
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11374
WHERE f_int1 IN (2,3);
11375
DELETE FROM t1 WHERE f_charbig = 'delete me';
11376
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11377
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11378
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11379
WHERE f_int1 IN (2,3);
11380
DELETE FROM t1 WHERE f_charbig = 'delete me';
11381
# check read via f_int1 success: 1
11382
# check read via f_int2 success: 1
11384
# check multiple-1 success: 1
11385
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11387
# check multiple-2 success: 1
11388
INSERT INTO t1 SELECT * FROM t0_template
11389
WHERE MOD(f_int1,3) = 0;
11391
# check multiple-3 success: 1
11392
UPDATE t1 SET f_int1 = f_int1 + @max_row
11393
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11394
AND @max_row_div2 + @max_row_div4;
11396
# check multiple-4 success: 1
11398
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11399
AND @max_row_div2 + @max_row_div4 + @max_row;
11401
# check multiple-5 success: 1
11402
SELECT COUNT(*) INTO @try_count FROM t0_template
11403
WHERE MOD(f_int1,3) = 0
11404
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11405
SELECT COUNT(*) INTO @clash_count
11406
FROM t1 INNER JOIN t0_template USING(f_int1)
11407
WHERE MOD(f_int1,3) = 0
11408
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11409
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11411
SET f_int1 = @cur_value , f_int2 = @cur_value,
11412
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11413
f_charbig = '#SINGLE#';
11415
# check single-1 success: 1
11416
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11418
SET f_int1 = @cur_value , f_int2 = @cur_value,
11419
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11420
f_charbig = '#SINGLE#';
11422
# check single-2 success: 1
11423
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11424
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11425
UPDATE t1 SET f_int1 = @cur_value2
11426
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11428
# check single-3 success: 1
11429
SET @cur_value1= -1;
11430
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11431
UPDATE t1 SET f_int1 = @cur_value1
11432
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11434
# check single-4 success: 1
11435
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11436
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11438
# check single-5 success: 1
11439
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11441
# check single-6 success: 1
11442
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11443
ERROR HY000: Table has no partition for value 2147483647
11444
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11445
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11446
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11447
f_charbig = '#NULL#';
11449
SET f_int1 = NULL , f_int2 = -@max_row,
11450
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11451
f_charbig = '#NULL#';
11452
# check null success: 1
11454
# check null-1 success: 1
11455
UPDATE t1 SET f_int1 = -@max_row
11456
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11457
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11459
# check null-2 success: 1
11460
UPDATE t1 SET f_int1 = NULL
11461
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11462
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11464
# check null-3 success: 1
11466
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11467
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11469
# check null-4 success: 1
11471
WHERE f_int1 = 0 AND f_int2 = 0
11472
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11473
AND f_charbig = '#NULL#';
11474
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11475
SELECT f_int1, f_int1, '', '', 'was inserted'
11476
FROM t0_template source_tab
11477
WHERE MOD(f_int1,3) = 0
11478
AND f_int1 BETWEEN @max_row_div2 AND @max_row
11480
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
11481
f_int2 = 2 * @max_row + source_tab.f_int1,
11482
f_charbig = 'was updated';
11484
# check unique-1-a success: 1
11486
# check unique-1-b success: 1
11487
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11488
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11489
f_int2 = CAST(f_char1 AS SIGNED INT),
11490
f_charbig = CONCAT('===',f_char1,'===')
11491
WHERE f_charbig = 'was updated';
11492
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11493
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11494
FROM t0_template source_tab
11495
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11497
# check replace success: 1
11499
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11501
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11502
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11503
UPDATE t1 SET f_int2 = f_int1,
11504
f_char1 = CAST(f_int1 AS CHAR),
11505
f_char2 = CAST(f_int1 AS CHAR),
11506
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11507
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
11509
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11510
SELECT f_int1, f_int1, '', '', 'was inserted'
11511
FROM t0_template source_tab
11512
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11514
# check transactions-1 success: 1
11517
# check transactions-2 success: 1
11520
# check transactions-3 success: 1
11521
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11525
# check transactions-4 success: 1
11526
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11527
SELECT f_int1, f_int1, '', '', 'was inserted'
11528
FROM t0_template source_tab
11529
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11531
# check transactions-5 success: 1
11534
Warning 1196 Some non-transactional changed tables couldn't be rolled back
11536
# check transactions-6 success: 1
11537
# INFO: Storage engine used for t1 seems to be not transactional.
11540
# check transactions-7 success: 1
11541
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11543
SET @@session.sql_mode = 'traditional';
11544
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11545
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11546
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11547
'', '', 'was inserted' FROM t0_template
11548
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11549
ERROR 22012: Division by 0
11552
# check transactions-8 success: 1
11553
# INFO: Storage engine used for t1 seems to be unable to revert
11554
# changes made by the failing statement.
11555
SET @@session.sql_mode = '';
11557
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11559
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11561
# check special-1 success: 1
11562
UPDATE t1 SET f_charbig = '';
11564
# check special-2 success: 1
11565
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11566
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11567
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11568
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11569
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11570
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11571
'just inserted' FROM t0_template
11572
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11573
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11575
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11576
f_charbig = 'updated by trigger'
11577
WHERE f_int1 = new.f_int1;
11579
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11580
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11581
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11583
# check trigger-1 success: 1
11584
DROP TRIGGER trg_1;
11585
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11586
f_int2 = CAST(f_char1 AS SIGNED INT),
11587
f_charbig = 'just inserted'
11588
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11590
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11591
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11592
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11593
'just inserted' FROM t0_template
11594
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11595
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11597
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11598
f_charbig = 'updated by trigger'
11599
WHERE f_int1 = new.f_int1;
11601
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11602
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11603
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11605
# check trigger-2 success: 1
11606
DROP TRIGGER trg_1;
11607
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11608
f_int2 = CAST(f_char1 AS SIGNED INT),
11609
f_charbig = 'just inserted'
11610
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11612
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11613
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11614
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11615
'just inserted' FROM t0_template
11616
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11617
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11619
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11620
f_charbig = 'updated by trigger'
11621
WHERE f_int1 = new.f_int1;
11623
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11624
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11626
# check trigger-3 success: 1
11627
DROP TRIGGER trg_1;
11628
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11629
f_int2 = CAST(f_char1 AS SIGNED INT),
11630
f_charbig = 'just inserted'
11631
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11633
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11634
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11635
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11636
'just inserted' FROM t0_template
11637
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11638
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11640
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11641
f_charbig = 'updated by trigger'
11642
WHERE f_int1 = - old.f_int1;
11644
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11645
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11647
# check trigger-4 success: 1
11648
DROP TRIGGER trg_1;
11649
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11650
f_int2 = CAST(f_char1 AS SIGNED INT),
11651
f_charbig = 'just inserted'
11652
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11654
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11655
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11656
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11657
'just inserted' FROM t0_template
11658
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11659
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11661
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11662
f_charbig = 'updated by trigger'
11663
WHERE f_int1 = new.f_int1;
11665
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11666
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11668
# check trigger-5 success: 1
11669
DROP TRIGGER trg_1;
11670
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11671
f_int2 = CAST(f_char1 AS SIGNED INT),
11672
f_charbig = 'just inserted'
11673
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11675
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11676
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11677
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11678
'just inserted' FROM t0_template
11679
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11680
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11682
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11683
f_charbig = 'updated by trigger'
11684
WHERE f_int1 = - old.f_int1;
11686
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11687
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11689
# check trigger-6 success: 1
11690
DROP TRIGGER trg_1;
11691
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11692
f_int2 = CAST(f_char1 AS SIGNED INT),
11693
f_charbig = 'just inserted'
11694
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11696
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11697
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11698
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11699
'just inserted' FROM t0_template
11700
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11701
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11703
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11704
f_charbig = 'updated by trigger'
11705
WHERE f_int1 = - old.f_int1;
11708
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11710
# check trigger-7 success: 1
11711
DROP TRIGGER trg_1;
11712
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11713
f_int2 = CAST(f_char1 AS SIGNED INT),
11714
f_charbig = 'just inserted'
11715
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11717
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11718
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11719
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11720
'just inserted' FROM t0_template
11721
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11722
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11724
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11725
f_charbig = 'updated by trigger'
11726
WHERE f_int1 = - old.f_int1;
11729
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11731
# check trigger-8 success: 1
11732
DROP TRIGGER trg_1;
11733
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11734
f_int2 = CAST(f_char1 AS SIGNED INT),
11735
f_charbig = 'just inserted'
11736
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11738
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11740
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11741
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11743
SET new.f_int1 = old.f_int1 + @max_row,
11744
new.f_int2 = old.f_int2 - @max_row,
11745
new.f_charbig = '####updated per update trigger####';
11748
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11749
f_charbig = '####updated per update statement itself####';
11751
# check trigger-9 success: 1
11752
DROP TRIGGER trg_2;
11753
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11754
f_int2 = CAST(f_char1 AS SIGNED INT),
11755
f_charbig = CONCAT('===',f_char1,'===');
11756
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11758
SET new.f_int1 = new.f_int1 + @max_row,
11759
new.f_int2 = new.f_int2 - @max_row,
11760
new.f_charbig = '####updated per update trigger####';
11763
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11764
f_charbig = '####updated per update statement itself####';
11766
# check trigger-10 success: 1
11767
DROP TRIGGER trg_2;
11768
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11769
f_int2 = CAST(f_char1 AS SIGNED INT),
11770
f_charbig = CONCAT('===',f_char1,'===');
11771
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11773
SET new.f_int1 = @my_max1 + @counter,
11774
new.f_int2 = @my_min2 - @counter,
11775
new.f_charbig = '####updated per insert trigger####';
11776
SET @counter = @counter + 1;
11779
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11780
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11781
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11782
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11783
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11785
DROP TRIGGER trg_3;
11787
# check trigger-11 success: 1
11789
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11790
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11791
AND f_charbig = '####updated per insert trigger####';
11792
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11794
SET new.f_int1 = @my_max1 + @counter,
11795
new.f_int2 = @my_min2 - @counter,
11796
new.f_charbig = '####updated per insert trigger####';
11797
SET @counter = @counter + 1;
11800
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11801
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11802
SELECT CAST(f_int1 AS CHAR),
11803
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11804
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11806
DROP TRIGGER trg_3;
11808
# check trigger-12 success: 1
11810
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11811
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11812
AND f_charbig = '####updated per insert trigger####';
11814
Table Op Msg_type Msg_text
11815
test.t1 analyze note The storage engine for the table doesn't support analyze
11816
CHECK TABLE t1 EXTENDED;
11817
Table Op Msg_type Msg_text
11818
test.t1 check note The storage engine for the table doesn't support check
11819
CHECKSUM TABLE t1 EXTENDED;
11821
test.t1 <some_value>
11823
Table Op Msg_type Msg_text
11824
test.t1 optimize note The storage engine for the table doesn't support optimize
11825
# check layout success: 1
11826
REPAIR TABLE t1 EXTENDED;
11827
Table Op Msg_type Msg_text
11828
test.t1 repair note The storage engine for the table doesn't support repair
11829
# check layout success: 1
11832
# check TRUNCATE success: 1
11833
# check layout success: 1
11834
# End usability test (inc/partition_check.inc)
11841
f_charbig VARCHAR(1000)
11844
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
11845
(PARTITION part1 VALUES IN (0)
11846
(SUBPARTITION sp11, SUBPARTITION sp12),
11847
PARTITION part2 VALUES IN (1)
11848
(SUBPARTITION sp21, SUBPARTITION sp22),
11849
PARTITION part3 VALUES IN (2)
11850
(SUBPARTITION sp31, SUBPARTITION sp32),
11851
PARTITION part4 VALUES IN (NULL)
11852
(SUBPARTITION sp41, SUBPARTITION sp42));
11853
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11854
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11855
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11856
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
11857
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11858
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11859
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11860
# Start usability test (inc/partition_check.inc)
11862
SHOW CREATE TABLE t1;
11864
t1 CREATE TABLE `t1` (
11865
`f_int1` int(11) DEFAULT NULL,
11866
`f_int2` int(11) DEFAULT NULL,
11867
`f_char1` char(20) DEFAULT NULL,
11868
`f_char2` char(20) DEFAULT NULL,
11869
`f_charbig` varchar(1000) DEFAULT NULL,
11870
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
11871
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = 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)) */
11874
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYD
11875
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYI
11876
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYD
11877
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYI
11878
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYD
11879
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYI
11880
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYD
11881
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYI
11882
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYD
11883
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYI
11884
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYD
11885
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYI
11886
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYD
11887
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYI
11888
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYD
11889
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYI
11890
$MYSQLTEST_VARDIR/master-data/test/t1.frm
11891
$MYSQLTEST_VARDIR/master-data/test/t1.par
11893
# check prerequisites-1 success: 1
11894
# check COUNT(*) success: 1
11895
# check MIN/MAX(f_int1) success: 1
11896
# check MIN/MAX(f_int2) success: 1
11897
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11898
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11899
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11900
WHERE f_int1 IN (2,3);
11901
ERROR 23000: Can't write; duplicate key in table 't1'
11902
# check prerequisites-3 success: 1
11903
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
11904
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11905
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11906
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11907
WHERE f_int1 IN (2,3);
11908
DELETE FROM t1 WHERE f_charbig = 'delete me';
11909
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11910
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11911
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11912
WHERE f_int1 IN (2,3);
11913
DELETE FROM t1 WHERE f_charbig = 'delete me';
11914
# check read via f_int1 success: 1
11915
# check read via f_int2 success: 1
11917
# check multiple-1 success: 1
11918
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11920
# check multiple-2 success: 1
11921
INSERT INTO t1 SELECT * FROM t0_template
11922
WHERE MOD(f_int1,3) = 0;
11924
# check multiple-3 success: 1
11925
UPDATE t1 SET f_int1 = f_int1 + @max_row
11926
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11927
AND @max_row_div2 + @max_row_div4;
11929
# check multiple-4 success: 1
11931
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11932
AND @max_row_div2 + @max_row_div4 + @max_row;
11934
# check multiple-5 success: 1
11935
SELECT COUNT(*) INTO @try_count FROM t0_template
11936
WHERE MOD(f_int1,3) = 0
11937
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11938
SELECT COUNT(*) INTO @clash_count
11939
FROM t1 INNER JOIN t0_template USING(f_int1)
11940
WHERE MOD(f_int1,3) = 0
11941
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11942
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11944
SET f_int1 = @cur_value , f_int2 = @cur_value,
11945
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11946
f_charbig = '#SINGLE#';
11948
# check single-1 success: 1
11949
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11951
SET f_int1 = @cur_value , f_int2 = @cur_value,
11952
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11953
f_charbig = '#SINGLE#';
11955
# check single-2 success: 1
11956
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11957
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11958
UPDATE t1 SET f_int1 = @cur_value2
11959
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11961
# check single-3 success: 1
11962
SET @cur_value1= -1;
11963
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11964
UPDATE t1 SET f_int1 = @cur_value1
11965
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11967
# check single-4 success: 1
11968
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11969
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11971
# check single-5 success: 1
11972
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11974
# check single-6 success: 1
11975
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11977
# check single-7 success: 1
11978
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11979
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11980
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11981
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11982
f_charbig = '#NULL#';
11984
SET f_int1 = NULL , f_int2 = -@max_row,
11985
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11986
f_charbig = '#NULL#';
11987
# check null success: 1
11989
# check null-1 success: 1
11990
UPDATE t1 SET f_int1 = -@max_row
11991
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11992
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11994
# check null-2 success: 1
11995
UPDATE t1 SET f_int1 = NULL
11996
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11997
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11999
# check null-3 success: 1
12001
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12002
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12004
# check null-4 success: 1
12006
WHERE f_int1 = 0 AND f_int2 = 0
12007
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12008
AND f_charbig = '#NULL#';
12009
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12010
SELECT f_int1, f_int1, '', '', 'was inserted'
12011
FROM t0_template source_tab
12012
WHERE MOD(f_int1,3) = 0
12013
AND f_int1 BETWEEN @max_row_div2 AND @max_row
12015
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12016
f_int2 = 2 * @max_row + source_tab.f_int1,
12017
f_charbig = 'was updated';
12019
# check unique-1-a success: 1
12021
# check unique-1-b success: 1
12022
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12023
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12024
f_int2 = CAST(f_char1 AS SIGNED INT),
12025
f_charbig = CONCAT('===',f_char1,'===')
12026
WHERE f_charbig = 'was updated';
12027
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12028
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12029
FROM t0_template source_tab
12030
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12032
# check replace success: 1
12034
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
12036
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
12037
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
12038
UPDATE t1 SET f_int2 = f_int1,
12039
f_char1 = CAST(f_int1 AS CHAR),
12040
f_char2 = CAST(f_int1 AS CHAR),
12041
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
12042
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
12044
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12045
SELECT f_int1, f_int1, '', '', 'was inserted'
12046
FROM t0_template source_tab
12047
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12049
# check transactions-1 success: 1
12052
# check transactions-2 success: 1
12055
# check transactions-3 success: 1
12056
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12060
# check transactions-4 success: 1
12061
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12062
SELECT f_int1, f_int1, '', '', 'was inserted'
12063
FROM t0_template source_tab
12064
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12066
# check transactions-5 success: 1
12069
Warning 1196 Some non-transactional changed tables couldn't be rolled back
12071
# check transactions-6 success: 1
12072
# INFO: Storage engine used for t1 seems to be not transactional.
12075
# check transactions-7 success: 1
12076
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12078
SET @@session.sql_mode = 'traditional';
12079
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12080
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12081
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12082
'', '', 'was inserted' FROM t0_template
12083
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12084
ERROR 22012: Division by 0
12087
# check transactions-8 success: 1
12088
# INFO: Storage engine used for t1 seems to be unable to revert
12089
# changes made by the failing statement.
12090
SET @@session.sql_mode = '';
12092
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12094
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12096
# check special-1 success: 1
12097
UPDATE t1 SET f_charbig = '';
12099
# check special-2 success: 1
12100
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12101
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12102
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12104
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12105
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12106
'just inserted' FROM t0_template
12107
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12108
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12110
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12111
f_charbig = 'updated by trigger'
12112
WHERE f_int1 = new.f_int1;
12114
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12115
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12116
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12118
# check trigger-1 success: 1
12119
DROP TRIGGER trg_1;
12120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12121
f_int2 = CAST(f_char1 AS SIGNED INT),
12122
f_charbig = 'just inserted'
12123
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12125
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12127
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12128
'just inserted' FROM t0_template
12129
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12130
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12132
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12133
f_charbig = 'updated by trigger'
12134
WHERE f_int1 = new.f_int1;
12136
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12137
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12138
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12140
# check trigger-2 success: 1
12141
DROP TRIGGER trg_1;
12142
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12143
f_int2 = CAST(f_char1 AS SIGNED INT),
12144
f_charbig = 'just inserted'
12145
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12147
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12148
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12149
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12150
'just inserted' FROM t0_template
12151
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12152
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12154
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12155
f_charbig = 'updated by trigger'
12156
WHERE f_int1 = new.f_int1;
12158
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12159
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12161
# check trigger-3 success: 1
12162
DROP TRIGGER trg_1;
12163
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12164
f_int2 = CAST(f_char1 AS SIGNED INT),
12165
f_charbig = 'just inserted'
12166
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12168
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12169
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12170
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12171
'just inserted' FROM t0_template
12172
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12173
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12175
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12176
f_charbig = 'updated by trigger'
12177
WHERE f_int1 = - old.f_int1;
12179
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12180
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12182
# check trigger-4 success: 1
12183
DROP TRIGGER trg_1;
12184
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12185
f_int2 = CAST(f_char1 AS SIGNED INT),
12186
f_charbig = 'just inserted'
12187
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12189
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12190
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12191
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12192
'just inserted' FROM t0_template
12193
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12194
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12196
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12197
f_charbig = 'updated by trigger'
12198
WHERE f_int1 = new.f_int1;
12200
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12201
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12203
# check trigger-5 success: 1
12204
DROP TRIGGER trg_1;
12205
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12206
f_int2 = CAST(f_char1 AS SIGNED INT),
12207
f_charbig = 'just inserted'
12208
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12210
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12211
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12212
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12213
'just inserted' FROM t0_template
12214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12215
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12217
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12218
f_charbig = 'updated by trigger'
12219
WHERE f_int1 = - old.f_int1;
12221
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12222
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12224
# check trigger-6 success: 1
12225
DROP TRIGGER trg_1;
12226
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12227
f_int2 = CAST(f_char1 AS SIGNED INT),
12228
f_charbig = 'just inserted'
12229
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12231
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12232
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12233
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12234
'just inserted' FROM t0_template
12235
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12236
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12238
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12239
f_charbig = 'updated by trigger'
12240
WHERE f_int1 = - old.f_int1;
12243
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12245
# check trigger-7 success: 1
12246
DROP TRIGGER trg_1;
12247
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12248
f_int2 = CAST(f_char1 AS SIGNED INT),
12249
f_charbig = 'just inserted'
12250
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12252
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12254
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12255
'just inserted' FROM t0_template
12256
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12257
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12259
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12260
f_charbig = 'updated by trigger'
12261
WHERE f_int1 = - old.f_int1;
12264
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12266
# check trigger-8 success: 1
12267
DROP TRIGGER trg_1;
12268
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12269
f_int2 = CAST(f_char1 AS SIGNED INT),
12270
f_charbig = 'just inserted'
12271
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12273
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12275
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12276
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12278
SET new.f_int1 = old.f_int1 + @max_row,
12279
new.f_int2 = old.f_int2 - @max_row,
12280
new.f_charbig = '####updated per update trigger####';
12283
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12284
f_charbig = '####updated per update statement itself####';
12286
# check trigger-9 success: 1
12287
DROP TRIGGER trg_2;
12288
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12289
f_int2 = CAST(f_char1 AS SIGNED INT),
12290
f_charbig = CONCAT('===',f_char1,'===');
12291
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12293
SET new.f_int1 = new.f_int1 + @max_row,
12294
new.f_int2 = new.f_int2 - @max_row,
12295
new.f_charbig = '####updated per update trigger####';
12298
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12299
f_charbig = '####updated per update statement itself####';
12301
# check trigger-10 success: 1
12302
DROP TRIGGER trg_2;
12303
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12304
f_int2 = CAST(f_char1 AS SIGNED INT),
12305
f_charbig = CONCAT('===',f_char1,'===');
12306
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12308
SET new.f_int1 = @my_max1 + @counter,
12309
new.f_int2 = @my_min2 - @counter,
12310
new.f_charbig = '####updated per insert trigger####';
12311
SET @counter = @counter + 1;
12314
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12315
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12316
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12317
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12320
DROP TRIGGER trg_3;
12322
# check trigger-11 success: 1
12324
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12325
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12326
AND f_charbig = '####updated per insert trigger####';
12327
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12329
SET new.f_int1 = @my_max1 + @counter,
12330
new.f_int2 = @my_min2 - @counter,
12331
new.f_charbig = '####updated per insert trigger####';
12332
SET @counter = @counter + 1;
12335
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12336
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12337
SELECT CAST(f_int1 AS CHAR),
12338
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12339
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12341
DROP TRIGGER trg_3;
12343
# check trigger-12 success: 1
12345
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12346
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12347
AND f_charbig = '####updated per insert trigger####';
12349
Table Op Msg_type Msg_text
12350
test.t1 analyze note The storage engine for the table doesn't support analyze
12351
CHECK TABLE t1 EXTENDED;
12352
Table Op Msg_type Msg_text
12353
test.t1 check note The storage engine for the table doesn't support check
12354
CHECKSUM TABLE t1 EXTENDED;
12356
test.t1 <some_value>
12358
Table Op Msg_type Msg_text
12359
test.t1 optimize note The storage engine for the table doesn't support optimize
12360
# check layout success: 1
12361
REPAIR TABLE t1 EXTENDED;
12362
Table Op Msg_type Msg_text
12363
test.t1 repair note The storage engine for the table doesn't support repair
12364
# check layout success: 1
12367
# check TRUNCATE success: 1
12368
# check layout success: 1
12369
# End usability test (inc/partition_check.inc)
12376
f_charbig VARCHAR(1000)
12379
PARTITION BY LIST(ABS(MOD(f_int1,2)))
12380
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
12381
(PARTITION part1 VALUES IN (0),
12382
PARTITION part2 VALUES IN (1),
12383
PARTITION part3 VALUES IN (NULL));
12384
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12385
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12386
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12387
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int1,f_int2);
12388
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12389
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12390
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12391
# Start usability test (inc/partition_check.inc)
12393
SHOW CREATE TABLE t1;
12395
t1 CREATE TABLE `t1` (
12396
`f_int1` int(11) DEFAULT NULL,
12397
`f_int2` int(11) DEFAULT NULL,
12398
`f_char1` char(20) DEFAULT NULL,
12399
`f_char2` char(20) DEFAULT NULL,
12400
`f_charbig` varchar(1000) DEFAULT NULL,
12401
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
12402
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = MyISAM, PARTITION part2 VALUES IN (1) ENGINE = MyISAM, PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
12405
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYD
12406
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYI
12407
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYD
12408
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYI
12409
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYD
12410
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYI
12411
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYD
12412
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYI
12413
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYD
12414
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYI
12415
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYD
12416
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYI
12417
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYD
12418
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYI
12419
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYD
12420
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYI
12421
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYD
12422
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYI
12423
$MYSQLTEST_VARDIR/master-data/test/t1.frm
12424
$MYSQLTEST_VARDIR/master-data/test/t1.par
12426
# check prerequisites-1 success: 1
12427
# check COUNT(*) success: 1
12428
# check MIN/MAX(f_int1) success: 1
12429
# check MIN/MAX(f_int2) success: 1
12430
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12431
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12432
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12433
WHERE f_int1 IN (2,3);
12434
ERROR 23000: Can't write; duplicate key in table 't1'
12435
# check prerequisites-3 success: 1
12436
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12437
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12438
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12439
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12440
WHERE f_int1 IN (2,3);
12441
DELETE FROM t1 WHERE f_charbig = 'delete me';
12442
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12443
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12444
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12445
WHERE f_int1 IN (2,3);
12446
DELETE FROM t1 WHERE f_charbig = 'delete me';
12447
# check read via f_int1 success: 1
12448
# check read via f_int2 success: 1
12450
# check multiple-1 success: 1
12451
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12453
# check multiple-2 success: 1
12454
INSERT INTO t1 SELECT * FROM t0_template
12455
WHERE MOD(f_int1,3) = 0;
12457
# check multiple-3 success: 1
12458
UPDATE t1 SET f_int1 = f_int1 + @max_row
12459
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12460
AND @max_row_div2 + @max_row_div4;
12462
# check multiple-4 success: 1
12464
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12465
AND @max_row_div2 + @max_row_div4 + @max_row;
12467
# check multiple-5 success: 1
12468
SELECT COUNT(*) INTO @try_count FROM t0_template
12469
WHERE MOD(f_int1,3) = 0
12470
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12471
SELECT COUNT(*) INTO @clash_count
12472
FROM t1 INNER JOIN t0_template USING(f_int1)
12473
WHERE MOD(f_int1,3) = 0
12474
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12475
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12477
SET f_int1 = @cur_value , f_int2 = @cur_value,
12478
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12479
f_charbig = '#SINGLE#';
12481
# check single-1 success: 1
12482
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12484
SET f_int1 = @cur_value , f_int2 = @cur_value,
12485
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12486
f_charbig = '#SINGLE#';
12488
# check single-2 success: 1
12489
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12490
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12491
UPDATE t1 SET f_int1 = @cur_value2
12492
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12494
# check single-3 success: 1
12495
SET @cur_value1= -1;
12496
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12497
UPDATE t1 SET f_int1 = @cur_value1
12498
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12500
# check single-4 success: 1
12501
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12502
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12504
# check single-5 success: 1
12505
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12507
# check single-6 success: 1
12508
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12510
# check single-7 success: 1
12511
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12512
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12513
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12514
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12515
f_charbig = '#NULL#';
12517
SET f_int1 = NULL , f_int2 = -@max_row,
12518
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12519
f_charbig = '#NULL#';
12520
# check null success: 1
12522
# check null-1 success: 1
12523
UPDATE t1 SET f_int1 = -@max_row
12524
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12525
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12527
# check null-2 success: 1
12528
UPDATE t1 SET f_int1 = NULL
12529
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12530
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12532
# check null-3 success: 1
12534
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12535
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12537
# check null-4 success: 1
12539
WHERE f_int1 = 0 AND f_int2 = 0
12540
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12541
AND f_charbig = '#NULL#';
12542
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12543
SELECT f_int1, f_int1, '', '', 'was inserted'
12544
FROM t0_template source_tab
12545
WHERE MOD(f_int1,3) = 0
12546
AND f_int1 BETWEEN @max_row_div2 AND @max_row
12548
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12549
f_int2 = 2 * @max_row + source_tab.f_int1,
12550
f_charbig = 'was updated';
12552
# check unique-1-a success: 1
12554
# check unique-1-b success: 1
12555
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12556
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12557
f_int2 = CAST(f_char1 AS SIGNED INT),
12558
f_charbig = CONCAT('===',f_char1,'===')
12559
WHERE f_charbig = 'was updated';
12560
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12561
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12562
FROM t0_template source_tab
12563
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12565
# check replace success: 1
12567
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
12569
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
12570
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
12571
UPDATE t1 SET f_int2 = f_int1,
12572
f_char1 = CAST(f_int1 AS CHAR),
12573
f_char2 = CAST(f_int1 AS CHAR),
12574
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
12575
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
12577
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12578
SELECT f_int1, f_int1, '', '', 'was inserted'
12579
FROM t0_template source_tab
12580
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12582
# check transactions-1 success: 1
12585
# check transactions-2 success: 1
12588
# check transactions-3 success: 1
12589
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12593
# check transactions-4 success: 1
12594
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12595
SELECT f_int1, f_int1, '', '', 'was inserted'
12596
FROM t0_template source_tab
12597
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12599
# check transactions-5 success: 1
12602
Warning 1196 Some non-transactional changed tables couldn't be rolled back
12604
# check transactions-6 success: 1
12605
# INFO: Storage engine used for t1 seems to be not transactional.
12608
# check transactions-7 success: 1
12609
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12611
SET @@session.sql_mode = 'traditional';
12612
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12613
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12614
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12615
'', '', 'was inserted' FROM t0_template
12616
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12617
ERROR 22012: Division by 0
12620
# check transactions-8 success: 1
12621
# INFO: Storage engine used for t1 seems to be unable to revert
12622
# changes made by the failing statement.
12623
SET @@session.sql_mode = '';
12625
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12627
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12629
# check special-1 success: 1
12630
UPDATE t1 SET f_charbig = '';
12632
# check special-2 success: 1
12633
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12634
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12635
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12636
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12637
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12638
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12639
'just inserted' FROM t0_template
12640
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12641
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12643
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12644
f_charbig = 'updated by trigger'
12645
WHERE f_int1 = new.f_int1;
12647
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12648
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12649
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12651
# check trigger-1 success: 1
12652
DROP TRIGGER trg_1;
12653
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12654
f_int2 = CAST(f_char1 AS SIGNED INT),
12655
f_charbig = 'just inserted'
12656
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12658
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12659
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12660
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12661
'just inserted' FROM t0_template
12662
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12663
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12665
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12666
f_charbig = 'updated by trigger'
12667
WHERE f_int1 = new.f_int1;
12669
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12670
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12671
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12673
# check trigger-2 success: 1
12674
DROP TRIGGER trg_1;
12675
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12676
f_int2 = CAST(f_char1 AS SIGNED INT),
12677
f_charbig = 'just inserted'
12678
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12680
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12681
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12682
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12683
'just inserted' FROM t0_template
12684
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12685
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12687
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12688
f_charbig = 'updated by trigger'
12689
WHERE f_int1 = new.f_int1;
12691
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12692
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12694
# check trigger-3 success: 1
12695
DROP TRIGGER trg_1;
12696
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12697
f_int2 = CAST(f_char1 AS SIGNED INT),
12698
f_charbig = 'just inserted'
12699
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12701
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12702
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12703
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12704
'just inserted' FROM t0_template
12705
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12706
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12708
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12709
f_charbig = 'updated by trigger'
12710
WHERE f_int1 = - old.f_int1;
12712
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12713
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12715
# check trigger-4 success: 1
12716
DROP TRIGGER trg_1;
12717
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12718
f_int2 = CAST(f_char1 AS SIGNED INT),
12719
f_charbig = 'just inserted'
12720
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12722
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12723
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12724
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12725
'just inserted' FROM t0_template
12726
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12727
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12729
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12730
f_charbig = 'updated by trigger'
12731
WHERE f_int1 = new.f_int1;
12733
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12734
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12736
# check trigger-5 success: 1
12737
DROP TRIGGER trg_1;
12738
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12739
f_int2 = CAST(f_char1 AS SIGNED INT),
12740
f_charbig = 'just inserted'
12741
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12743
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12744
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12745
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12746
'just inserted' FROM t0_template
12747
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12748
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12750
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12751
f_charbig = 'updated by trigger'
12752
WHERE f_int1 = - old.f_int1;
12754
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12755
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12757
# check trigger-6 success: 1
12758
DROP TRIGGER trg_1;
12759
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12760
f_int2 = CAST(f_char1 AS SIGNED INT),
12761
f_charbig = 'just inserted'
12762
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12764
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12765
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12766
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12767
'just inserted' FROM t0_template
12768
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12769
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12771
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12772
f_charbig = 'updated by trigger'
12773
WHERE f_int1 = - old.f_int1;
12776
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12778
# check trigger-7 success: 1
12779
DROP TRIGGER trg_1;
12780
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12781
f_int2 = CAST(f_char1 AS SIGNED INT),
12782
f_charbig = 'just inserted'
12783
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12785
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12786
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12787
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12788
'just inserted' FROM t0_template
12789
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12790
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12792
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12793
f_charbig = 'updated by trigger'
12794
WHERE f_int1 = - old.f_int1;
12797
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12799
# check trigger-8 success: 1
12800
DROP TRIGGER trg_1;
12801
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12802
f_int2 = CAST(f_char1 AS SIGNED INT),
12803
f_charbig = 'just inserted'
12804
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12806
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12809
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12811
SET new.f_int1 = old.f_int1 + @max_row,
12812
new.f_int2 = old.f_int2 - @max_row,
12813
new.f_charbig = '####updated per update trigger####';
12816
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12817
f_charbig = '####updated per update statement itself####';
12819
# check trigger-9 success: 1
12820
DROP TRIGGER trg_2;
12821
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12822
f_int2 = CAST(f_char1 AS SIGNED INT),
12823
f_charbig = CONCAT('===',f_char1,'===');
12824
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12826
SET new.f_int1 = new.f_int1 + @max_row,
12827
new.f_int2 = new.f_int2 - @max_row,
12828
new.f_charbig = '####updated per update trigger####';
12831
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12832
f_charbig = '####updated per update statement itself####';
12834
# check trigger-10 success: 1
12835
DROP TRIGGER trg_2;
12836
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12837
f_int2 = CAST(f_char1 AS SIGNED INT),
12838
f_charbig = CONCAT('===',f_char1,'===');
12839
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12841
SET new.f_int1 = @my_max1 + @counter,
12842
new.f_int2 = @my_min2 - @counter,
12843
new.f_charbig = '####updated per insert trigger####';
12844
SET @counter = @counter + 1;
12847
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12848
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12849
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12850
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12851
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12853
DROP TRIGGER trg_3;
12855
# check trigger-11 success: 1
12857
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12858
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12859
AND f_charbig = '####updated per insert trigger####';
12860
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12862
SET new.f_int1 = @my_max1 + @counter,
12863
new.f_int2 = @my_min2 - @counter,
12864
new.f_charbig = '####updated per insert trigger####';
12865
SET @counter = @counter + 1;
12868
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12869
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12870
SELECT CAST(f_int1 AS CHAR),
12871
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12872
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12874
DROP TRIGGER trg_3;
12876
# check trigger-12 success: 1
12878
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12879
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12880
AND f_charbig = '####updated per insert trigger####';
12882
Table Op Msg_type Msg_text
12883
test.t1 analyze note The storage engine for the table doesn't support analyze
12884
CHECK TABLE t1 EXTENDED;
12885
Table Op Msg_type Msg_text
12886
test.t1 check note The storage engine for the table doesn't support check
12887
CHECKSUM TABLE t1 EXTENDED;
12889
test.t1 <some_value>
12891
Table Op Msg_type Msg_text
12892
test.t1 optimize note The storage engine for the table doesn't support optimize
12893
# check layout success: 1
12894
REPAIR TABLE t1 EXTENDED;
12895
Table Op Msg_type Msg_text
12896
test.t1 repair note The storage engine for the table doesn't support repair
12897
# check layout success: 1
12900
# check TRUNCATE success: 1
12901
# check layout success: 1
12902
# End usability test (inc/partition_check.inc)
12904
DROP TABLE IF EXISTS t1;
12910
f_charbig VARCHAR(1000)
12913
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
12914
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12915
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12916
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12917
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
12918
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12919
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12920
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12921
# Start usability test (inc/partition_check.inc)
12923
SHOW CREATE TABLE t1;
12925
t1 CREATE TABLE `t1` (
12926
`f_int1` int(11) DEFAULT NULL,
12927
`f_int2` int(11) DEFAULT NULL,
12928
`f_char1` char(20) DEFAULT NULL,
12929
`f_char2` char(20) DEFAULT NULL,
12930
`f_charbig` varchar(1000) DEFAULT NULL,
12931
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
12932
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
12935
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
12936
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
12937
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
12938
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
12939
$MYSQLTEST_VARDIR/master-data/test/t1.frm
12940
$MYSQLTEST_VARDIR/master-data/test/t1.par
12942
# check prerequisites-1 success: 1
12943
# check COUNT(*) success: 1
12944
# check MIN/MAX(f_int1) success: 1
12945
# check MIN/MAX(f_int2) success: 1
12946
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12947
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12948
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12949
WHERE f_int1 IN (2,3);
12950
ERROR 23000: Can't write; duplicate key in table 't1'
12951
# check prerequisites-3 success: 1
12952
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12953
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12954
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12955
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12956
WHERE f_int1 IN (2,3);
12957
DELETE FROM t1 WHERE f_charbig = 'delete me';
12958
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12959
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12960
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12961
WHERE f_int1 IN (2,3);
12962
DELETE FROM t1 WHERE f_charbig = 'delete me';
12963
# check read via f_int1 success: 1
12964
# check read via f_int2 success: 1
12966
# check multiple-1 success: 1
12967
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12969
# check multiple-2 success: 1
12970
INSERT INTO t1 SELECT * FROM t0_template
12971
WHERE MOD(f_int1,3) = 0;
12973
# check multiple-3 success: 1
12974
UPDATE t1 SET f_int1 = f_int1 + @max_row
12975
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12976
AND @max_row_div2 + @max_row_div4;
12978
# check multiple-4 success: 1
12980
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12981
AND @max_row_div2 + @max_row_div4 + @max_row;
12983
# check multiple-5 success: 1
12984
SELECT COUNT(*) INTO @try_count FROM t0_template
12985
WHERE MOD(f_int1,3) = 0
12986
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12987
SELECT COUNT(*) INTO @clash_count
12988
FROM t1 INNER JOIN t0_template USING(f_int1)
12989
WHERE MOD(f_int1,3) = 0
12990
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12991
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12993
SET f_int1 = @cur_value , f_int2 = @cur_value,
12994
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12995
f_charbig = '#SINGLE#';
12997
# check single-1 success: 1
12998
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13000
SET f_int1 = @cur_value , f_int2 = @cur_value,
13001
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13002
f_charbig = '#SINGLE#';
13004
# check single-2 success: 1
13005
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13006
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13007
UPDATE t1 SET f_int1 = @cur_value2
13008
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13010
# check single-3 success: 1
13011
SET @cur_value1= -1;
13012
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13013
UPDATE t1 SET f_int1 = @cur_value1
13014
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13016
# check single-4 success: 1
13017
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13018
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13020
# check single-5 success: 1
13021
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13023
# check single-6 success: 1
13024
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13026
# check single-7 success: 1
13027
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13028
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13029
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13030
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13031
f_charbig = '#NULL#';
13033
SET f_int1 = NULL , f_int2 = -@max_row,
13034
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13035
f_charbig = '#NULL#';
13036
# check null success: 1
13038
# check null-1 success: 1
13039
UPDATE t1 SET f_int1 = -@max_row
13040
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13041
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13043
# check null-2 success: 1
13044
UPDATE t1 SET f_int1 = NULL
13045
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13046
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13048
# check null-3 success: 1
13050
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13051
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13053
# check null-4 success: 1
13055
WHERE f_int1 = 0 AND f_int2 = 0
13056
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13057
AND f_charbig = '#NULL#';
13058
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13059
SELECT f_int1, f_int1, '', '', 'was inserted'
13060
FROM t0_template source_tab
13061
WHERE MOD(f_int1,3) = 0
13062
AND f_int1 BETWEEN @max_row_div2 AND @max_row
13064
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
13065
f_int2 = 2 * @max_row + source_tab.f_int1,
13066
f_charbig = 'was updated';
13068
# check unique-1-a success: 1
13070
# check unique-1-b success: 1
13071
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13072
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13073
f_int2 = CAST(f_char1 AS SIGNED INT),
13074
f_charbig = CONCAT('===',f_char1,'===')
13075
WHERE f_charbig = 'was updated';
13076
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13077
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
13078
FROM t0_template source_tab
13079
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13081
# check replace success: 1
13083
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
13085
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
13086
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
13087
UPDATE t1 SET f_int2 = f_int1,
13088
f_char1 = CAST(f_int1 AS CHAR),
13089
f_char2 = CAST(f_int1 AS CHAR),
13090
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
13091
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
13093
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13094
SELECT f_int1, f_int1, '', '', 'was inserted'
13095
FROM t0_template source_tab
13096
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13098
# check transactions-1 success: 1
13101
# check transactions-2 success: 1
13104
# check transactions-3 success: 1
13105
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13109
# check transactions-4 success: 1
13110
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13111
SELECT f_int1, f_int1, '', '', 'was inserted'
13112
FROM t0_template source_tab
13113
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13115
# check transactions-5 success: 1
13118
Warning 1196 Some non-transactional changed tables couldn't be rolled back
13120
# check transactions-6 success: 1
13121
# INFO: Storage engine used for t1 seems to be not transactional.
13124
# check transactions-7 success: 1
13125
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13127
SET @@session.sql_mode = 'traditional';
13128
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13129
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13130
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13131
'', '', 'was inserted' FROM t0_template
13132
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13133
ERROR 22012: Division by 0
13136
# check transactions-8 success: 1
13137
# INFO: Storage engine used for t1 seems to be unable to revert
13138
# changes made by the failing statement.
13139
SET @@session.sql_mode = '';
13141
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13143
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13145
# check special-1 success: 1
13146
UPDATE t1 SET f_charbig = '';
13148
# check special-2 success: 1
13149
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13150
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13151
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13152
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13153
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13154
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13155
'just inserted' FROM t0_template
13156
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13157
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13159
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13160
f_charbig = 'updated by trigger'
13161
WHERE f_int1 = new.f_int1;
13163
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13164
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13165
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13167
# check trigger-1 success: 1
13168
DROP TRIGGER trg_1;
13169
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13170
f_int2 = CAST(f_char1 AS SIGNED INT),
13171
f_charbig = 'just inserted'
13172
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13174
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13175
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13176
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13177
'just inserted' FROM t0_template
13178
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13179
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13181
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13182
f_charbig = 'updated by trigger'
13183
WHERE f_int1 = new.f_int1;
13185
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13186
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13187
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13189
# check trigger-2 success: 1
13190
DROP TRIGGER trg_1;
13191
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13192
f_int2 = CAST(f_char1 AS SIGNED INT),
13193
f_charbig = 'just inserted'
13194
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13196
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13197
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13198
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13199
'just inserted' FROM t0_template
13200
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13201
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13203
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13204
f_charbig = 'updated by trigger'
13205
WHERE f_int1 = new.f_int1;
13207
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13208
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13210
# check trigger-3 success: 1
13211
DROP TRIGGER trg_1;
13212
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13213
f_int2 = CAST(f_char1 AS SIGNED INT),
13214
f_charbig = 'just inserted'
13215
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13217
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13218
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13219
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13220
'just inserted' FROM t0_template
13221
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13222
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13224
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13225
f_charbig = 'updated by trigger'
13226
WHERE f_int1 = - old.f_int1;
13228
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13229
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13231
# check trigger-4 success: 1
13232
DROP TRIGGER trg_1;
13233
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13234
f_int2 = CAST(f_char1 AS SIGNED INT),
13235
f_charbig = 'just inserted'
13236
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13238
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13239
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13240
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13241
'just inserted' FROM t0_template
13242
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13243
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13245
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13246
f_charbig = 'updated by trigger'
13247
WHERE f_int1 = new.f_int1;
13249
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13250
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13252
# check trigger-5 success: 1
13253
DROP TRIGGER trg_1;
13254
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13255
f_int2 = CAST(f_char1 AS SIGNED INT),
13256
f_charbig = 'just inserted'
13257
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13259
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13260
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13261
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13262
'just inserted' FROM t0_template
13263
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13264
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13266
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13267
f_charbig = 'updated by trigger'
13268
WHERE f_int1 = - old.f_int1;
13270
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13271
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13273
# check trigger-6 success: 1
13274
DROP TRIGGER trg_1;
13275
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13276
f_int2 = CAST(f_char1 AS SIGNED INT),
13277
f_charbig = 'just inserted'
13278
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13280
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13281
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13282
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13283
'just inserted' FROM t0_template
13284
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13285
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13287
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13288
f_charbig = 'updated by trigger'
13289
WHERE f_int1 = - old.f_int1;
13292
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13294
# check trigger-7 success: 1
13295
DROP TRIGGER trg_1;
13296
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13297
f_int2 = CAST(f_char1 AS SIGNED INT),
13298
f_charbig = 'just inserted'
13299
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13301
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13302
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13303
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13304
'just inserted' FROM t0_template
13305
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13306
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13308
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13309
f_charbig = 'updated by trigger'
13310
WHERE f_int1 = - old.f_int1;
13313
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13315
# check trigger-8 success: 1
13316
DROP TRIGGER trg_1;
13317
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13318
f_int2 = CAST(f_char1 AS SIGNED INT),
13319
f_charbig = 'just inserted'
13320
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13322
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13324
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13325
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13327
SET new.f_int1 = old.f_int1 + @max_row,
13328
new.f_int2 = old.f_int2 - @max_row,
13329
new.f_charbig = '####updated per update trigger####';
13332
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13333
f_charbig = '####updated per update statement itself####';
13335
# check trigger-9 success: 1
13336
DROP TRIGGER trg_2;
13337
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13338
f_int2 = CAST(f_char1 AS SIGNED INT),
13339
f_charbig = CONCAT('===',f_char1,'===');
13340
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13342
SET new.f_int1 = new.f_int1 + @max_row,
13343
new.f_int2 = new.f_int2 - @max_row,
13344
new.f_charbig = '####updated per update trigger####';
13347
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13348
f_charbig = '####updated per update statement itself####';
13350
# check trigger-10 success: 1
13351
DROP TRIGGER trg_2;
13352
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13353
f_int2 = CAST(f_char1 AS SIGNED INT),
13354
f_charbig = CONCAT('===',f_char1,'===');
13355
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13357
SET new.f_int1 = @my_max1 + @counter,
13358
new.f_int2 = @my_min2 - @counter,
13359
new.f_charbig = '####updated per insert trigger####';
13360
SET @counter = @counter + 1;
13363
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13364
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13365
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13366
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13367
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13369
DROP TRIGGER trg_3;
13371
# check trigger-11 success: 1
13373
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13374
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13375
AND f_charbig = '####updated per insert trigger####';
13376
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13378
SET new.f_int1 = @my_max1 + @counter,
13379
new.f_int2 = @my_min2 - @counter,
13380
new.f_charbig = '####updated per insert trigger####';
13381
SET @counter = @counter + 1;
13384
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13385
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13386
SELECT CAST(f_int1 AS CHAR),
13387
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13388
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13390
DROP TRIGGER trg_3;
13392
# check trigger-12 success: 1
13394
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13395
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13396
AND f_charbig = '####updated per insert trigger####';
13398
Table Op Msg_type Msg_text
13399
test.t1 analyze note The storage engine for the table doesn't support analyze
13400
CHECK TABLE t1 EXTENDED;
13401
Table Op Msg_type Msg_text
13402
test.t1 check note The storage engine for the table doesn't support check
13403
CHECKSUM TABLE t1 EXTENDED;
13405
test.t1 <some_value>
13407
Table Op Msg_type Msg_text
13408
test.t1 optimize note The storage engine for the table doesn't support optimize
13409
# check layout success: 1
13410
REPAIR TABLE t1 EXTENDED;
13411
Table Op Msg_type Msg_text
13412
test.t1 repair note The storage engine for the table doesn't support repair
13413
# check layout success: 1
13416
# check TRUNCATE success: 1
13417
# check layout success: 1
13418
# End usability test (inc/partition_check.inc)
13425
f_charbig VARCHAR(1000)
13428
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
13429
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13430
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13431
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13432
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
13433
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13434
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13435
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13436
# Start usability test (inc/partition_check.inc)
13438
SHOW CREATE TABLE t1;
13440
t1 CREATE TABLE `t1` (
13441
`f_int1` int(11) DEFAULT NULL,
13442
`f_int2` int(11) DEFAULT NULL,
13443
`f_char1` char(20) DEFAULT NULL,
13444
`f_char2` char(20) DEFAULT NULL,
13445
`f_charbig` varchar(1000) DEFAULT NULL,
13446
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
13447
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
13450
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
13451
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
13452
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
13453
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
13454
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYD
13455
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYI
13456
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYD
13457
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYI
13458
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYD
13459
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYI
13460
$MYSQLTEST_VARDIR/master-data/test/t1.frm
13461
$MYSQLTEST_VARDIR/master-data/test/t1.par
13463
# check prerequisites-1 success: 1
13464
# check COUNT(*) success: 1
13465
# check MIN/MAX(f_int1) success: 1
13466
# check MIN/MAX(f_int2) success: 1
13467
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13468
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13469
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13470
WHERE f_int1 IN (2,3);
13471
ERROR 23000: Can't write; duplicate key in table 't1'
13472
# check prerequisites-3 success: 1
13473
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
13474
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13475
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13476
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13477
WHERE f_int1 IN (2,3);
13478
DELETE FROM t1 WHERE f_charbig = 'delete me';
13479
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13480
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13481
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13482
WHERE f_int1 IN (2,3);
13483
DELETE FROM t1 WHERE f_charbig = 'delete me';
13484
# check read via f_int1 success: 1
13485
# check read via f_int2 success: 1
13487
# check multiple-1 success: 1
13488
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13490
# check multiple-2 success: 1
13491
INSERT INTO t1 SELECT * FROM t0_template
13492
WHERE MOD(f_int1,3) = 0;
13494
# check multiple-3 success: 1
13495
UPDATE t1 SET f_int1 = f_int1 + @max_row
13496
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13497
AND @max_row_div2 + @max_row_div4;
13499
# check multiple-4 success: 1
13501
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13502
AND @max_row_div2 + @max_row_div4 + @max_row;
13504
# check multiple-5 success: 1
13505
SELECT COUNT(*) INTO @try_count FROM t0_template
13506
WHERE MOD(f_int1,3) = 0
13507
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13508
SELECT COUNT(*) INTO @clash_count
13509
FROM t1 INNER JOIN t0_template USING(f_int1)
13510
WHERE MOD(f_int1,3) = 0
13511
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13512
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13514
SET f_int1 = @cur_value , f_int2 = @cur_value,
13515
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13516
f_charbig = '#SINGLE#';
13518
# check single-1 success: 1
13519
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13521
SET f_int1 = @cur_value , f_int2 = @cur_value,
13522
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13523
f_charbig = '#SINGLE#';
13525
# check single-2 success: 1
13526
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13527
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13528
UPDATE t1 SET f_int1 = @cur_value2
13529
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13531
# check single-3 success: 1
13532
SET @cur_value1= -1;
13533
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13534
UPDATE t1 SET f_int1 = @cur_value1
13535
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13537
# check single-4 success: 1
13538
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13539
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13541
# check single-5 success: 1
13542
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13544
# check single-6 success: 1
13545
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13547
# check single-7 success: 1
13548
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13549
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13550
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13551
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13552
f_charbig = '#NULL#';
13554
SET f_int1 = NULL , f_int2 = -@max_row,
13555
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13556
f_charbig = '#NULL#';
13557
# check null success: 1
13559
# check null-1 success: 1
13560
UPDATE t1 SET f_int1 = -@max_row
13561
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13562
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13564
# check null-2 success: 1
13565
UPDATE t1 SET f_int1 = NULL
13566
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13567
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13569
# check null-3 success: 1
13571
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13572
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13574
# check null-4 success: 1
13576
WHERE f_int1 = 0 AND f_int2 = 0
13577
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13578
AND f_charbig = '#NULL#';
13579
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13580
SELECT f_int1, f_int1, '', '', 'was inserted'
13581
FROM t0_template source_tab
13582
WHERE MOD(f_int1,3) = 0
13583
AND f_int1 BETWEEN @max_row_div2 AND @max_row
13585
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
13586
f_int2 = 2 * @max_row + source_tab.f_int1,
13587
f_charbig = 'was updated';
13589
# check unique-1-a success: 1
13591
# check unique-1-b success: 1
13592
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13593
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13594
f_int2 = CAST(f_char1 AS SIGNED INT),
13595
f_charbig = CONCAT('===',f_char1,'===')
13596
WHERE f_charbig = 'was updated';
13597
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13598
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
13599
FROM t0_template source_tab
13600
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13602
# check replace success: 1
13604
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
13606
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
13607
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
13608
UPDATE t1 SET f_int2 = f_int1,
13609
f_char1 = CAST(f_int1 AS CHAR),
13610
f_char2 = CAST(f_int1 AS CHAR),
13611
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
13612
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
13614
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13615
SELECT f_int1, f_int1, '', '', 'was inserted'
13616
FROM t0_template source_tab
13617
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13619
# check transactions-1 success: 1
13622
# check transactions-2 success: 1
13625
# check transactions-3 success: 1
13626
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13630
# check transactions-4 success: 1
13631
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13632
SELECT f_int1, f_int1, '', '', 'was inserted'
13633
FROM t0_template source_tab
13634
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13636
# check transactions-5 success: 1
13639
Warning 1196 Some non-transactional changed tables couldn't be rolled back
13641
# check transactions-6 success: 1
13642
# INFO: Storage engine used for t1 seems to be not transactional.
13645
# check transactions-7 success: 1
13646
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13648
SET @@session.sql_mode = 'traditional';
13649
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13650
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13651
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13652
'', '', 'was inserted' FROM t0_template
13653
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13654
ERROR 22012: Division by 0
13657
# check transactions-8 success: 1
13658
# INFO: Storage engine used for t1 seems to be unable to revert
13659
# changes made by the failing statement.
13660
SET @@session.sql_mode = '';
13662
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13664
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13666
# check special-1 success: 1
13667
UPDATE t1 SET f_charbig = '';
13669
# check special-2 success: 1
13670
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13671
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13672
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13674
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13675
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13676
'just inserted' FROM t0_template
13677
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13678
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13680
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13681
f_charbig = 'updated by trigger'
13682
WHERE f_int1 = new.f_int1;
13684
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13685
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13686
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13688
# check trigger-1 success: 1
13689
DROP TRIGGER trg_1;
13690
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13691
f_int2 = CAST(f_char1 AS SIGNED INT),
13692
f_charbig = 'just inserted'
13693
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13695
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13696
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13697
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13698
'just inserted' FROM t0_template
13699
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13700
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13702
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13703
f_charbig = 'updated by trigger'
13704
WHERE f_int1 = new.f_int1;
13706
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13707
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13708
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13710
# check trigger-2 success: 1
13711
DROP TRIGGER trg_1;
13712
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13713
f_int2 = CAST(f_char1 AS SIGNED INT),
13714
f_charbig = 'just inserted'
13715
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13717
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13718
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13719
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13720
'just inserted' FROM t0_template
13721
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13722
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13724
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13725
f_charbig = 'updated by trigger'
13726
WHERE f_int1 = new.f_int1;
13728
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13729
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13731
# check trigger-3 success: 1
13732
DROP TRIGGER trg_1;
13733
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13734
f_int2 = CAST(f_char1 AS SIGNED INT),
13735
f_charbig = 'just inserted'
13736
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13738
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13739
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13740
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13741
'just inserted' FROM t0_template
13742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13743
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13745
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13746
f_charbig = 'updated by trigger'
13747
WHERE f_int1 = - old.f_int1;
13749
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13750
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13752
# check trigger-4 success: 1
13753
DROP TRIGGER trg_1;
13754
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13755
f_int2 = CAST(f_char1 AS SIGNED INT),
13756
f_charbig = 'just inserted'
13757
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13759
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13760
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13761
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13762
'just inserted' FROM t0_template
13763
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13764
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13766
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13767
f_charbig = 'updated by trigger'
13768
WHERE f_int1 = new.f_int1;
13770
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13771
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13773
# check trigger-5 success: 1
13774
DROP TRIGGER trg_1;
13775
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13776
f_int2 = CAST(f_char1 AS SIGNED INT),
13777
f_charbig = 'just inserted'
13778
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13780
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13781
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13782
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13783
'just inserted' FROM t0_template
13784
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13785
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13787
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13788
f_charbig = 'updated by trigger'
13789
WHERE f_int1 = - old.f_int1;
13791
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13792
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13794
# check trigger-6 success: 1
13795
DROP TRIGGER trg_1;
13796
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13797
f_int2 = CAST(f_char1 AS SIGNED INT),
13798
f_charbig = 'just inserted'
13799
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13801
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13802
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13803
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13804
'just inserted' FROM t0_template
13805
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13806
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13808
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13809
f_charbig = 'updated by trigger'
13810
WHERE f_int1 = - old.f_int1;
13813
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13815
# check trigger-7 success: 1
13816
DROP TRIGGER trg_1;
13817
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13818
f_int2 = CAST(f_char1 AS SIGNED INT),
13819
f_charbig = 'just inserted'
13820
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13822
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13823
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13824
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13825
'just inserted' FROM t0_template
13826
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13827
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13829
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13830
f_charbig = 'updated by trigger'
13831
WHERE f_int1 = - old.f_int1;
13834
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13836
# check trigger-8 success: 1
13837
DROP TRIGGER trg_1;
13838
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13839
f_int2 = CAST(f_char1 AS SIGNED INT),
13840
f_charbig = 'just inserted'
13841
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13843
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13845
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13846
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13848
SET new.f_int1 = old.f_int1 + @max_row,
13849
new.f_int2 = old.f_int2 - @max_row,
13850
new.f_charbig = '####updated per update trigger####';
13853
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13854
f_charbig = '####updated per update statement itself####';
13856
# check trigger-9 success: 1
13857
DROP TRIGGER trg_2;
13858
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13859
f_int2 = CAST(f_char1 AS SIGNED INT),
13860
f_charbig = CONCAT('===',f_char1,'===');
13861
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13863
SET new.f_int1 = new.f_int1 + @max_row,
13864
new.f_int2 = new.f_int2 - @max_row,
13865
new.f_charbig = '####updated per update trigger####';
13868
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13869
f_charbig = '####updated per update statement itself####';
13871
# check trigger-10 success: 1
13872
DROP TRIGGER trg_2;
13873
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13874
f_int2 = CAST(f_char1 AS SIGNED INT),
13875
f_charbig = CONCAT('===',f_char1,'===');
13876
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13878
SET new.f_int1 = @my_max1 + @counter,
13879
new.f_int2 = @my_min2 - @counter,
13880
new.f_charbig = '####updated per insert trigger####';
13881
SET @counter = @counter + 1;
13884
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13885
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13886
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13887
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13888
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13890
DROP TRIGGER trg_3;
13892
# check trigger-11 success: 1
13894
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13895
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13896
AND f_charbig = '####updated per insert trigger####';
13897
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13899
SET new.f_int1 = @my_max1 + @counter,
13900
new.f_int2 = @my_min2 - @counter,
13901
new.f_charbig = '####updated per insert trigger####';
13902
SET @counter = @counter + 1;
13905
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13906
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13907
SELECT CAST(f_int1 AS CHAR),
13908
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13909
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13911
DROP TRIGGER trg_3;
13913
# check trigger-12 success: 1
13915
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13916
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13917
AND f_charbig = '####updated per insert trigger####';
13919
Table Op Msg_type Msg_text
13920
test.t1 analyze note The storage engine for the table doesn't support analyze
13921
CHECK TABLE t1 EXTENDED;
13922
Table Op Msg_type Msg_text
13923
test.t1 check note The storage engine for the table doesn't support check
13924
CHECKSUM TABLE t1 EXTENDED;
13926
test.t1 <some_value>
13928
Table Op Msg_type Msg_text
13929
test.t1 optimize note The storage engine for the table doesn't support optimize
13930
# check layout success: 1
13931
REPAIR TABLE t1 EXTENDED;
13932
Table Op Msg_type Msg_text
13933
test.t1 repair note The storage engine for the table doesn't support repair
13934
# check layout success: 1
13937
# check TRUNCATE success: 1
13938
# check layout success: 1
13939
# End usability test (inc/partition_check.inc)
13946
f_charbig VARCHAR(1000)
13949
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
13950
(PARTITION part_3 VALUES IN (-3),
13951
PARTITION part_2 VALUES IN (-2),
13952
PARTITION part_1 VALUES IN (-1),
13953
PARTITION part_N VALUES IN (NULL),
13954
PARTITION part0 VALUES IN (0),
13955
PARTITION part1 VALUES IN (1),
13956
PARTITION part2 VALUES IN (2),
13957
PARTITION part3 VALUES IN (3));
13958
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13959
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13960
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13961
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
13962
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13963
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13964
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13965
# Start usability test (inc/partition_check.inc)
13967
SHOW CREATE TABLE t1;
13969
t1 CREATE TABLE `t1` (
13970
`f_int1` int(11) DEFAULT NULL,
13971
`f_int2` int(11) DEFAULT NULL,
13972
`f_char1` char(20) DEFAULT NULL,
13973
`f_char2` char(20) DEFAULT NULL,
13974
`f_charbig` varchar(1000) DEFAULT NULL,
13975
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
13976
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,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) */
13979
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD
13980
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI
13981
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD
13982
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI
13983
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD
13984
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI
13985
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD
13986
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI
13987
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD
13988
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI
13989
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD
13990
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI
13991
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD
13992
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI
13993
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD
13994
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI
13995
$MYSQLTEST_VARDIR/master-data/test/t1.frm
13996
$MYSQLTEST_VARDIR/master-data/test/t1.par
13998
# check prerequisites-1 success: 1
13999
# check COUNT(*) success: 1
14000
# check MIN/MAX(f_int1) success: 1
14001
# check MIN/MAX(f_int2) success: 1
14002
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14003
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14004
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14005
WHERE f_int1 IN (2,3);
14006
ERROR 23000: Can't write; duplicate key in table 't1'
14007
# check prerequisites-3 success: 1
14008
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
14009
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14010
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14011
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14012
WHERE f_int1 IN (2,3);
14013
DELETE FROM t1 WHERE f_charbig = 'delete me';
14014
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14015
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14016
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14017
WHERE f_int1 IN (2,3);
14018
DELETE FROM t1 WHERE f_charbig = 'delete me';
14019
# check read via f_int1 success: 1
14020
# check read via f_int2 success: 1
14022
# check multiple-1 success: 1
14023
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14025
# check multiple-2 success: 1
14026
INSERT INTO t1 SELECT * FROM t0_template
14027
WHERE MOD(f_int1,3) = 0;
14029
# check multiple-3 success: 1
14030
UPDATE t1 SET f_int1 = f_int1 + @max_row
14031
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14032
AND @max_row_div2 + @max_row_div4;
14034
# check multiple-4 success: 1
14036
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14037
AND @max_row_div2 + @max_row_div4 + @max_row;
14039
# check multiple-5 success: 1
14040
SELECT COUNT(*) INTO @try_count FROM t0_template
14041
WHERE MOD(f_int1,3) = 0
14042
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14043
SELECT COUNT(*) INTO @clash_count
14044
FROM t1 INNER JOIN t0_template USING(f_int1)
14045
WHERE MOD(f_int1,3) = 0
14046
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14047
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14049
SET f_int1 = @cur_value , f_int2 = @cur_value,
14050
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14051
f_charbig = '#SINGLE#';
14053
# check single-1 success: 1
14054
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14056
SET f_int1 = @cur_value , f_int2 = @cur_value,
14057
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14058
f_charbig = '#SINGLE#';
14060
# check single-2 success: 1
14061
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14062
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14063
UPDATE t1 SET f_int1 = @cur_value2
14064
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14066
# check single-3 success: 1
14067
SET @cur_value1= -1;
14068
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14069
UPDATE t1 SET f_int1 = @cur_value1
14070
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14072
# check single-4 success: 1
14073
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14074
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14076
# check single-5 success: 1
14077
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14079
# check single-6 success: 1
14080
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14082
# check single-7 success: 1
14083
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14084
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14085
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14086
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14087
f_charbig = '#NULL#';
14089
SET f_int1 = NULL , f_int2 = -@max_row,
14090
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14091
f_charbig = '#NULL#';
14092
# check null success: 1
14094
# check null-1 success: 1
14095
UPDATE t1 SET f_int1 = -@max_row
14096
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14097
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14099
# check null-2 success: 1
14100
UPDATE t1 SET f_int1 = NULL
14101
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14102
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14104
# check null-3 success: 1
14106
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14107
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14109
# check null-4 success: 1
14111
WHERE f_int1 = 0 AND f_int2 = 0
14112
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14113
AND f_charbig = '#NULL#';
14114
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14115
SELECT f_int1, f_int1, '', '', 'was inserted'
14116
FROM t0_template source_tab
14117
WHERE MOD(f_int1,3) = 0
14118
AND f_int1 BETWEEN @max_row_div2 AND @max_row
14120
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
14121
f_int2 = 2 * @max_row + source_tab.f_int1,
14122
f_charbig = 'was updated';
14124
# check unique-1-a success: 1
14126
# check unique-1-b success: 1
14127
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14128
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14129
f_int2 = CAST(f_char1 AS SIGNED INT),
14130
f_charbig = CONCAT('===',f_char1,'===')
14131
WHERE f_charbig = 'was updated';
14132
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14133
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
14134
FROM t0_template source_tab
14135
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14137
# check replace success: 1
14139
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
14141
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
14142
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
14143
UPDATE t1 SET f_int2 = f_int1,
14144
f_char1 = CAST(f_int1 AS CHAR),
14145
f_char2 = CAST(f_int1 AS CHAR),
14146
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
14147
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
14149
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14150
SELECT f_int1, f_int1, '', '', 'was inserted'
14151
FROM t0_template source_tab
14152
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14154
# check transactions-1 success: 1
14157
# check transactions-2 success: 1
14160
# check transactions-3 success: 1
14161
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14165
# check transactions-4 success: 1
14166
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14167
SELECT f_int1, f_int1, '', '', 'was inserted'
14168
FROM t0_template source_tab
14169
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14171
# check transactions-5 success: 1
14174
Warning 1196 Some non-transactional changed tables couldn't be rolled back
14176
# check transactions-6 success: 1
14177
# INFO: Storage engine used for t1 seems to be not transactional.
14180
# check transactions-7 success: 1
14181
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14183
SET @@session.sql_mode = 'traditional';
14184
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14185
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14186
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14187
'', '', 'was inserted' FROM t0_template
14188
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14189
ERROR 22012: Division by 0
14192
# check transactions-8 success: 1
14193
# INFO: Storage engine used for t1 seems to be unable to revert
14194
# changes made by the failing statement.
14195
SET @@session.sql_mode = '';
14197
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14199
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14201
# check special-1 success: 1
14202
UPDATE t1 SET f_charbig = '';
14204
# check special-2 success: 1
14205
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14206
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14207
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14208
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14209
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14210
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14211
'just inserted' FROM t0_template
14212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14213
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14215
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14216
f_charbig = 'updated by trigger'
14217
WHERE f_int1 = new.f_int1;
14219
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14220
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14221
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14223
# check trigger-1 success: 1
14224
DROP TRIGGER trg_1;
14225
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14226
f_int2 = CAST(f_char1 AS SIGNED INT),
14227
f_charbig = 'just inserted'
14228
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14230
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14231
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14232
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14233
'just inserted' FROM t0_template
14234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14235
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14237
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14238
f_charbig = 'updated by trigger'
14239
WHERE f_int1 = new.f_int1;
14241
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14242
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14243
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14245
# check trigger-2 success: 1
14246
DROP TRIGGER trg_1;
14247
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14248
f_int2 = CAST(f_char1 AS SIGNED INT),
14249
f_charbig = 'just inserted'
14250
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14252
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14254
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14255
'just inserted' FROM t0_template
14256
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14257
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14259
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14260
f_charbig = 'updated by trigger'
14261
WHERE f_int1 = new.f_int1;
14263
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14264
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14266
# check trigger-3 success: 1
14267
DROP TRIGGER trg_1;
14268
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14269
f_int2 = CAST(f_char1 AS SIGNED INT),
14270
f_charbig = 'just inserted'
14271
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14273
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14274
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14275
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14276
'just inserted' FROM t0_template
14277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14278
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14280
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14281
f_charbig = 'updated by trigger'
14282
WHERE f_int1 = - old.f_int1;
14284
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14285
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14287
# check trigger-4 success: 1
14288
DROP TRIGGER trg_1;
14289
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14290
f_int2 = CAST(f_char1 AS SIGNED INT),
14291
f_charbig = 'just inserted'
14292
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14294
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14295
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14296
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14297
'just inserted' FROM t0_template
14298
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14299
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14301
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14302
f_charbig = 'updated by trigger'
14303
WHERE f_int1 = new.f_int1;
14305
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14306
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14308
# check trigger-5 success: 1
14309
DROP TRIGGER trg_1;
14310
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14311
f_int2 = CAST(f_char1 AS SIGNED INT),
14312
f_charbig = 'just inserted'
14313
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14315
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14316
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14317
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14318
'just inserted' FROM t0_template
14319
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14320
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14322
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14323
f_charbig = 'updated by trigger'
14324
WHERE f_int1 = - old.f_int1;
14326
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14327
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14329
# check trigger-6 success: 1
14330
DROP TRIGGER trg_1;
14331
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14332
f_int2 = CAST(f_char1 AS SIGNED INT),
14333
f_charbig = 'just inserted'
14334
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14336
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14337
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14338
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14339
'just inserted' FROM t0_template
14340
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14341
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14343
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14344
f_charbig = 'updated by trigger'
14345
WHERE f_int1 = - old.f_int1;
14348
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14350
# check trigger-7 success: 1
14351
DROP TRIGGER trg_1;
14352
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14353
f_int2 = CAST(f_char1 AS SIGNED INT),
14354
f_charbig = 'just inserted'
14355
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14357
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14358
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14359
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14360
'just inserted' FROM t0_template
14361
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14362
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14364
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14365
f_charbig = 'updated by trigger'
14366
WHERE f_int1 = - old.f_int1;
14369
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14371
# check trigger-8 success: 1
14372
DROP TRIGGER trg_1;
14373
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14374
f_int2 = CAST(f_char1 AS SIGNED INT),
14375
f_charbig = 'just inserted'
14376
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14378
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14381
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14383
SET new.f_int1 = old.f_int1 + @max_row,
14384
new.f_int2 = old.f_int2 - @max_row,
14385
new.f_charbig = '####updated per update trigger####';
14388
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14389
f_charbig = '####updated per update statement itself####';
14391
# check trigger-9 success: 1
14392
DROP TRIGGER trg_2;
14393
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14394
f_int2 = CAST(f_char1 AS SIGNED INT),
14395
f_charbig = CONCAT('===',f_char1,'===');
14396
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14398
SET new.f_int1 = new.f_int1 + @max_row,
14399
new.f_int2 = new.f_int2 - @max_row,
14400
new.f_charbig = '####updated per update trigger####';
14403
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14404
f_charbig = '####updated per update statement itself####';
14406
# check trigger-10 success: 1
14407
DROP TRIGGER trg_2;
14408
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14409
f_int2 = CAST(f_char1 AS SIGNED INT),
14410
f_charbig = CONCAT('===',f_char1,'===');
14411
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14413
SET new.f_int1 = @my_max1 + @counter,
14414
new.f_int2 = @my_min2 - @counter,
14415
new.f_charbig = '####updated per insert trigger####';
14416
SET @counter = @counter + 1;
14419
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14420
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14421
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14422
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14423
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14425
DROP TRIGGER trg_3;
14427
# check trigger-11 success: 1
14429
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14430
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14431
AND f_charbig = '####updated per insert trigger####';
14432
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14434
SET new.f_int1 = @my_max1 + @counter,
14435
new.f_int2 = @my_min2 - @counter,
14436
new.f_charbig = '####updated per insert trigger####';
14437
SET @counter = @counter + 1;
14440
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14441
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14442
SELECT CAST(f_int1 AS CHAR),
14443
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14444
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14446
DROP TRIGGER trg_3;
14448
# check trigger-12 success: 1
14450
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14451
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14452
AND f_charbig = '####updated per insert trigger####';
14454
Table Op Msg_type Msg_text
14455
test.t1 analyze note The storage engine for the table doesn't support analyze
14456
CHECK TABLE t1 EXTENDED;
14457
Table Op Msg_type Msg_text
14458
test.t1 check note The storage engine for the table doesn't support check
14459
CHECKSUM TABLE t1 EXTENDED;
14461
test.t1 <some_value>
14463
Table Op Msg_type Msg_text
14464
test.t1 optimize note The storage engine for the table doesn't support optimize
14465
# check layout success: 1
14466
REPAIR TABLE t1 EXTENDED;
14467
Table Op Msg_type Msg_text
14468
test.t1 repair note The storage engine for the table doesn't support repair
14469
# check layout success: 1
14472
# check TRUNCATE success: 1
14473
# check layout success: 1
14474
# End usability test (inc/partition_check.inc)
14481
f_charbig VARCHAR(1000)
14484
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
14485
(PARTITION parta VALUES LESS THAN (0),
14486
PARTITION partb VALUES LESS THAN (5),
14487
PARTITION partc VALUES LESS THAN (10),
14488
PARTITION partd VALUES LESS THAN (10 + 5),
14489
PARTITION parte VALUES LESS THAN (20),
14490
PARTITION partf VALUES LESS THAN (2147483646));
14491
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14492
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14493
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14494
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
14495
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14496
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14497
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14498
# Start usability test (inc/partition_check.inc)
14500
SHOW CREATE TABLE t1;
14502
t1 CREATE TABLE `t1` (
14503
`f_int1` int(11) DEFAULT NULL,
14504
`f_int2` int(11) DEFAULT NULL,
14505
`f_char1` char(20) DEFAULT NULL,
14506
`f_char2` char(20) DEFAULT NULL,
14507
`f_charbig` varchar(1000) DEFAULT NULL,
14508
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
14509
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 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 (15) ENGINE = MyISAM, PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
14512
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD
14513
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI
14514
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYD
14515
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYI
14516
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYD
14517
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYI
14518
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYD
14519
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYI
14520
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYD
14521
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYI
14522
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYD
14523
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYI
14524
$MYSQLTEST_VARDIR/master-data/test/t1.frm
14525
$MYSQLTEST_VARDIR/master-data/test/t1.par
14527
# check prerequisites-1 success: 1
14528
# check COUNT(*) success: 1
14529
# check MIN/MAX(f_int1) success: 1
14530
# check MIN/MAX(f_int2) success: 1
14531
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14532
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14533
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14534
WHERE f_int1 IN (2,3);
14535
ERROR 23000: Can't write; duplicate key in table 't1'
14536
# check prerequisites-3 success: 1
14537
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
14538
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14539
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14540
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14541
WHERE f_int1 IN (2,3);
14542
DELETE FROM t1 WHERE f_charbig = 'delete me';
14543
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14544
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14545
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14546
WHERE f_int1 IN (2,3);
14547
DELETE FROM t1 WHERE f_charbig = 'delete me';
14548
# check read via f_int1 success: 1
14549
# check read via f_int2 success: 1
14551
# check multiple-1 success: 1
14552
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14554
# check multiple-2 success: 1
14555
INSERT INTO t1 SELECT * FROM t0_template
14556
WHERE MOD(f_int1,3) = 0;
14558
# check multiple-3 success: 1
14559
UPDATE t1 SET f_int1 = f_int1 + @max_row
14560
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14561
AND @max_row_div2 + @max_row_div4;
14563
# check multiple-4 success: 1
14565
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14566
AND @max_row_div2 + @max_row_div4 + @max_row;
14568
# check multiple-5 success: 1
14569
SELECT COUNT(*) INTO @try_count FROM t0_template
14570
WHERE MOD(f_int1,3) = 0
14571
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14572
SELECT COUNT(*) INTO @clash_count
14573
FROM t1 INNER JOIN t0_template USING(f_int1)
14574
WHERE MOD(f_int1,3) = 0
14575
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14576
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14578
SET f_int1 = @cur_value , f_int2 = @cur_value,
14579
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14580
f_charbig = '#SINGLE#';
14582
# check single-1 success: 1
14583
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14585
SET f_int1 = @cur_value , f_int2 = @cur_value,
14586
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14587
f_charbig = '#SINGLE#';
14589
# check single-2 success: 1
14590
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14591
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14592
UPDATE t1 SET f_int1 = @cur_value2
14593
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14595
# check single-3 success: 1
14596
SET @cur_value1= -1;
14597
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14598
UPDATE t1 SET f_int1 = @cur_value1
14599
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14601
# check single-4 success: 1
14602
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14603
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14605
# check single-5 success: 1
14606
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14608
# check single-6 success: 1
14609
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14610
ERROR HY000: Table has no partition for value 2147483647
14611
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14612
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14613
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14614
f_charbig = '#NULL#';
14616
SET f_int1 = NULL , f_int2 = -@max_row,
14617
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14618
f_charbig = '#NULL#';
14619
# check null success: 1
14621
# check null-1 success: 1
14622
UPDATE t1 SET f_int1 = -@max_row
14623
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14624
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14626
# check null-2 success: 1
14627
UPDATE t1 SET f_int1 = NULL
14628
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14629
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14631
# check null-3 success: 1
14633
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14634
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14636
# check null-4 success: 1
14638
WHERE f_int1 = 0 AND f_int2 = 0
14639
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14640
AND f_charbig = '#NULL#';
14641
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14642
SELECT f_int1, f_int1, '', '', 'was inserted'
14643
FROM t0_template source_tab
14644
WHERE MOD(f_int1,3) = 0
14645
AND f_int1 BETWEEN @max_row_div2 AND @max_row
14647
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
14648
f_int2 = 2 * @max_row + source_tab.f_int1,
14649
f_charbig = 'was updated';
14651
# check unique-1-a success: 1
14653
# check unique-1-b success: 1
14654
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14655
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14656
f_int2 = CAST(f_char1 AS SIGNED INT),
14657
f_charbig = CONCAT('===',f_char1,'===')
14658
WHERE f_charbig = 'was updated';
14659
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14660
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
14661
FROM t0_template source_tab
14662
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14664
# check replace success: 1
14666
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
14668
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
14669
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
14670
UPDATE t1 SET f_int2 = f_int1,
14671
f_char1 = CAST(f_int1 AS CHAR),
14672
f_char2 = CAST(f_int1 AS CHAR),
14673
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
14674
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
14676
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14677
SELECT f_int1, f_int1, '', '', 'was inserted'
14678
FROM t0_template source_tab
14679
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14681
# check transactions-1 success: 1
14684
# check transactions-2 success: 1
14687
# check transactions-3 success: 1
14688
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14692
# check transactions-4 success: 1
14693
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14694
SELECT f_int1, f_int1, '', '', 'was inserted'
14695
FROM t0_template source_tab
14696
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14698
# check transactions-5 success: 1
14701
Warning 1196 Some non-transactional changed tables couldn't be rolled back
14703
# check transactions-6 success: 1
14704
# INFO: Storage engine used for t1 seems to be not transactional.
14707
# check transactions-7 success: 1
14708
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14710
SET @@session.sql_mode = 'traditional';
14711
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14712
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14713
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14714
'', '', 'was inserted' FROM t0_template
14715
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14716
ERROR 22012: Division by 0
14719
# check transactions-8 success: 1
14720
# INFO: Storage engine used for t1 seems to be unable to revert
14721
# changes made by the failing statement.
14722
SET @@session.sql_mode = '';
14724
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14726
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14728
# check special-1 success: 1
14729
UPDATE t1 SET f_charbig = '';
14731
# check special-2 success: 1
14732
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14733
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14734
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14735
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14736
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14737
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14738
'just inserted' FROM t0_template
14739
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14740
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14742
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14743
f_charbig = 'updated by trigger'
14744
WHERE f_int1 = new.f_int1;
14746
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14747
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14748
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14750
# check trigger-1 success: 1
14751
DROP TRIGGER trg_1;
14752
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14753
f_int2 = CAST(f_char1 AS SIGNED INT),
14754
f_charbig = 'just inserted'
14755
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14757
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14758
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14759
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14760
'just inserted' FROM t0_template
14761
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14762
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14764
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14765
f_charbig = 'updated by trigger'
14766
WHERE f_int1 = new.f_int1;
14768
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14769
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14770
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14772
# check trigger-2 success: 1
14773
DROP TRIGGER trg_1;
14774
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14775
f_int2 = CAST(f_char1 AS SIGNED INT),
14776
f_charbig = 'just inserted'
14777
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14779
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14780
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14781
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14782
'just inserted' FROM t0_template
14783
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14784
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14786
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14787
f_charbig = 'updated by trigger'
14788
WHERE f_int1 = new.f_int1;
14790
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14791
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14793
# check trigger-3 success: 1
14794
DROP TRIGGER trg_1;
14795
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14796
f_int2 = CAST(f_char1 AS SIGNED INT),
14797
f_charbig = 'just inserted'
14798
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14800
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14801
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14802
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14803
'just inserted' FROM t0_template
14804
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14805
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14807
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14808
f_charbig = 'updated by trigger'
14809
WHERE f_int1 = - old.f_int1;
14811
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14812
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14814
# check trigger-4 success: 1
14815
DROP TRIGGER trg_1;
14816
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14817
f_int2 = CAST(f_char1 AS SIGNED INT),
14818
f_charbig = 'just inserted'
14819
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14821
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14822
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14823
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14824
'just inserted' FROM t0_template
14825
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14826
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14828
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14829
f_charbig = 'updated by trigger'
14830
WHERE f_int1 = new.f_int1;
14832
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14833
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14835
# check trigger-5 success: 1
14836
DROP TRIGGER trg_1;
14837
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14838
f_int2 = CAST(f_char1 AS SIGNED INT),
14839
f_charbig = 'just inserted'
14840
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14842
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14843
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14844
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14845
'just inserted' FROM t0_template
14846
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14847
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14849
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14850
f_charbig = 'updated by trigger'
14851
WHERE f_int1 = - old.f_int1;
14853
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14854
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14856
# check trigger-6 success: 1
14857
DROP TRIGGER trg_1;
14858
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14859
f_int2 = CAST(f_char1 AS SIGNED INT),
14860
f_charbig = 'just inserted'
14861
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14863
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14864
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14865
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14866
'just inserted' FROM t0_template
14867
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14868
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14870
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14871
f_charbig = 'updated by trigger'
14872
WHERE f_int1 = - old.f_int1;
14875
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14877
# check trigger-7 success: 1
14878
DROP TRIGGER trg_1;
14879
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14880
f_int2 = CAST(f_char1 AS SIGNED INT),
14881
f_charbig = 'just inserted'
14882
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14884
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14885
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14886
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14887
'just inserted' FROM t0_template
14888
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14889
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14891
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14892
f_charbig = 'updated by trigger'
14893
WHERE f_int1 = - old.f_int1;
14896
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14898
# check trigger-8 success: 1
14899
DROP TRIGGER trg_1;
14900
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14901
f_int2 = CAST(f_char1 AS SIGNED INT),
14902
f_charbig = 'just inserted'
14903
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14905
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14907
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14908
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14910
SET new.f_int1 = old.f_int1 + @max_row,
14911
new.f_int2 = old.f_int2 - @max_row,
14912
new.f_charbig = '####updated per update trigger####';
14915
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14916
f_charbig = '####updated per update statement itself####';
14918
# check trigger-9 success: 1
14919
DROP TRIGGER trg_2;
14920
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14921
f_int2 = CAST(f_char1 AS SIGNED INT),
14922
f_charbig = CONCAT('===',f_char1,'===');
14923
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14925
SET new.f_int1 = new.f_int1 + @max_row,
14926
new.f_int2 = new.f_int2 - @max_row,
14927
new.f_charbig = '####updated per update trigger####';
14930
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14931
f_charbig = '####updated per update statement itself####';
14933
# check trigger-10 success: 1
14934
DROP TRIGGER trg_2;
14935
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14936
f_int2 = CAST(f_char1 AS SIGNED INT),
14937
f_charbig = CONCAT('===',f_char1,'===');
14938
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14940
SET new.f_int1 = @my_max1 + @counter,
14941
new.f_int2 = @my_min2 - @counter,
14942
new.f_charbig = '####updated per insert trigger####';
14943
SET @counter = @counter + 1;
14946
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14947
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14948
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14949
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14950
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14952
DROP TRIGGER trg_3;
14954
# check trigger-11 success: 1
14956
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14957
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14958
AND f_charbig = '####updated per insert trigger####';
14959
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14961
SET new.f_int1 = @my_max1 + @counter,
14962
new.f_int2 = @my_min2 - @counter,
14963
new.f_charbig = '####updated per insert trigger####';
14964
SET @counter = @counter + 1;
14967
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14968
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14969
SELECT CAST(f_int1 AS CHAR),
14970
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14971
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14973
DROP TRIGGER trg_3;
14975
# check trigger-12 success: 1
14977
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14978
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14979
AND f_charbig = '####updated per insert trigger####';
14981
Table Op Msg_type Msg_text
14982
test.t1 analyze note The storage engine for the table doesn't support analyze
14983
CHECK TABLE t1 EXTENDED;
14984
Table Op Msg_type Msg_text
14985
test.t1 check note The storage engine for the table doesn't support check
14986
CHECKSUM TABLE t1 EXTENDED;
14988
test.t1 <some_value>
14990
Table Op Msg_type Msg_text
14991
test.t1 optimize note The storage engine for the table doesn't support optimize
14992
# check layout success: 1
14993
REPAIR TABLE t1 EXTENDED;
14994
Table Op Msg_type Msg_text
14995
test.t1 repair note The storage engine for the table doesn't support repair
14996
# check layout success: 1
14999
# check TRUNCATE success: 1
15000
# check layout success: 1
15001
# End usability test (inc/partition_check.inc)
15008
f_charbig VARCHAR(1000)
15011
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
15012
(PARTITION parta VALUES LESS THAN (0),
15013
PARTITION partb VALUES LESS THAN (5),
15014
PARTITION partc VALUES LESS THAN (10),
15015
PARTITION partd VALUES LESS THAN (2147483646));
15016
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15017
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15018
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15019
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
15020
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15021
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15022
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15023
# Start usability test (inc/partition_check.inc)
15025
SHOW CREATE TABLE t1;
15027
t1 CREATE TABLE `t1` (
15028
`f_int1` int(11) DEFAULT NULL,
15029
`f_int2` int(11) DEFAULT NULL,
15030
`f_char1` char(20) DEFAULT NULL,
15031
`f_char2` char(20) DEFAULT NULL,
15032
`f_charbig` varchar(1000) DEFAULT NULL,
15033
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
15034
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) 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) */
15037
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYD
15038
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYI
15039
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYD
15040
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYI
15041
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYD
15042
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYI
15043
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYD
15044
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYI
15045
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYD
15046
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYI
15047
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYD
15048
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYI
15049
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYD
15050
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYI
15051
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYD
15052
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYI
15053
$MYSQLTEST_VARDIR/master-data/test/t1.frm
15054
$MYSQLTEST_VARDIR/master-data/test/t1.par
15056
# check prerequisites-1 success: 1
15057
# check COUNT(*) success: 1
15058
# check MIN/MAX(f_int1) success: 1
15059
# check MIN/MAX(f_int2) success: 1
15060
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15061
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15062
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15063
WHERE f_int1 IN (2,3);
15064
ERROR 23000: Can't write; duplicate key in table 't1'
15065
# check prerequisites-3 success: 1
15066
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
15067
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15068
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15069
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15070
WHERE f_int1 IN (2,3);
15071
DELETE FROM t1 WHERE f_charbig = 'delete me';
15072
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15073
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15074
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15075
WHERE f_int1 IN (2,3);
15076
DELETE FROM t1 WHERE f_charbig = 'delete me';
15077
# check read via f_int1 success: 1
15078
# check read via f_int2 success: 1
15080
# check multiple-1 success: 1
15081
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15083
# check multiple-2 success: 1
15084
INSERT INTO t1 SELECT * FROM t0_template
15085
WHERE MOD(f_int1,3) = 0;
15087
# check multiple-3 success: 1
15088
UPDATE t1 SET f_int1 = f_int1 + @max_row
15089
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15090
AND @max_row_div2 + @max_row_div4;
15092
# check multiple-4 success: 1
15094
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15095
AND @max_row_div2 + @max_row_div4 + @max_row;
15097
# check multiple-5 success: 1
15098
SELECT COUNT(*) INTO @try_count FROM t0_template
15099
WHERE MOD(f_int1,3) = 0
15100
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15101
SELECT COUNT(*) INTO @clash_count
15102
FROM t1 INNER JOIN t0_template USING(f_int1)
15103
WHERE MOD(f_int1,3) = 0
15104
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15105
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15107
SET f_int1 = @cur_value , f_int2 = @cur_value,
15108
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15109
f_charbig = '#SINGLE#';
15111
# check single-1 success: 1
15112
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15114
SET f_int1 = @cur_value , f_int2 = @cur_value,
15115
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15116
f_charbig = '#SINGLE#';
15118
# check single-2 success: 1
15119
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15120
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15121
UPDATE t1 SET f_int1 = @cur_value2
15122
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15124
# check single-3 success: 1
15125
SET @cur_value1= -1;
15126
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15127
UPDATE t1 SET f_int1 = @cur_value1
15128
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15130
# check single-4 success: 1
15131
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15132
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15134
# check single-5 success: 1
15135
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15137
# check single-6 success: 1
15138
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15139
ERROR HY000: Table has no partition for value 2147483647
15140
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15141
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15142
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15143
f_charbig = '#NULL#';
15145
SET f_int1 = NULL , f_int2 = -@max_row,
15146
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15147
f_charbig = '#NULL#';
15148
# check null success: 1
15150
# check null-1 success: 1
15151
UPDATE t1 SET f_int1 = -@max_row
15152
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15153
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15155
# check null-2 success: 1
15156
UPDATE t1 SET f_int1 = NULL
15157
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15158
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15160
# check null-3 success: 1
15162
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15163
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15165
# check null-4 success: 1
15167
WHERE f_int1 = 0 AND f_int2 = 0
15168
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15169
AND f_charbig = '#NULL#';
15170
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15171
SELECT f_int1, f_int1, '', '', 'was inserted'
15172
FROM t0_template source_tab
15173
WHERE MOD(f_int1,3) = 0
15174
AND f_int1 BETWEEN @max_row_div2 AND @max_row
15176
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
15177
f_int2 = 2 * @max_row + source_tab.f_int1,
15178
f_charbig = 'was updated';
15180
# check unique-1-a success: 1
15182
# check unique-1-b success: 1
15183
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15184
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15185
f_int2 = CAST(f_char1 AS SIGNED INT),
15186
f_charbig = CONCAT('===',f_char1,'===')
15187
WHERE f_charbig = 'was updated';
15188
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15189
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
15190
FROM t0_template source_tab
15191
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15193
# check replace success: 1
15195
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
15197
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
15198
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
15199
UPDATE t1 SET f_int2 = f_int1,
15200
f_char1 = CAST(f_int1 AS CHAR),
15201
f_char2 = CAST(f_int1 AS CHAR),
15202
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
15203
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
15205
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15206
SELECT f_int1, f_int1, '', '', 'was inserted'
15207
FROM t0_template source_tab
15208
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15210
# check transactions-1 success: 1
15213
# check transactions-2 success: 1
15216
# check transactions-3 success: 1
15217
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15221
# check transactions-4 success: 1
15222
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15223
SELECT f_int1, f_int1, '', '', 'was inserted'
15224
FROM t0_template source_tab
15225
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15227
# check transactions-5 success: 1
15230
Warning 1196 Some non-transactional changed tables couldn't be rolled back
15232
# check transactions-6 success: 1
15233
# INFO: Storage engine used for t1 seems to be not transactional.
15236
# check transactions-7 success: 1
15237
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15239
SET @@session.sql_mode = 'traditional';
15240
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15241
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15242
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15243
'', '', 'was inserted' FROM t0_template
15244
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15245
ERROR 22012: Division by 0
15248
# check transactions-8 success: 1
15249
# INFO: Storage engine used for t1 seems to be unable to revert
15250
# changes made by the failing statement.
15251
SET @@session.sql_mode = '';
15253
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15255
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15257
# check special-1 success: 1
15258
UPDATE t1 SET f_charbig = '';
15260
# check special-2 success: 1
15261
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15262
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15263
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15264
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15265
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15266
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15267
'just inserted' FROM t0_template
15268
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15269
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15271
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15272
f_charbig = 'updated by trigger'
15273
WHERE f_int1 = new.f_int1;
15275
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15276
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15279
# check trigger-1 success: 1
15280
DROP TRIGGER trg_1;
15281
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15282
f_int2 = CAST(f_char1 AS SIGNED INT),
15283
f_charbig = 'just inserted'
15284
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15286
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15287
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15288
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15289
'just inserted' FROM t0_template
15290
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15291
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15293
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15294
f_charbig = 'updated by trigger'
15295
WHERE f_int1 = new.f_int1;
15297
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15298
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15299
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15301
# check trigger-2 success: 1
15302
DROP TRIGGER trg_1;
15303
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15304
f_int2 = CAST(f_char1 AS SIGNED INT),
15305
f_charbig = 'just inserted'
15306
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15308
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15309
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15310
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15311
'just inserted' FROM t0_template
15312
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15313
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15315
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15316
f_charbig = 'updated by trigger'
15317
WHERE f_int1 = new.f_int1;
15319
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15320
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15322
# check trigger-3 success: 1
15323
DROP TRIGGER trg_1;
15324
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15325
f_int2 = CAST(f_char1 AS SIGNED INT),
15326
f_charbig = 'just inserted'
15327
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15329
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15330
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15331
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15332
'just inserted' FROM t0_template
15333
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15334
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15336
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15337
f_charbig = 'updated by trigger'
15338
WHERE f_int1 = - old.f_int1;
15340
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15341
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15343
# check trigger-4 success: 1
15344
DROP TRIGGER trg_1;
15345
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15346
f_int2 = CAST(f_char1 AS SIGNED INT),
15347
f_charbig = 'just inserted'
15348
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15350
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15351
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15352
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15353
'just inserted' FROM t0_template
15354
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15355
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15357
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15358
f_charbig = 'updated by trigger'
15359
WHERE f_int1 = new.f_int1;
15361
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15362
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15364
# check trigger-5 success: 1
15365
DROP TRIGGER trg_1;
15366
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15367
f_int2 = CAST(f_char1 AS SIGNED INT),
15368
f_charbig = 'just inserted'
15369
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15371
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15372
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15373
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15374
'just inserted' FROM t0_template
15375
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15376
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15378
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15379
f_charbig = 'updated by trigger'
15380
WHERE f_int1 = - old.f_int1;
15382
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15383
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15385
# check trigger-6 success: 1
15386
DROP TRIGGER trg_1;
15387
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15388
f_int2 = CAST(f_char1 AS SIGNED INT),
15389
f_charbig = 'just inserted'
15390
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15392
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15393
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15394
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15395
'just inserted' FROM t0_template
15396
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15397
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15399
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15400
f_charbig = 'updated by trigger'
15401
WHERE f_int1 = - old.f_int1;
15404
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15406
# check trigger-7 success: 1
15407
DROP TRIGGER trg_1;
15408
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15409
f_int2 = CAST(f_char1 AS SIGNED INT),
15410
f_charbig = 'just inserted'
15411
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15413
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15414
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15415
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15416
'just inserted' FROM t0_template
15417
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15418
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15420
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15421
f_charbig = 'updated by trigger'
15422
WHERE f_int1 = - old.f_int1;
15425
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15427
# check trigger-8 success: 1
15428
DROP TRIGGER trg_1;
15429
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15430
f_int2 = CAST(f_char1 AS SIGNED INT),
15431
f_charbig = 'just inserted'
15432
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15434
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15436
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15437
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15439
SET new.f_int1 = old.f_int1 + @max_row,
15440
new.f_int2 = old.f_int2 - @max_row,
15441
new.f_charbig = '####updated per update trigger####';
15444
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15445
f_charbig = '####updated per update statement itself####';
15447
# check trigger-9 success: 1
15448
DROP TRIGGER trg_2;
15449
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15450
f_int2 = CAST(f_char1 AS SIGNED INT),
15451
f_charbig = CONCAT('===',f_char1,'===');
15452
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15454
SET new.f_int1 = new.f_int1 + @max_row,
15455
new.f_int2 = new.f_int2 - @max_row,
15456
new.f_charbig = '####updated per update trigger####';
15459
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15460
f_charbig = '####updated per update statement itself####';
15462
# check trigger-10 success: 1
15463
DROP TRIGGER trg_2;
15464
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15465
f_int2 = CAST(f_char1 AS SIGNED INT),
15466
f_charbig = CONCAT('===',f_char1,'===');
15467
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15469
SET new.f_int1 = @my_max1 + @counter,
15470
new.f_int2 = @my_min2 - @counter,
15471
new.f_charbig = '####updated per insert trigger####';
15472
SET @counter = @counter + 1;
15475
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15476
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15477
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15478
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15479
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15481
DROP TRIGGER trg_3;
15483
# check trigger-11 success: 1
15485
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15486
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15487
AND f_charbig = '####updated per insert trigger####';
15488
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15490
SET new.f_int1 = @my_max1 + @counter,
15491
new.f_int2 = @my_min2 - @counter,
15492
new.f_charbig = '####updated per insert trigger####';
15493
SET @counter = @counter + 1;
15496
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15497
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15498
SELECT CAST(f_int1 AS CHAR),
15499
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15500
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15502
DROP TRIGGER trg_3;
15504
# check trigger-12 success: 1
15506
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15507
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15508
AND f_charbig = '####updated per insert trigger####';
15510
Table Op Msg_type Msg_text
15511
test.t1 analyze note The storage engine for the table doesn't support analyze
15512
CHECK TABLE t1 EXTENDED;
15513
Table Op Msg_type Msg_text
15514
test.t1 check note The storage engine for the table doesn't support check
15515
CHECKSUM TABLE t1 EXTENDED;
15517
test.t1 <some_value>
15519
Table Op Msg_type Msg_text
15520
test.t1 optimize note The storage engine for the table doesn't support optimize
15521
# check layout success: 1
15522
REPAIR TABLE t1 EXTENDED;
15523
Table Op Msg_type Msg_text
15524
test.t1 repair note The storage engine for the table doesn't support repair
15525
# check layout success: 1
15528
# check TRUNCATE success: 1
15529
# check layout success: 1
15530
# End usability test (inc/partition_check.inc)
15537
f_charbig VARCHAR(1000)
15540
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
15541
(PARTITION part1 VALUES LESS THAN (0)
15542
(SUBPARTITION subpart11, SUBPARTITION subpart12),
15543
PARTITION part2 VALUES LESS THAN (5)
15544
(SUBPARTITION subpart21, SUBPARTITION subpart22),
15545
PARTITION part3 VALUES LESS THAN (10)
15546
(SUBPARTITION subpart31, SUBPARTITION subpart32),
15547
PARTITION part4 VALUES LESS THAN (2147483646)
15548
(SUBPARTITION subpart41, SUBPARTITION subpart42));
15549
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15550
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15551
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15552
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
15553
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15554
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15555
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15556
# Start usability test (inc/partition_check.inc)
15558
SHOW CREATE TABLE t1;
15560
t1 CREATE TABLE `t1` (
15561
`f_int1` int(11) DEFAULT NULL,
15562
`f_int2` int(11) DEFAULT NULL,
15563
`f_char1` char(20) DEFAULT NULL,
15564
`f_char2` char(20) DEFAULT NULL,
15565
`f_charbig` varchar(1000) DEFAULT NULL,
15566
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
15567
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (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)) */
15570
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYD
15571
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYI
15572
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYD
15573
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYI
15574
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYD
15575
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYI
15576
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYD
15577
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYI
15578
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYD
15579
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYI
15580
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYD
15581
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYI
15582
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYD
15583
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYI
15584
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYD
15585
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYI
15586
$MYSQLTEST_VARDIR/master-data/test/t1.frm
15587
$MYSQLTEST_VARDIR/master-data/test/t1.par
15589
# check prerequisites-1 success: 1
15590
# check COUNT(*) success: 1
15591
# check MIN/MAX(f_int1) success: 1
15592
# check MIN/MAX(f_int2) success: 1
15593
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15594
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15595
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15596
WHERE f_int1 IN (2,3);
15597
ERROR 23000: Can't write; duplicate key in table 't1'
15598
# check prerequisites-3 success: 1
15599
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
15600
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15601
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15602
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15603
WHERE f_int1 IN (2,3);
15604
DELETE FROM t1 WHERE f_charbig = 'delete me';
15605
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15606
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15607
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15608
WHERE f_int1 IN (2,3);
15609
DELETE FROM t1 WHERE f_charbig = 'delete me';
15610
# check read via f_int1 success: 1
15611
# check read via f_int2 success: 1
15613
# check multiple-1 success: 1
15614
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15616
# check multiple-2 success: 1
15617
INSERT INTO t1 SELECT * FROM t0_template
15618
WHERE MOD(f_int1,3) = 0;
15620
# check multiple-3 success: 1
15621
UPDATE t1 SET f_int1 = f_int1 + @max_row
15622
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15623
AND @max_row_div2 + @max_row_div4;
15625
# check multiple-4 success: 1
15627
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15628
AND @max_row_div2 + @max_row_div4 + @max_row;
15630
# check multiple-5 success: 1
15631
SELECT COUNT(*) INTO @try_count FROM t0_template
15632
WHERE MOD(f_int1,3) = 0
15633
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15634
SELECT COUNT(*) INTO @clash_count
15635
FROM t1 INNER JOIN t0_template USING(f_int1)
15636
WHERE MOD(f_int1,3) = 0
15637
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15638
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15640
SET f_int1 = @cur_value , f_int2 = @cur_value,
15641
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15642
f_charbig = '#SINGLE#';
15644
# check single-1 success: 1
15645
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15647
SET f_int1 = @cur_value , f_int2 = @cur_value,
15648
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15649
f_charbig = '#SINGLE#';
15651
# check single-2 success: 1
15652
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15653
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15654
UPDATE t1 SET f_int1 = @cur_value2
15655
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15657
# check single-3 success: 1
15658
SET @cur_value1= -1;
15659
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15660
UPDATE t1 SET f_int1 = @cur_value1
15661
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15663
# check single-4 success: 1
15664
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15665
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15667
# check single-5 success: 1
15668
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15670
# check single-6 success: 1
15671
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15672
ERROR HY000: Table has no partition for value 2147483647
15673
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15674
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15675
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15676
f_charbig = '#NULL#';
15678
SET f_int1 = NULL , f_int2 = -@max_row,
15679
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15680
f_charbig = '#NULL#';
15681
# check null success: 1
15683
# check null-1 success: 1
15684
UPDATE t1 SET f_int1 = -@max_row
15685
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15686
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15688
# check null-2 success: 1
15689
UPDATE t1 SET f_int1 = NULL
15690
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15691
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15693
# check null-3 success: 1
15695
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15696
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15698
# check null-4 success: 1
15700
WHERE f_int1 = 0 AND f_int2 = 0
15701
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15702
AND f_charbig = '#NULL#';
15703
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15704
SELECT f_int1, f_int1, '', '', 'was inserted'
15705
FROM t0_template source_tab
15706
WHERE MOD(f_int1,3) = 0
15707
AND f_int1 BETWEEN @max_row_div2 AND @max_row
15709
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
15710
f_int2 = 2 * @max_row + source_tab.f_int1,
15711
f_charbig = 'was updated';
15713
# check unique-1-a success: 1
15715
# check unique-1-b success: 1
15716
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15717
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15718
f_int2 = CAST(f_char1 AS SIGNED INT),
15719
f_charbig = CONCAT('===',f_char1,'===')
15720
WHERE f_charbig = 'was updated';
15721
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15722
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
15723
FROM t0_template source_tab
15724
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15726
# check replace success: 1
15728
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
15730
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
15731
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
15732
UPDATE t1 SET f_int2 = f_int1,
15733
f_char1 = CAST(f_int1 AS CHAR),
15734
f_char2 = CAST(f_int1 AS CHAR),
15735
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
15736
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
15738
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15739
SELECT f_int1, f_int1, '', '', 'was inserted'
15740
FROM t0_template source_tab
15741
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15743
# check transactions-1 success: 1
15746
# check transactions-2 success: 1
15749
# check transactions-3 success: 1
15750
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15754
# check transactions-4 success: 1
15755
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15756
SELECT f_int1, f_int1, '', '', 'was inserted'
15757
FROM t0_template source_tab
15758
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15760
# check transactions-5 success: 1
15763
Warning 1196 Some non-transactional changed tables couldn't be rolled back
15765
# check transactions-6 success: 1
15766
# INFO: Storage engine used for t1 seems to be not transactional.
15769
# check transactions-7 success: 1
15770
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15772
SET @@session.sql_mode = 'traditional';
15773
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15774
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15775
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15776
'', '', 'was inserted' FROM t0_template
15777
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15778
ERROR 22012: Division by 0
15781
# check transactions-8 success: 1
15782
# INFO: Storage engine used for t1 seems to be unable to revert
15783
# changes made by the failing statement.
15784
SET @@session.sql_mode = '';
15786
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15788
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15790
# check special-1 success: 1
15791
UPDATE t1 SET f_charbig = '';
15793
# check special-2 success: 1
15794
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15795
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15796
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15797
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15798
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15799
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15800
'just inserted' FROM t0_template
15801
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15802
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15804
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15805
f_charbig = 'updated by trigger'
15806
WHERE f_int1 = new.f_int1;
15808
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15809
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15810
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15812
# check trigger-1 success: 1
15813
DROP TRIGGER trg_1;
15814
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15815
f_int2 = CAST(f_char1 AS SIGNED INT),
15816
f_charbig = 'just inserted'
15817
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15819
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15820
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15821
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15822
'just inserted' FROM t0_template
15823
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15824
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15826
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15827
f_charbig = 'updated by trigger'
15828
WHERE f_int1 = new.f_int1;
15830
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15831
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15832
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15834
# check trigger-2 success: 1
15835
DROP TRIGGER trg_1;
15836
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15837
f_int2 = CAST(f_char1 AS SIGNED INT),
15838
f_charbig = 'just inserted'
15839
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15841
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15842
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15843
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15844
'just inserted' FROM t0_template
15845
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15846
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15848
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15849
f_charbig = 'updated by trigger'
15850
WHERE f_int1 = new.f_int1;
15852
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15853
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15855
# check trigger-3 success: 1
15856
DROP TRIGGER trg_1;
15857
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15858
f_int2 = CAST(f_char1 AS SIGNED INT),
15859
f_charbig = 'just inserted'
15860
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15862
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15863
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15864
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15865
'just inserted' FROM t0_template
15866
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15867
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15869
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15870
f_charbig = 'updated by trigger'
15871
WHERE f_int1 = - old.f_int1;
15873
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15874
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15876
# check trigger-4 success: 1
15877
DROP TRIGGER trg_1;
15878
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15879
f_int2 = CAST(f_char1 AS SIGNED INT),
15880
f_charbig = 'just inserted'
15881
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15883
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15884
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15885
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15886
'just inserted' FROM t0_template
15887
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15888
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15890
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15891
f_charbig = 'updated by trigger'
15892
WHERE f_int1 = new.f_int1;
15894
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15895
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15897
# check trigger-5 success: 1
15898
DROP TRIGGER trg_1;
15899
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15900
f_int2 = CAST(f_char1 AS SIGNED INT),
15901
f_charbig = 'just inserted'
15902
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15904
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15905
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15906
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15907
'just inserted' FROM t0_template
15908
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15909
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15911
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15912
f_charbig = 'updated by trigger'
15913
WHERE f_int1 = - old.f_int1;
15915
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15916
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15918
# check trigger-6 success: 1
15919
DROP TRIGGER trg_1;
15920
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15921
f_int2 = CAST(f_char1 AS SIGNED INT),
15922
f_charbig = 'just inserted'
15923
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15925
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15926
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15927
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15928
'just inserted' FROM t0_template
15929
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15930
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15932
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15933
f_charbig = 'updated by trigger'
15934
WHERE f_int1 = - old.f_int1;
15937
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15939
# check trigger-7 success: 1
15940
DROP TRIGGER trg_1;
15941
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15942
f_int2 = CAST(f_char1 AS SIGNED INT),
15943
f_charbig = 'just inserted'
15944
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15946
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15947
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15948
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15949
'just inserted' FROM t0_template
15950
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15951
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15953
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15954
f_charbig = 'updated by trigger'
15955
WHERE f_int1 = - old.f_int1;
15958
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15960
# check trigger-8 success: 1
15961
DROP TRIGGER trg_1;
15962
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15963
f_int2 = CAST(f_char1 AS SIGNED INT),
15964
f_charbig = 'just inserted'
15965
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15967
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15969
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15970
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15972
SET new.f_int1 = old.f_int1 + @max_row,
15973
new.f_int2 = old.f_int2 - @max_row,
15974
new.f_charbig = '####updated per update trigger####';
15977
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15978
f_charbig = '####updated per update statement itself####';
15980
# check trigger-9 success: 1
15981
DROP TRIGGER trg_2;
15982
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15983
f_int2 = CAST(f_char1 AS SIGNED INT),
15984
f_charbig = CONCAT('===',f_char1,'===');
15985
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15987
SET new.f_int1 = new.f_int1 + @max_row,
15988
new.f_int2 = new.f_int2 - @max_row,
15989
new.f_charbig = '####updated per update trigger####';
15992
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15993
f_charbig = '####updated per update statement itself####';
15995
# check trigger-10 success: 1
15996
DROP TRIGGER trg_2;
15997
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15998
f_int2 = CAST(f_char1 AS SIGNED INT),
15999
f_charbig = CONCAT('===',f_char1,'===');
16000
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16002
SET new.f_int1 = @my_max1 + @counter,
16003
new.f_int2 = @my_min2 - @counter,
16004
new.f_charbig = '####updated per insert trigger####';
16005
SET @counter = @counter + 1;
16008
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16009
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16010
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16011
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16012
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16014
DROP TRIGGER trg_3;
16016
# check trigger-11 success: 1
16018
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16019
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16020
AND f_charbig = '####updated per insert trigger####';
16021
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16023
SET new.f_int1 = @my_max1 + @counter,
16024
new.f_int2 = @my_min2 - @counter,
16025
new.f_charbig = '####updated per insert trigger####';
16026
SET @counter = @counter + 1;
16029
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16030
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16031
SELECT CAST(f_int1 AS CHAR),
16032
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16033
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16035
DROP TRIGGER trg_3;
16037
# check trigger-12 success: 1
16039
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16040
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16041
AND f_charbig = '####updated per insert trigger####';
16043
Table Op Msg_type Msg_text
16044
test.t1 analyze note The storage engine for the table doesn't support analyze
16045
CHECK TABLE t1 EXTENDED;
16046
Table Op Msg_type Msg_text
16047
test.t1 check note The storage engine for the table doesn't support check
16048
CHECKSUM TABLE t1 EXTENDED;
16050
test.t1 <some_value>
16052
Table Op Msg_type Msg_text
16053
test.t1 optimize note The storage engine for the table doesn't support optimize
16054
# check layout success: 1
16055
REPAIR TABLE t1 EXTENDED;
16056
Table Op Msg_type Msg_text
16057
test.t1 repair note The storage engine for the table doesn't support repair
16058
# check layout success: 1
16061
# check TRUNCATE success: 1
16062
# check layout success: 1
16063
# End usability test (inc/partition_check.inc)
16070
f_charbig VARCHAR(1000)
16073
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
16074
(PARTITION part1 VALUES IN (0)
16075
(SUBPARTITION sp11, SUBPARTITION sp12),
16076
PARTITION part2 VALUES IN (1)
16077
(SUBPARTITION sp21, SUBPARTITION sp22),
16078
PARTITION part3 VALUES IN (2)
16079
(SUBPARTITION sp31, SUBPARTITION sp32),
16080
PARTITION part4 VALUES IN (NULL)
16081
(SUBPARTITION sp41, SUBPARTITION sp42));
16082
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16083
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16084
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16085
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
16086
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16087
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16088
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16089
# Start usability test (inc/partition_check.inc)
16091
SHOW CREATE TABLE t1;
16093
t1 CREATE TABLE `t1` (
16094
`f_int1` int(11) DEFAULT NULL,
16095
`f_int2` int(11) DEFAULT NULL,
16096
`f_char1` char(20) DEFAULT NULL,
16097
`f_char2` char(20) DEFAULT NULL,
16098
`f_charbig` varchar(1000) DEFAULT NULL,
16099
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
16100
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = 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)) */
16103
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYD
16104
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYI
16105
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYD
16106
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYI
16107
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYD
16108
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYI
16109
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYD
16110
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYI
16111
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYD
16112
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYI
16113
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYD
16114
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYI
16115
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYD
16116
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYI
16117
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYD
16118
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYI
16119
$MYSQLTEST_VARDIR/master-data/test/t1.frm
16120
$MYSQLTEST_VARDIR/master-data/test/t1.par
16122
# check prerequisites-1 success: 1
16123
# check COUNT(*) success: 1
16124
# check MIN/MAX(f_int1) success: 1
16125
# check MIN/MAX(f_int2) success: 1
16126
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16127
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16128
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16129
WHERE f_int1 IN (2,3);
16130
ERROR 23000: Can't write; duplicate key in table 't1'
16131
# check prerequisites-3 success: 1
16132
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
16133
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16134
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16135
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16136
WHERE f_int1 IN (2,3);
16137
DELETE FROM t1 WHERE f_charbig = 'delete me';
16138
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16139
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16140
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16141
WHERE f_int1 IN (2,3);
16142
DELETE FROM t1 WHERE f_charbig = 'delete me';
16143
# check read via f_int1 success: 1
16144
# check read via f_int2 success: 1
16146
# check multiple-1 success: 1
16147
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16149
# check multiple-2 success: 1
16150
INSERT INTO t1 SELECT * FROM t0_template
16151
WHERE MOD(f_int1,3) = 0;
16153
# check multiple-3 success: 1
16154
UPDATE t1 SET f_int1 = f_int1 + @max_row
16155
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16156
AND @max_row_div2 + @max_row_div4;
16158
# check multiple-4 success: 1
16160
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16161
AND @max_row_div2 + @max_row_div4 + @max_row;
16163
# check multiple-5 success: 1
16164
SELECT COUNT(*) INTO @try_count FROM t0_template
16165
WHERE MOD(f_int1,3) = 0
16166
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16167
SELECT COUNT(*) INTO @clash_count
16168
FROM t1 INNER JOIN t0_template USING(f_int1)
16169
WHERE MOD(f_int1,3) = 0
16170
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16171
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16173
SET f_int1 = @cur_value , f_int2 = @cur_value,
16174
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16175
f_charbig = '#SINGLE#';
16177
# check single-1 success: 1
16178
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16180
SET f_int1 = @cur_value , f_int2 = @cur_value,
16181
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16182
f_charbig = '#SINGLE#';
16184
# check single-2 success: 1
16185
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16186
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16187
UPDATE t1 SET f_int1 = @cur_value2
16188
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16190
# check single-3 success: 1
16191
SET @cur_value1= -1;
16192
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16193
UPDATE t1 SET f_int1 = @cur_value1
16194
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16196
# check single-4 success: 1
16197
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16198
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16200
# check single-5 success: 1
16201
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16203
# check single-6 success: 1
16204
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16206
# check single-7 success: 1
16207
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16208
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16209
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16210
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16211
f_charbig = '#NULL#';
16213
SET f_int1 = NULL , f_int2 = -@max_row,
16214
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16215
f_charbig = '#NULL#';
16216
# check null success: 1
16218
# check null-1 success: 1
16219
UPDATE t1 SET f_int1 = -@max_row
16220
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16221
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16223
# check null-2 success: 1
16224
UPDATE t1 SET f_int1 = NULL
16225
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16226
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16228
# check null-3 success: 1
16230
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16231
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16233
# check null-4 success: 1
16235
WHERE f_int1 = 0 AND f_int2 = 0
16236
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16237
AND f_charbig = '#NULL#';
16238
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16239
SELECT f_int1, f_int1, '', '', 'was inserted'
16240
FROM t0_template source_tab
16241
WHERE MOD(f_int1,3) = 0
16242
AND f_int1 BETWEEN @max_row_div2 AND @max_row
16244
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
16245
f_int2 = 2 * @max_row + source_tab.f_int1,
16246
f_charbig = 'was updated';
16248
# check unique-1-a success: 1
16250
# check unique-1-b success: 1
16251
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16252
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16253
f_int2 = CAST(f_char1 AS SIGNED INT),
16254
f_charbig = CONCAT('===',f_char1,'===')
16255
WHERE f_charbig = 'was updated';
16256
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16257
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
16258
FROM t0_template source_tab
16259
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16261
# check replace success: 1
16263
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
16265
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
16266
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
16267
UPDATE t1 SET f_int2 = f_int1,
16268
f_char1 = CAST(f_int1 AS CHAR),
16269
f_char2 = CAST(f_int1 AS CHAR),
16270
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
16271
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
16273
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16274
SELECT f_int1, f_int1, '', '', 'was inserted'
16275
FROM t0_template source_tab
16276
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16278
# check transactions-1 success: 1
16281
# check transactions-2 success: 1
16284
# check transactions-3 success: 1
16285
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16289
# check transactions-4 success: 1
16290
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16291
SELECT f_int1, f_int1, '', '', 'was inserted'
16292
FROM t0_template source_tab
16293
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16295
# check transactions-5 success: 1
16298
Warning 1196 Some non-transactional changed tables couldn't be rolled back
16300
# check transactions-6 success: 1
16301
# INFO: Storage engine used for t1 seems to be not transactional.
16304
# check transactions-7 success: 1
16305
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16307
SET @@session.sql_mode = 'traditional';
16308
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16309
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16310
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16311
'', '', 'was inserted' FROM t0_template
16312
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16313
ERROR 22012: Division by 0
16316
# check transactions-8 success: 1
16317
# INFO: Storage engine used for t1 seems to be unable to revert
16318
# changes made by the failing statement.
16319
SET @@session.sql_mode = '';
16321
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16323
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16325
# check special-1 success: 1
16326
UPDATE t1 SET f_charbig = '';
16328
# check special-2 success: 1
16329
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16330
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16331
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16332
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16333
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16334
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16335
'just inserted' FROM t0_template
16336
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16337
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16339
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16340
f_charbig = 'updated by trigger'
16341
WHERE f_int1 = new.f_int1;
16343
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16344
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16345
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16347
# check trigger-1 success: 1
16348
DROP TRIGGER trg_1;
16349
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16350
f_int2 = CAST(f_char1 AS SIGNED INT),
16351
f_charbig = 'just inserted'
16352
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16354
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16355
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16356
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16357
'just inserted' FROM t0_template
16358
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16359
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16361
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16362
f_charbig = 'updated by trigger'
16363
WHERE f_int1 = new.f_int1;
16365
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16366
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16367
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16369
# check trigger-2 success: 1
16370
DROP TRIGGER trg_1;
16371
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16372
f_int2 = CAST(f_char1 AS SIGNED INT),
16373
f_charbig = 'just inserted'
16374
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16376
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16377
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16378
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16379
'just inserted' FROM t0_template
16380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16381
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16383
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16384
f_charbig = 'updated by trigger'
16385
WHERE f_int1 = new.f_int1;
16387
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16388
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16390
# check trigger-3 success: 1
16391
DROP TRIGGER trg_1;
16392
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16393
f_int2 = CAST(f_char1 AS SIGNED INT),
16394
f_charbig = 'just inserted'
16395
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16397
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16398
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16399
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16400
'just inserted' FROM t0_template
16401
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16402
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16404
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16405
f_charbig = 'updated by trigger'
16406
WHERE f_int1 = - old.f_int1;
16408
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16409
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16411
# check trigger-4 success: 1
16412
DROP TRIGGER trg_1;
16413
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16414
f_int2 = CAST(f_char1 AS SIGNED INT),
16415
f_charbig = 'just inserted'
16416
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16418
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16419
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16420
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16421
'just inserted' FROM t0_template
16422
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16423
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16425
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16426
f_charbig = 'updated by trigger'
16427
WHERE f_int1 = new.f_int1;
16429
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16430
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16432
# check trigger-5 success: 1
16433
DROP TRIGGER trg_1;
16434
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16435
f_int2 = CAST(f_char1 AS SIGNED INT),
16436
f_charbig = 'just inserted'
16437
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16439
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16440
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16441
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16442
'just inserted' FROM t0_template
16443
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16444
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16446
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16447
f_charbig = 'updated by trigger'
16448
WHERE f_int1 = - old.f_int1;
16450
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16451
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16453
# check trigger-6 success: 1
16454
DROP TRIGGER trg_1;
16455
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16456
f_int2 = CAST(f_char1 AS SIGNED INT),
16457
f_charbig = 'just inserted'
16458
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16460
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16461
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16462
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16463
'just inserted' FROM t0_template
16464
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16465
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16467
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16468
f_charbig = 'updated by trigger'
16469
WHERE f_int1 = - old.f_int1;
16472
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16474
# check trigger-7 success: 1
16475
DROP TRIGGER trg_1;
16476
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16477
f_int2 = CAST(f_char1 AS SIGNED INT),
16478
f_charbig = 'just inserted'
16479
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16481
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16482
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16483
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16484
'just inserted' FROM t0_template
16485
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16486
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16488
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16489
f_charbig = 'updated by trigger'
16490
WHERE f_int1 = - old.f_int1;
16493
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16495
# check trigger-8 success: 1
16496
DROP TRIGGER trg_1;
16497
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16498
f_int2 = CAST(f_char1 AS SIGNED INT),
16499
f_charbig = 'just inserted'
16500
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16502
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16504
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16505
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16507
SET new.f_int1 = old.f_int1 + @max_row,
16508
new.f_int2 = old.f_int2 - @max_row,
16509
new.f_charbig = '####updated per update trigger####';
16512
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16513
f_charbig = '####updated per update statement itself####';
16515
# check trigger-9 success: 1
16516
DROP TRIGGER trg_2;
16517
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16518
f_int2 = CAST(f_char1 AS SIGNED INT),
16519
f_charbig = CONCAT('===',f_char1,'===');
16520
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16522
SET new.f_int1 = new.f_int1 + @max_row,
16523
new.f_int2 = new.f_int2 - @max_row,
16524
new.f_charbig = '####updated per update trigger####';
16527
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16528
f_charbig = '####updated per update statement itself####';
16530
# check trigger-10 success: 1
16531
DROP TRIGGER trg_2;
16532
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16533
f_int2 = CAST(f_char1 AS SIGNED INT),
16534
f_charbig = CONCAT('===',f_char1,'===');
16535
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16537
SET new.f_int1 = @my_max1 + @counter,
16538
new.f_int2 = @my_min2 - @counter,
16539
new.f_charbig = '####updated per insert trigger####';
16540
SET @counter = @counter + 1;
16543
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16544
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16545
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16546
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16547
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16549
DROP TRIGGER trg_3;
16551
# check trigger-11 success: 1
16553
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16554
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16555
AND f_charbig = '####updated per insert trigger####';
16556
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16558
SET new.f_int1 = @my_max1 + @counter,
16559
new.f_int2 = @my_min2 - @counter,
16560
new.f_charbig = '####updated per insert trigger####';
16561
SET @counter = @counter + 1;
16564
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16565
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16566
SELECT CAST(f_int1 AS CHAR),
16567
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16568
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16570
DROP TRIGGER trg_3;
16572
# check trigger-12 success: 1
16574
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16575
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16576
AND f_charbig = '####updated per insert trigger####';
16578
Table Op Msg_type Msg_text
16579
test.t1 analyze note The storage engine for the table doesn't support analyze
16580
CHECK TABLE t1 EXTENDED;
16581
Table Op Msg_type Msg_text
16582
test.t1 check note The storage engine for the table doesn't support check
16583
CHECKSUM TABLE t1 EXTENDED;
16585
test.t1 <some_value>
16587
Table Op Msg_type Msg_text
16588
test.t1 optimize note The storage engine for the table doesn't support optimize
16589
# check layout success: 1
16590
REPAIR TABLE t1 EXTENDED;
16591
Table Op Msg_type Msg_text
16592
test.t1 repair note The storage engine for the table doesn't support repair
16593
# check layout success: 1
16596
# check TRUNCATE success: 1
16597
# check layout success: 1
16598
# End usability test (inc/partition_check.inc)
16605
f_charbig VARCHAR(1000)
16608
PARTITION BY LIST(ABS(MOD(f_int1,2)))
16609
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
16610
(PARTITION part1 VALUES IN (0),
16611
PARTITION part2 VALUES IN (1),
16612
PARTITION part3 VALUES IN (NULL));
16613
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16614
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16615
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16616
ALTER TABLE t1 ADD UNIQUE INDEX uidx1 (f_int2,f_int1);
16617
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16618
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16619
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16620
# Start usability test (inc/partition_check.inc)
16622
SHOW CREATE TABLE t1;
16624
t1 CREATE TABLE `t1` (
16625
`f_int1` int(11) DEFAULT NULL,
16626
`f_int2` int(11) DEFAULT NULL,
16627
`f_char1` char(20) DEFAULT NULL,
16628
`f_char2` char(20) DEFAULT NULL,
16629
`f_charbig` varchar(1000) DEFAULT NULL,
16630
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
16631
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = MyISAM, PARTITION part2 VALUES IN (1) ENGINE = MyISAM, PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
16634
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYD
16635
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYI
16636
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYD
16637
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYI
16638
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYD
16639
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYI
16640
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYD
16641
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYI
16642
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYD
16643
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYI
16644
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYD
16645
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYI
16646
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYD
16647
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYI
16648
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYD
16649
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYI
16650
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYD
16651
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYI
16652
$MYSQLTEST_VARDIR/master-data/test/t1.frm
16653
$MYSQLTEST_VARDIR/master-data/test/t1.par
16655
# check prerequisites-1 success: 1
16656
# check COUNT(*) success: 1
16657
# check MIN/MAX(f_int1) success: 1
16658
# check MIN/MAX(f_int2) success: 1
16659
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16660
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16661
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16662
WHERE f_int1 IN (2,3);
16663
ERROR 23000: Can't write; duplicate key in table 't1'
16664
# check prerequisites-3 success: 1
16665
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
16666
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16667
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16668
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16669
WHERE f_int1 IN (2,3);
16670
DELETE FROM t1 WHERE f_charbig = 'delete me';
16671
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16672
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16673
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16674
WHERE f_int1 IN (2,3);
16675
DELETE FROM t1 WHERE f_charbig = 'delete me';
16676
# check read via f_int1 success: 1
16677
# check read via f_int2 success: 1
16679
# check multiple-1 success: 1
16680
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16682
# check multiple-2 success: 1
16683
INSERT INTO t1 SELECT * FROM t0_template
16684
WHERE MOD(f_int1,3) = 0;
16686
# check multiple-3 success: 1
16687
UPDATE t1 SET f_int1 = f_int1 + @max_row
16688
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16689
AND @max_row_div2 + @max_row_div4;
16691
# check multiple-4 success: 1
16693
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16694
AND @max_row_div2 + @max_row_div4 + @max_row;
16696
# check multiple-5 success: 1
16697
SELECT COUNT(*) INTO @try_count FROM t0_template
16698
WHERE MOD(f_int1,3) = 0
16699
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16700
SELECT COUNT(*) INTO @clash_count
16701
FROM t1 INNER JOIN t0_template USING(f_int1)
16702
WHERE MOD(f_int1,3) = 0
16703
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16704
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16706
SET f_int1 = @cur_value , f_int2 = @cur_value,
16707
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16708
f_charbig = '#SINGLE#';
16710
# check single-1 success: 1
16711
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16713
SET f_int1 = @cur_value , f_int2 = @cur_value,
16714
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16715
f_charbig = '#SINGLE#';
16717
# check single-2 success: 1
16718
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16719
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16720
UPDATE t1 SET f_int1 = @cur_value2
16721
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16723
# check single-3 success: 1
16724
SET @cur_value1= -1;
16725
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16726
UPDATE t1 SET f_int1 = @cur_value1
16727
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16729
# check single-4 success: 1
16730
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16731
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16733
# check single-5 success: 1
16734
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16736
# check single-6 success: 1
16737
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16739
# check single-7 success: 1
16740
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16741
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16742
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16743
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16744
f_charbig = '#NULL#';
16746
SET f_int1 = NULL , f_int2 = -@max_row,
16747
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16748
f_charbig = '#NULL#';
16749
# check null success: 1
16751
# check null-1 success: 1
16752
UPDATE t1 SET f_int1 = -@max_row
16753
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16754
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16756
# check null-2 success: 1
16757
UPDATE t1 SET f_int1 = NULL
16758
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16759
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16761
# check null-3 success: 1
16763
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16764
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16766
# check null-4 success: 1
16768
WHERE f_int1 = 0 AND f_int2 = 0
16769
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16770
AND f_charbig = '#NULL#';
16771
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16772
SELECT f_int1, f_int1, '', '', 'was inserted'
16773
FROM t0_template source_tab
16774
WHERE MOD(f_int1,3) = 0
16775
AND f_int1 BETWEEN @max_row_div2 AND @max_row
16777
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
16778
f_int2 = 2 * @max_row + source_tab.f_int1,
16779
f_charbig = 'was updated';
16781
# check unique-1-a success: 1
16783
# check unique-1-b success: 1
16784
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16785
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16786
f_int2 = CAST(f_char1 AS SIGNED INT),
16787
f_charbig = CONCAT('===',f_char1,'===')
16788
WHERE f_charbig = 'was updated';
16789
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16790
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
16791
FROM t0_template source_tab
16792
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16794
# check replace success: 1
16796
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
16798
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
16799
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
16800
UPDATE t1 SET f_int2 = f_int1,
16801
f_char1 = CAST(f_int1 AS CHAR),
16802
f_char2 = CAST(f_int1 AS CHAR),
16803
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
16804
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
16806
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16807
SELECT f_int1, f_int1, '', '', 'was inserted'
16808
FROM t0_template source_tab
16809
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16811
# check transactions-1 success: 1
16814
# check transactions-2 success: 1
16817
# check transactions-3 success: 1
16818
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16822
# check transactions-4 success: 1
16823
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16824
SELECT f_int1, f_int1, '', '', 'was inserted'
16825
FROM t0_template source_tab
16826
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16828
# check transactions-5 success: 1
16831
Warning 1196 Some non-transactional changed tables couldn't be rolled back
16833
# check transactions-6 success: 1
16834
# INFO: Storage engine used for t1 seems to be not transactional.
16837
# check transactions-7 success: 1
16838
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16840
SET @@session.sql_mode = 'traditional';
16841
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16842
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16843
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16844
'', '', 'was inserted' FROM t0_template
16845
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16846
ERROR 22012: Division by 0
16849
# check transactions-8 success: 1
16850
# INFO: Storage engine used for t1 seems to be unable to revert
16851
# changes made by the failing statement.
16852
SET @@session.sql_mode = '';
16854
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16856
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16858
# check special-1 success: 1
16859
UPDATE t1 SET f_charbig = '';
16861
# check special-2 success: 1
16862
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16863
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16864
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16865
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16866
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16867
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16868
'just inserted' FROM t0_template
16869
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16870
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16872
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16873
f_charbig = 'updated by trigger'
16874
WHERE f_int1 = new.f_int1;
16876
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16877
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16878
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16880
# check trigger-1 success: 1
16881
DROP TRIGGER trg_1;
16882
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16883
f_int2 = CAST(f_char1 AS SIGNED INT),
16884
f_charbig = 'just inserted'
16885
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16887
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16888
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16889
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16890
'just inserted' FROM t0_template
16891
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16892
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16894
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16895
f_charbig = 'updated by trigger'
16896
WHERE f_int1 = new.f_int1;
16898
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16899
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16900
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16902
# check trigger-2 success: 1
16903
DROP TRIGGER trg_1;
16904
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16905
f_int2 = CAST(f_char1 AS SIGNED INT),
16906
f_charbig = 'just inserted'
16907
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16909
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16910
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16911
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16912
'just inserted' FROM t0_template
16913
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16914
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16916
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16917
f_charbig = 'updated by trigger'
16918
WHERE f_int1 = new.f_int1;
16920
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16921
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16923
# check trigger-3 success: 1
16924
DROP TRIGGER trg_1;
16925
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16926
f_int2 = CAST(f_char1 AS SIGNED INT),
16927
f_charbig = 'just inserted'
16928
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16930
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16931
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16932
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16933
'just inserted' FROM t0_template
16934
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16935
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16937
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16938
f_charbig = 'updated by trigger'
16939
WHERE f_int1 = - old.f_int1;
16941
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16942
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16944
# check trigger-4 success: 1
16945
DROP TRIGGER trg_1;
16946
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16947
f_int2 = CAST(f_char1 AS SIGNED INT),
16948
f_charbig = 'just inserted'
16949
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16951
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16952
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16953
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16954
'just inserted' FROM t0_template
16955
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16956
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16958
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16959
f_charbig = 'updated by trigger'
16960
WHERE f_int1 = new.f_int1;
16962
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16963
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16965
# check trigger-5 success: 1
16966
DROP TRIGGER trg_1;
16967
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16968
f_int2 = CAST(f_char1 AS SIGNED INT),
16969
f_charbig = 'just inserted'
16970
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16972
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16973
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16974
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16975
'just inserted' FROM t0_template
16976
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16977
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16979
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16980
f_charbig = 'updated by trigger'
16981
WHERE f_int1 = - old.f_int1;
16983
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16984
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16986
# check trigger-6 success: 1
16987
DROP TRIGGER trg_1;
16988
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16989
f_int2 = CAST(f_char1 AS SIGNED INT),
16990
f_charbig = 'just inserted'
16991
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16993
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16994
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16995
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16996
'just inserted' FROM t0_template
16997
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16998
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17000
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17001
f_charbig = 'updated by trigger'
17002
WHERE f_int1 = - old.f_int1;
17005
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17007
# check trigger-7 success: 1
17008
DROP TRIGGER trg_1;
17009
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17010
f_int2 = CAST(f_char1 AS SIGNED INT),
17011
f_charbig = 'just inserted'
17012
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17014
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17015
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17016
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17017
'just inserted' FROM t0_template
17018
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17019
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17021
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17022
f_charbig = 'updated by trigger'
17023
WHERE f_int1 = - old.f_int1;
17026
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17028
# check trigger-8 success: 1
17029
DROP TRIGGER trg_1;
17030
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17031
f_int2 = CAST(f_char1 AS SIGNED INT),
17032
f_charbig = 'just inserted'
17033
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17035
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17037
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17038
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17040
SET new.f_int1 = old.f_int1 + @max_row,
17041
new.f_int2 = old.f_int2 - @max_row,
17042
new.f_charbig = '####updated per update trigger####';
17045
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17046
f_charbig = '####updated per update statement itself####';
17048
# check trigger-9 success: 1
17049
DROP TRIGGER trg_2;
17050
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17051
f_int2 = CAST(f_char1 AS SIGNED INT),
17052
f_charbig = CONCAT('===',f_char1,'===');
17053
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17055
SET new.f_int1 = new.f_int1 + @max_row,
17056
new.f_int2 = new.f_int2 - @max_row,
17057
new.f_charbig = '####updated per update trigger####';
17060
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17061
f_charbig = '####updated per update statement itself####';
17063
# check trigger-10 success: 1
17064
DROP TRIGGER trg_2;
17065
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17066
f_int2 = CAST(f_char1 AS SIGNED INT),
17067
f_charbig = CONCAT('===',f_char1,'===');
17068
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17070
SET new.f_int1 = @my_max1 + @counter,
17071
new.f_int2 = @my_min2 - @counter,
17072
new.f_charbig = '####updated per insert trigger####';
17073
SET @counter = @counter + 1;
17076
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17077
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17078
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17079
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17080
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17082
DROP TRIGGER trg_3;
17084
# check trigger-11 success: 1
17086
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17087
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17088
AND f_charbig = '####updated per insert trigger####';
17089
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17091
SET new.f_int1 = @my_max1 + @counter,
17092
new.f_int2 = @my_min2 - @counter,
17093
new.f_charbig = '####updated per insert trigger####';
17094
SET @counter = @counter + 1;
17097
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17098
INSERT INTO t1 (f_char1, f_char2, f_charbig)
17099
SELECT CAST(f_int1 AS CHAR),
17100
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17101
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17103
DROP TRIGGER trg_3;
17105
# check trigger-12 success: 1
17107
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17108
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17109
AND f_charbig = '####updated per insert trigger####';
17111
Table Op Msg_type Msg_text
17112
test.t1 analyze note The storage engine for the table doesn't support analyze
17113
CHECK TABLE t1 EXTENDED;
17114
Table Op Msg_type Msg_text
17115
test.t1 check note The storage engine for the table doesn't support check
17116
CHECKSUM TABLE t1 EXTENDED;
17118
test.t1 <some_value>
17120
Table Op Msg_type Msg_text
17121
test.t1 optimize note The storage engine for the table doesn't support optimize
17122
# check layout success: 1
17123
REPAIR TABLE t1 EXTENDED;
17124
Table Op Msg_type Msg_text
17125
test.t1 repair note The storage engine for the table doesn't support repair
17126
# check layout success: 1
17129
# check TRUNCATE success: 1
17130
# check layout success: 1
17131
# End usability test (inc/partition_check.inc)
17134
#========================================================================
17135
# 2 DROP PRIMARY KEY or UNIQUE INDEX
17136
#========================================================================
17137
#------------------------------------------------------------------------
17138
# 2.1 Partitioning function contains one column(f_int1)
17139
#------------------------------------------------------------------------
17140
DROP TABLE IF EXISTS t1;
17146
f_charbig VARCHAR(1000)
17147
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
17149
PARTITION BY HASH(f_int1) PARTITIONS 2;
17150
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17151
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17152
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17153
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
17154
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17155
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17156
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17157
# Start usability test (inc/partition_check.inc)
17159
SHOW CREATE TABLE t1;
17161
t1 CREATE TABLE `t1` (
17162
`f_int1` int(11) DEFAULT NULL,
17163
`f_int2` int(11) DEFAULT NULL,
17164
`f_char1` char(20) DEFAULT NULL,
17165
`f_char2` char(20) DEFAULT NULL,
17166
`f_charbig` varchar(1000) DEFAULT NULL
17167
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) PARTITIONS 2 */
17170
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
17171
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
17172
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
17173
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
17174
$MYSQLTEST_VARDIR/master-data/test/t1.frm
17175
$MYSQLTEST_VARDIR/master-data/test/t1.par
17177
# check prerequisites-1 success: 1
17178
# check COUNT(*) success: 1
17179
# check MIN/MAX(f_int1) success: 1
17180
# check MIN/MAX(f_int2) success: 1
17181
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17182
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17183
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17184
WHERE f_int1 IN (2,3);
17185
# check prerequisites-3 success: 1
17186
DELETE FROM t1 WHERE f_charbig = 'delete me';
17187
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17188
# check read via f_int1 success: 1
17189
# check read via f_int2 success: 1
17191
# check multiple-1 success: 1
17192
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17194
# check multiple-2 success: 1
17195
INSERT INTO t1 SELECT * FROM t0_template
17196
WHERE MOD(f_int1,3) = 0;
17198
# check multiple-3 success: 1
17199
UPDATE t1 SET f_int1 = f_int1 + @max_row
17200
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17201
AND @max_row_div2 + @max_row_div4;
17203
# check multiple-4 success: 1
17205
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17206
AND @max_row_div2 + @max_row_div4 + @max_row;
17208
# check multiple-5 success: 1
17209
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17211
SET f_int1 = @cur_value , f_int2 = @cur_value,
17212
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17213
f_charbig = '#SINGLE#';
17215
# check single-1 success: 1
17216
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17218
SET f_int1 = @cur_value , f_int2 = @cur_value,
17219
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17220
f_charbig = '#SINGLE#';
17222
# check single-2 success: 1
17223
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17224
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17225
UPDATE t1 SET f_int1 = @cur_value2
17226
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17228
# check single-3 success: 1
17229
SET @cur_value1= -1;
17230
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17231
UPDATE t1 SET f_int1 = @cur_value1
17232
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17234
# check single-4 success: 1
17235
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17236
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17238
# check single-5 success: 1
17239
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17241
# check single-6 success: 1
17242
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17244
# check single-7 success: 1
17245
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17246
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17247
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17248
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17249
f_charbig = '#NULL#';
17251
SET f_int1 = NULL , f_int2 = -@max_row,
17252
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17253
f_charbig = '#NULL#';
17254
# check null success: 1
17256
# check null-1 success: 1
17257
UPDATE t1 SET f_int1 = -@max_row
17258
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17259
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17261
# check null-2 success: 1
17262
UPDATE t1 SET f_int1 = NULL
17263
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17264
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17266
# check null-3 success: 1
17268
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17269
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17271
# check null-4 success: 1
17273
WHERE f_int1 = 0 AND f_int2 = 0
17274
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17275
AND f_charbig = '#NULL#';
17277
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17278
SELECT f_int1, f_int1, '', '', 'was inserted'
17279
FROM t0_template source_tab
17280
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17282
# check transactions-1 success: 1
17285
# check transactions-2 success: 1
17288
# check transactions-3 success: 1
17289
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17293
# check transactions-4 success: 1
17294
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17295
SELECT f_int1, f_int1, '', '', 'was inserted'
17296
FROM t0_template source_tab
17297
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17299
# check transactions-5 success: 1
17302
Warning 1196 Some non-transactional changed tables couldn't be rolled back
17304
# check transactions-6 success: 1
17305
# INFO: Storage engine used for t1 seems to be not transactional.
17308
# check transactions-7 success: 1
17309
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17311
SET @@session.sql_mode = 'traditional';
17312
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17313
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17314
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17315
'', '', 'was inserted' FROM t0_template
17316
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17317
ERROR 22012: Division by 0
17320
# check transactions-8 success: 1
17321
# INFO: Storage engine used for t1 seems to be unable to revert
17322
# changes made by the failing statement.
17323
SET @@session.sql_mode = '';
17325
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17327
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17329
# check special-1 success: 1
17330
UPDATE t1 SET f_charbig = '';
17332
# check special-2 success: 1
17333
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17334
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17335
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17336
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17337
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17338
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17339
'just inserted' FROM t0_template
17340
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17341
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17343
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17344
f_charbig = 'updated by trigger'
17345
WHERE f_int1 = new.f_int1;
17347
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17348
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17349
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17351
# check trigger-1 success: 1
17352
DROP TRIGGER trg_1;
17353
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17354
f_int2 = CAST(f_char1 AS SIGNED INT),
17355
f_charbig = 'just inserted'
17356
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17358
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17359
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17360
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17361
'just inserted' FROM t0_template
17362
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17363
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17365
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17366
f_charbig = 'updated by trigger'
17367
WHERE f_int1 = new.f_int1;
17369
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17370
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17371
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17373
# check trigger-2 success: 1
17374
DROP TRIGGER trg_1;
17375
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17376
f_int2 = CAST(f_char1 AS SIGNED INT),
17377
f_charbig = 'just inserted'
17378
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17380
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17381
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17382
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17383
'just inserted' FROM t0_template
17384
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17385
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17387
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17388
f_charbig = 'updated by trigger'
17389
WHERE f_int1 = new.f_int1;
17391
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17392
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17394
# check trigger-3 success: 1
17395
DROP TRIGGER trg_1;
17396
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17397
f_int2 = CAST(f_char1 AS SIGNED INT),
17398
f_charbig = 'just inserted'
17399
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17401
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17402
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17403
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17404
'just inserted' FROM t0_template
17405
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17406
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17408
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17409
f_charbig = 'updated by trigger'
17410
WHERE f_int1 = - old.f_int1;
17412
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17413
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17415
# check trigger-4 success: 1
17416
DROP TRIGGER trg_1;
17417
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17418
f_int2 = CAST(f_char1 AS SIGNED INT),
17419
f_charbig = 'just inserted'
17420
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17422
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17423
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17424
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17425
'just inserted' FROM t0_template
17426
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17427
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17429
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17430
f_charbig = 'updated by trigger'
17431
WHERE f_int1 = new.f_int1;
17433
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17434
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17436
# check trigger-5 success: 1
17437
DROP TRIGGER trg_1;
17438
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17439
f_int2 = CAST(f_char1 AS SIGNED INT),
17440
f_charbig = 'just inserted'
17441
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17443
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17444
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17445
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17446
'just inserted' FROM t0_template
17447
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17448
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17450
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17451
f_charbig = 'updated by trigger'
17452
WHERE f_int1 = - old.f_int1;
17454
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17455
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17457
# check trigger-6 success: 1
17458
DROP TRIGGER trg_1;
17459
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17460
f_int2 = CAST(f_char1 AS SIGNED INT),
17461
f_charbig = 'just inserted'
17462
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17464
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17465
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17466
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17467
'just inserted' FROM t0_template
17468
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17469
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17471
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17472
f_charbig = 'updated by trigger'
17473
WHERE f_int1 = - old.f_int1;
17476
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17478
# check trigger-7 success: 1
17479
DROP TRIGGER trg_1;
17480
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17481
f_int2 = CAST(f_char1 AS SIGNED INT),
17482
f_charbig = 'just inserted'
17483
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17485
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17486
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17487
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17488
'just inserted' FROM t0_template
17489
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17490
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17492
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17493
f_charbig = 'updated by trigger'
17494
WHERE f_int1 = - old.f_int1;
17497
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17499
# check trigger-8 success: 1
17500
DROP TRIGGER trg_1;
17501
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17502
f_int2 = CAST(f_char1 AS SIGNED INT),
17503
f_charbig = 'just inserted'
17504
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17506
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17508
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17509
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17511
SET new.f_int1 = old.f_int1 + @max_row,
17512
new.f_int2 = old.f_int2 - @max_row,
17513
new.f_charbig = '####updated per update trigger####';
17516
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17517
f_charbig = '####updated per update statement itself####';
17519
# check trigger-9 success: 1
17520
DROP TRIGGER trg_2;
17521
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17522
f_int2 = CAST(f_char1 AS SIGNED INT),
17523
f_charbig = CONCAT('===',f_char1,'===');
17524
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17526
SET new.f_int1 = new.f_int1 + @max_row,
17527
new.f_int2 = new.f_int2 - @max_row,
17528
new.f_charbig = '####updated per update trigger####';
17531
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17532
f_charbig = '####updated per update statement itself####';
17534
# check trigger-10 success: 1
17535
DROP TRIGGER trg_2;
17536
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17537
f_int2 = CAST(f_char1 AS SIGNED INT),
17538
f_charbig = CONCAT('===',f_char1,'===');
17539
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17541
SET new.f_int1 = @my_max1 + @counter,
17542
new.f_int2 = @my_min2 - @counter,
17543
new.f_charbig = '####updated per insert trigger####';
17544
SET @counter = @counter + 1;
17547
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17548
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17549
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17550
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17551
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17553
DROP TRIGGER trg_3;
17555
# check trigger-11 success: 1
17557
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17558
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17559
AND f_charbig = '####updated per insert trigger####';
17560
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17562
SET new.f_int1 = @my_max1 + @counter,
17563
new.f_int2 = @my_min2 - @counter,
17564
new.f_charbig = '####updated per insert trigger####';
17565
SET @counter = @counter + 1;
17568
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17569
INSERT INTO t1 (f_char1, f_char2, f_charbig)
17570
SELECT CAST(f_int1 AS CHAR),
17571
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17572
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17574
DROP TRIGGER trg_3;
17576
# check trigger-12 success: 1
17578
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17579
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17580
AND f_charbig = '####updated per insert trigger####';
17582
Table Op Msg_type Msg_text
17583
test.t1 analyze note The storage engine for the table doesn't support analyze
17584
CHECK TABLE t1 EXTENDED;
17585
Table Op Msg_type Msg_text
17586
test.t1 check note The storage engine for the table doesn't support check
17587
CHECKSUM TABLE t1 EXTENDED;
17589
test.t1 <some_value>
17591
Table Op Msg_type Msg_text
17592
test.t1 optimize note The storage engine for the table doesn't support optimize
17593
# check layout success: 1
17594
REPAIR TABLE t1 EXTENDED;
17595
Table Op Msg_type Msg_text
17596
test.t1 repair note The storage engine for the table doesn't support repair
17597
# check layout success: 1
17600
# check TRUNCATE success: 1
17601
# check layout success: 1
17602
# End usability test (inc/partition_check.inc)
17609
f_charbig VARCHAR(1000)
17610
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
17612
PARTITION BY KEY(f_int1) PARTITIONS 5;
17613
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17614
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17615
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17616
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
17617
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17618
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17619
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17620
# Start usability test (inc/partition_check.inc)
17622
SHOW CREATE TABLE t1;
17624
t1 CREATE TABLE `t1` (
17625
`f_int1` int(11) DEFAULT NULL,
17626
`f_int2` int(11) DEFAULT NULL,
17627
`f_char1` char(20) DEFAULT NULL,
17628
`f_char2` char(20) DEFAULT NULL,
17629
`f_charbig` varchar(1000) DEFAULT NULL
17630
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) PARTITIONS 5 */
17633
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
17634
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
17635
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
17636
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
17637
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYD
17638
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYI
17639
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYD
17640
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYI
17641
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYD
17642
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYI
17643
$MYSQLTEST_VARDIR/master-data/test/t1.frm
17644
$MYSQLTEST_VARDIR/master-data/test/t1.par
17646
# check prerequisites-1 success: 1
17647
# check COUNT(*) success: 1
17648
# check MIN/MAX(f_int1) success: 1
17649
# check MIN/MAX(f_int2) success: 1
17650
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17651
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17652
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17653
WHERE f_int1 IN (2,3);
17654
# check prerequisites-3 success: 1
17655
DELETE FROM t1 WHERE f_charbig = 'delete me';
17656
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17657
# check read via f_int1 success: 1
17658
# check read via f_int2 success: 1
17660
# check multiple-1 success: 1
17661
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17663
# check multiple-2 success: 1
17664
INSERT INTO t1 SELECT * FROM t0_template
17665
WHERE MOD(f_int1,3) = 0;
17667
# check multiple-3 success: 1
17668
UPDATE t1 SET f_int1 = f_int1 + @max_row
17669
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17670
AND @max_row_div2 + @max_row_div4;
17672
# check multiple-4 success: 1
17674
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17675
AND @max_row_div2 + @max_row_div4 + @max_row;
17677
# check multiple-5 success: 1
17678
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17680
SET f_int1 = @cur_value , f_int2 = @cur_value,
17681
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17682
f_charbig = '#SINGLE#';
17684
# check single-1 success: 1
17685
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17687
SET f_int1 = @cur_value , f_int2 = @cur_value,
17688
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17689
f_charbig = '#SINGLE#';
17691
# check single-2 success: 1
17692
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17693
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17694
UPDATE t1 SET f_int1 = @cur_value2
17695
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17697
# check single-3 success: 1
17698
SET @cur_value1= -1;
17699
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17700
UPDATE t1 SET f_int1 = @cur_value1
17701
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17703
# check single-4 success: 1
17704
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17705
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17707
# check single-5 success: 1
17708
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17710
# check single-6 success: 1
17711
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17713
# check single-7 success: 1
17714
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17715
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17716
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17717
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17718
f_charbig = '#NULL#';
17720
SET f_int1 = NULL , f_int2 = -@max_row,
17721
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17722
f_charbig = '#NULL#';
17723
# check null success: 1
17725
# check null-1 success: 1
17726
UPDATE t1 SET f_int1 = -@max_row
17727
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17728
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17730
# check null-2 success: 1
17731
UPDATE t1 SET f_int1 = NULL
17732
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17733
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17735
# check null-3 success: 1
17737
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17738
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17740
# check null-4 success: 1
17742
WHERE f_int1 = 0 AND f_int2 = 0
17743
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17744
AND f_charbig = '#NULL#';
17746
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17747
SELECT f_int1, f_int1, '', '', 'was inserted'
17748
FROM t0_template source_tab
17749
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17751
# check transactions-1 success: 1
17754
# check transactions-2 success: 1
17757
# check transactions-3 success: 1
17758
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17762
# check transactions-4 success: 1
17763
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17764
SELECT f_int1, f_int1, '', '', 'was inserted'
17765
FROM t0_template source_tab
17766
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17768
# check transactions-5 success: 1
17771
Warning 1196 Some non-transactional changed tables couldn't be rolled back
17773
# check transactions-6 success: 1
17774
# INFO: Storage engine used for t1 seems to be not transactional.
17777
# check transactions-7 success: 1
17778
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17780
SET @@session.sql_mode = 'traditional';
17781
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17782
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17783
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17784
'', '', 'was inserted' FROM t0_template
17785
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17786
ERROR 22012: Division by 0
17789
# check transactions-8 success: 1
17790
# INFO: Storage engine used for t1 seems to be unable to revert
17791
# changes made by the failing statement.
17792
SET @@session.sql_mode = '';
17794
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17796
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17798
# check special-1 success: 1
17799
UPDATE t1 SET f_charbig = '';
17801
# check special-2 success: 1
17802
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17803
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17804
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17805
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17806
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17807
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17808
'just inserted' FROM t0_template
17809
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17810
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17812
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17813
f_charbig = 'updated by trigger'
17814
WHERE f_int1 = new.f_int1;
17816
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17817
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17818
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17820
# check trigger-1 success: 1
17821
DROP TRIGGER trg_1;
17822
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17823
f_int2 = CAST(f_char1 AS SIGNED INT),
17824
f_charbig = 'just inserted'
17825
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17827
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17828
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17829
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17830
'just inserted' FROM t0_template
17831
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17832
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17834
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17835
f_charbig = 'updated by trigger'
17836
WHERE f_int1 = new.f_int1;
17838
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17839
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17840
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17842
# check trigger-2 success: 1
17843
DROP TRIGGER trg_1;
17844
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17845
f_int2 = CAST(f_char1 AS SIGNED INT),
17846
f_charbig = 'just inserted'
17847
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17849
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17850
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17851
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17852
'just inserted' FROM t0_template
17853
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17854
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17856
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17857
f_charbig = 'updated by trigger'
17858
WHERE f_int1 = new.f_int1;
17860
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17861
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17863
# check trigger-3 success: 1
17864
DROP TRIGGER trg_1;
17865
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17866
f_int2 = CAST(f_char1 AS SIGNED INT),
17867
f_charbig = 'just inserted'
17868
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17870
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17871
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17872
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17873
'just inserted' FROM t0_template
17874
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17875
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17877
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17878
f_charbig = 'updated by trigger'
17879
WHERE f_int1 = - old.f_int1;
17881
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17882
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17884
# check trigger-4 success: 1
17885
DROP TRIGGER trg_1;
17886
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17887
f_int2 = CAST(f_char1 AS SIGNED INT),
17888
f_charbig = 'just inserted'
17889
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17891
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17892
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17893
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17894
'just inserted' FROM t0_template
17895
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17896
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17898
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17899
f_charbig = 'updated by trigger'
17900
WHERE f_int1 = new.f_int1;
17902
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17903
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17905
# check trigger-5 success: 1
17906
DROP TRIGGER trg_1;
17907
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17908
f_int2 = CAST(f_char1 AS SIGNED INT),
17909
f_charbig = 'just inserted'
17910
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17912
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17913
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17914
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17915
'just inserted' FROM t0_template
17916
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17917
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17919
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17920
f_charbig = 'updated by trigger'
17921
WHERE f_int1 = - old.f_int1;
17923
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17924
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17926
# check trigger-6 success: 1
17927
DROP TRIGGER trg_1;
17928
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17929
f_int2 = CAST(f_char1 AS SIGNED INT),
17930
f_charbig = 'just inserted'
17931
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17933
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17934
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17935
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17936
'just inserted' FROM t0_template
17937
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17938
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17940
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17941
f_charbig = 'updated by trigger'
17942
WHERE f_int1 = - old.f_int1;
17945
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17947
# check trigger-7 success: 1
17948
DROP TRIGGER trg_1;
17949
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17950
f_int2 = CAST(f_char1 AS SIGNED INT),
17951
f_charbig = 'just inserted'
17952
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17954
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17955
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17956
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17957
'just inserted' FROM t0_template
17958
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17959
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17961
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17962
f_charbig = 'updated by trigger'
17963
WHERE f_int1 = - old.f_int1;
17966
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17968
# check trigger-8 success: 1
17969
DROP TRIGGER trg_1;
17970
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17971
f_int2 = CAST(f_char1 AS SIGNED INT),
17972
f_charbig = 'just inserted'
17973
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17975
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17977
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17978
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17980
SET new.f_int1 = old.f_int1 + @max_row,
17981
new.f_int2 = old.f_int2 - @max_row,
17982
new.f_charbig = '####updated per update trigger####';
17985
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17986
f_charbig = '####updated per update statement itself####';
17988
# check trigger-9 success: 1
17989
DROP TRIGGER trg_2;
17990
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17991
f_int2 = CAST(f_char1 AS SIGNED INT),
17992
f_charbig = CONCAT('===',f_char1,'===');
17993
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17995
SET new.f_int1 = new.f_int1 + @max_row,
17996
new.f_int2 = new.f_int2 - @max_row,
17997
new.f_charbig = '####updated per update trigger####';
18000
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18001
f_charbig = '####updated per update statement itself####';
18003
# check trigger-10 success: 1
18004
DROP TRIGGER trg_2;
18005
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18006
f_int2 = CAST(f_char1 AS SIGNED INT),
18007
f_charbig = CONCAT('===',f_char1,'===');
18008
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18010
SET new.f_int1 = @my_max1 + @counter,
18011
new.f_int2 = @my_min2 - @counter,
18012
new.f_charbig = '####updated per insert trigger####';
18013
SET @counter = @counter + 1;
18016
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18017
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18018
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18019
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18020
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18022
DROP TRIGGER trg_3;
18024
# check trigger-11 success: 1
18026
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18027
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18028
AND f_charbig = '####updated per insert trigger####';
18029
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18031
SET new.f_int1 = @my_max1 + @counter,
18032
new.f_int2 = @my_min2 - @counter,
18033
new.f_charbig = '####updated per insert trigger####';
18034
SET @counter = @counter + 1;
18037
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18038
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18039
SELECT CAST(f_int1 AS CHAR),
18040
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18041
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18043
DROP TRIGGER trg_3;
18045
# check trigger-12 success: 1
18047
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18048
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18049
AND f_charbig = '####updated per insert trigger####';
18051
Table Op Msg_type Msg_text
18052
test.t1 analyze note The storage engine for the table doesn't support analyze
18053
CHECK TABLE t1 EXTENDED;
18054
Table Op Msg_type Msg_text
18055
test.t1 check note The storage engine for the table doesn't support check
18056
CHECKSUM TABLE t1 EXTENDED;
18058
test.t1 <some_value>
18060
Table Op Msg_type Msg_text
18061
test.t1 optimize note The storage engine for the table doesn't support optimize
18062
# check layout success: 1
18063
REPAIR TABLE t1 EXTENDED;
18064
Table Op Msg_type Msg_text
18065
test.t1 repair note The storage engine for the table doesn't support repair
18066
# check layout success: 1
18069
# check TRUNCATE success: 1
18070
# check layout success: 1
18071
# End usability test (inc/partition_check.inc)
18078
f_charbig VARCHAR(1000)
18079
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
18081
PARTITION BY LIST(MOD(f_int1,4))
18082
(PARTITION part_3 VALUES IN (-3),
18083
PARTITION part_2 VALUES IN (-2),
18084
PARTITION part_1 VALUES IN (-1),
18085
PARTITION part_N VALUES IN (NULL),
18086
PARTITION part0 VALUES IN (0),
18087
PARTITION part1 VALUES IN (1),
18088
PARTITION part2 VALUES IN (2),
18089
PARTITION part3 VALUES IN (3));
18090
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18091
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18092
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18093
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
18094
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18095
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18096
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18097
# Start usability test (inc/partition_check.inc)
18099
SHOW CREATE TABLE t1;
18101
t1 CREATE TABLE `t1` (
18102
`f_int1` int(11) DEFAULT NULL,
18103
`f_int2` int(11) DEFAULT NULL,
18104
`f_char1` char(20) DEFAULT NULL,
18105
`f_char2` char(20) DEFAULT NULL,
18106
`f_charbig` varchar(1000) DEFAULT NULL
18107
) 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) */
18110
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD
18111
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI
18112
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD
18113
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI
18114
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD
18115
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI
18116
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD
18117
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI
18118
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD
18119
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI
18120
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD
18121
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI
18122
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD
18123
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI
18124
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD
18125
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI
18126
$MYSQLTEST_VARDIR/master-data/test/t1.frm
18127
$MYSQLTEST_VARDIR/master-data/test/t1.par
18129
# check prerequisites-1 success: 1
18130
# check COUNT(*) success: 1
18131
# check MIN/MAX(f_int1) success: 1
18132
# check MIN/MAX(f_int2) success: 1
18133
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18134
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18135
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18136
WHERE f_int1 IN (2,3);
18137
# check prerequisites-3 success: 1
18138
DELETE FROM t1 WHERE f_charbig = 'delete me';
18139
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
18140
# check read via f_int1 success: 1
18141
# check read via f_int2 success: 1
18143
# check multiple-1 success: 1
18144
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18146
# check multiple-2 success: 1
18147
INSERT INTO t1 SELECT * FROM t0_template
18148
WHERE MOD(f_int1,3) = 0;
18150
# check multiple-3 success: 1
18151
UPDATE t1 SET f_int1 = f_int1 + @max_row
18152
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18153
AND @max_row_div2 + @max_row_div4;
18155
# check multiple-4 success: 1
18157
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18158
AND @max_row_div2 + @max_row_div4 + @max_row;
18160
# check multiple-5 success: 1
18161
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18163
SET f_int1 = @cur_value , f_int2 = @cur_value,
18164
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18165
f_charbig = '#SINGLE#';
18167
# check single-1 success: 1
18168
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18170
SET f_int1 = @cur_value , f_int2 = @cur_value,
18171
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18172
f_charbig = '#SINGLE#';
18174
# check single-2 success: 1
18175
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18176
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18177
UPDATE t1 SET f_int1 = @cur_value2
18178
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18180
# check single-3 success: 1
18181
SET @cur_value1= -1;
18182
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18183
UPDATE t1 SET f_int1 = @cur_value1
18184
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18186
# check single-4 success: 1
18187
SELECT MAX(f_int1) INTO @cur_value FROM t1;
18188
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18190
# check single-5 success: 1
18191
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18193
# check single-6 success: 1
18194
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18196
# check single-7 success: 1
18197
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18198
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18199
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18200
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18201
f_charbig = '#NULL#';
18203
SET f_int1 = NULL , f_int2 = -@max_row,
18204
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18205
f_charbig = '#NULL#';
18206
# check null success: 1
18208
# check null-1 success: 1
18209
UPDATE t1 SET f_int1 = -@max_row
18210
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18211
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18213
# check null-2 success: 1
18214
UPDATE t1 SET f_int1 = NULL
18215
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18216
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18218
# check null-3 success: 1
18220
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18221
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18223
# check null-4 success: 1
18225
WHERE f_int1 = 0 AND f_int2 = 0
18226
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18227
AND f_charbig = '#NULL#';
18229
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18230
SELECT f_int1, f_int1, '', '', 'was inserted'
18231
FROM t0_template source_tab
18232
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18234
# check transactions-1 success: 1
18237
# check transactions-2 success: 1
18240
# check transactions-3 success: 1
18241
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18245
# check transactions-4 success: 1
18246
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18247
SELECT f_int1, f_int1, '', '', 'was inserted'
18248
FROM t0_template source_tab
18249
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18251
# check transactions-5 success: 1
18254
Warning 1196 Some non-transactional changed tables couldn't be rolled back
18256
# check transactions-6 success: 1
18257
# INFO: Storage engine used for t1 seems to be not transactional.
18260
# check transactions-7 success: 1
18261
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18263
SET @@session.sql_mode = 'traditional';
18264
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18265
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18266
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18267
'', '', 'was inserted' FROM t0_template
18268
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18269
ERROR 22012: Division by 0
18272
# check transactions-8 success: 1
18273
# INFO: Storage engine used for t1 seems to be unable to revert
18274
# changes made by the failing statement.
18275
SET @@session.sql_mode = '';
18277
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18279
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18281
# check special-1 success: 1
18282
UPDATE t1 SET f_charbig = '';
18284
# check special-2 success: 1
18285
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18286
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18287
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18288
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18289
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18290
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18291
'just inserted' FROM t0_template
18292
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18293
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18295
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18296
f_charbig = 'updated by trigger'
18297
WHERE f_int1 = new.f_int1;
18299
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18300
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18301
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18303
# check trigger-1 success: 1
18304
DROP TRIGGER trg_1;
18305
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18306
f_int2 = CAST(f_char1 AS SIGNED INT),
18307
f_charbig = 'just inserted'
18308
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18310
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18311
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18312
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18313
'just inserted' FROM t0_template
18314
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18315
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18317
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18318
f_charbig = 'updated by trigger'
18319
WHERE f_int1 = new.f_int1;
18321
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18322
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18323
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18325
# check trigger-2 success: 1
18326
DROP TRIGGER trg_1;
18327
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18328
f_int2 = CAST(f_char1 AS SIGNED INT),
18329
f_charbig = 'just inserted'
18330
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18332
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18333
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18334
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18335
'just inserted' FROM t0_template
18336
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18337
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18339
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18340
f_charbig = 'updated by trigger'
18341
WHERE f_int1 = new.f_int1;
18343
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18344
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18346
# check trigger-3 success: 1
18347
DROP TRIGGER trg_1;
18348
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18349
f_int2 = CAST(f_char1 AS SIGNED INT),
18350
f_charbig = 'just inserted'
18351
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18353
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18354
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18355
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18356
'just inserted' FROM t0_template
18357
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18358
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18360
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18361
f_charbig = 'updated by trigger'
18362
WHERE f_int1 = - old.f_int1;
18364
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18365
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18367
# check trigger-4 success: 1
18368
DROP TRIGGER trg_1;
18369
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18370
f_int2 = CAST(f_char1 AS SIGNED INT),
18371
f_charbig = 'just inserted'
18372
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18374
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18375
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18376
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18377
'just inserted' FROM t0_template
18378
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18379
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18381
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18382
f_charbig = 'updated by trigger'
18383
WHERE f_int1 = new.f_int1;
18385
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18386
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18388
# check trigger-5 success: 1
18389
DROP TRIGGER trg_1;
18390
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18391
f_int2 = CAST(f_char1 AS SIGNED INT),
18392
f_charbig = 'just inserted'
18393
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18395
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18396
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18397
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18398
'just inserted' FROM t0_template
18399
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18400
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18402
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18403
f_charbig = 'updated by trigger'
18404
WHERE f_int1 = - old.f_int1;
18406
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18407
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18409
# check trigger-6 success: 1
18410
DROP TRIGGER trg_1;
18411
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18412
f_int2 = CAST(f_char1 AS SIGNED INT),
18413
f_charbig = 'just inserted'
18414
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18416
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18417
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18418
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18419
'just inserted' FROM t0_template
18420
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18421
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18423
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18424
f_charbig = 'updated by trigger'
18425
WHERE f_int1 = - old.f_int1;
18428
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18430
# check trigger-7 success: 1
18431
DROP TRIGGER trg_1;
18432
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18433
f_int2 = CAST(f_char1 AS SIGNED INT),
18434
f_charbig = 'just inserted'
18435
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18437
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18438
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18439
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18440
'just inserted' FROM t0_template
18441
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18442
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18444
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18445
f_charbig = 'updated by trigger'
18446
WHERE f_int1 = - old.f_int1;
18449
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18451
# check trigger-8 success: 1
18452
DROP TRIGGER trg_1;
18453
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18454
f_int2 = CAST(f_char1 AS SIGNED INT),
18455
f_charbig = 'just inserted'
18456
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18458
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18460
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18461
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18463
SET new.f_int1 = old.f_int1 + @max_row,
18464
new.f_int2 = old.f_int2 - @max_row,
18465
new.f_charbig = '####updated per update trigger####';
18468
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18469
f_charbig = '####updated per update statement itself####';
18471
# check trigger-9 success: 1
18472
DROP TRIGGER trg_2;
18473
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18474
f_int2 = CAST(f_char1 AS SIGNED INT),
18475
f_charbig = CONCAT('===',f_char1,'===');
18476
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18478
SET new.f_int1 = new.f_int1 + @max_row,
18479
new.f_int2 = new.f_int2 - @max_row,
18480
new.f_charbig = '####updated per update trigger####';
18483
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18484
f_charbig = '####updated per update statement itself####';
18486
# check trigger-10 success: 1
18487
DROP TRIGGER trg_2;
18488
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18489
f_int2 = CAST(f_char1 AS SIGNED INT),
18490
f_charbig = CONCAT('===',f_char1,'===');
18491
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18493
SET new.f_int1 = @my_max1 + @counter,
18494
new.f_int2 = @my_min2 - @counter,
18495
new.f_charbig = '####updated per insert trigger####';
18496
SET @counter = @counter + 1;
18499
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18500
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18501
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18502
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18503
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18505
DROP TRIGGER trg_3;
18507
# check trigger-11 success: 1
18509
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18510
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18511
AND f_charbig = '####updated per insert trigger####';
18512
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18514
SET new.f_int1 = @my_max1 + @counter,
18515
new.f_int2 = @my_min2 - @counter,
18516
new.f_charbig = '####updated per insert trigger####';
18517
SET @counter = @counter + 1;
18520
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18521
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18522
SELECT CAST(f_int1 AS CHAR),
18523
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18524
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18526
DROP TRIGGER trg_3;
18528
# check trigger-12 success: 1
18530
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18531
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18532
AND f_charbig = '####updated per insert trigger####';
18534
Table Op Msg_type Msg_text
18535
test.t1 analyze note The storage engine for the table doesn't support analyze
18536
CHECK TABLE t1 EXTENDED;
18537
Table Op Msg_type Msg_text
18538
test.t1 check note The storage engine for the table doesn't support check
18539
CHECKSUM TABLE t1 EXTENDED;
18541
test.t1 <some_value>
18543
Table Op Msg_type Msg_text
18544
test.t1 optimize note The storage engine for the table doesn't support optimize
18545
# check layout success: 1
18546
REPAIR TABLE t1 EXTENDED;
18547
Table Op Msg_type Msg_text
18548
test.t1 repair note The storage engine for the table doesn't support repair
18549
# check layout success: 1
18552
# check TRUNCATE success: 1
18553
# check layout success: 1
18554
# End usability test (inc/partition_check.inc)
18561
f_charbig VARCHAR(1000)
18562
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
18564
PARTITION BY RANGE(f_int1)
18565
(PARTITION parta VALUES LESS THAN (0),
18566
PARTITION partb VALUES LESS THAN (5),
18567
PARTITION partc VALUES LESS THAN (10),
18568
PARTITION partd VALUES LESS THAN (10 + 5),
18569
PARTITION parte VALUES LESS THAN (20),
18570
PARTITION partf VALUES LESS THAN (2147483646));
18571
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18572
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18573
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18574
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
18575
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18576
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18577
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18578
# Start usability test (inc/partition_check.inc)
18580
SHOW CREATE TABLE t1;
18582
t1 CREATE TABLE `t1` (
18583
`f_int1` int(11) DEFAULT NULL,
18584
`f_int2` int(11) DEFAULT NULL,
18585
`f_char1` char(20) DEFAULT NULL,
18586
`f_char2` char(20) DEFAULT NULL,
18587
`f_charbig` varchar(1000) DEFAULT NULL
18588
) 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) */
18591
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD
18592
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI
18593
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYD
18594
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYI
18595
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYD
18596
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYI
18597
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYD
18598
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYI
18599
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYD
18600
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYI
18601
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYD
18602
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYI
18603
$MYSQLTEST_VARDIR/master-data/test/t1.frm
18604
$MYSQLTEST_VARDIR/master-data/test/t1.par
18606
# check prerequisites-1 success: 1
18607
# check COUNT(*) success: 1
18608
# check MIN/MAX(f_int1) success: 1
18609
# check MIN/MAX(f_int2) success: 1
18610
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18611
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18612
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18613
WHERE f_int1 IN (2,3);
18614
# check prerequisites-3 success: 1
18615
DELETE FROM t1 WHERE f_charbig = 'delete me';
18616
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
18617
# check read via f_int1 success: 1
18618
# check read via f_int2 success: 1
18620
# check multiple-1 success: 1
18621
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18623
# check multiple-2 success: 1
18624
INSERT INTO t1 SELECT * FROM t0_template
18625
WHERE MOD(f_int1,3) = 0;
18627
# check multiple-3 success: 1
18628
UPDATE t1 SET f_int1 = f_int1 + @max_row
18629
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18630
AND @max_row_div2 + @max_row_div4;
18632
# check multiple-4 success: 1
18634
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18635
AND @max_row_div2 + @max_row_div4 + @max_row;
18637
# check multiple-5 success: 1
18638
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18640
SET f_int1 = @cur_value , f_int2 = @cur_value,
18641
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18642
f_charbig = '#SINGLE#';
18644
# check single-1 success: 1
18645
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18647
SET f_int1 = @cur_value , f_int2 = @cur_value,
18648
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18649
f_charbig = '#SINGLE#';
18651
# check single-2 success: 1
18652
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18653
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18654
UPDATE t1 SET f_int1 = @cur_value2
18655
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18657
# check single-3 success: 1
18658
SET @cur_value1= -1;
18659
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18660
UPDATE t1 SET f_int1 = @cur_value1
18661
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18663
# check single-4 success: 1
18664
SELECT MAX(f_int1) INTO @cur_value FROM t1;
18665
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18667
# check single-5 success: 1
18668
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18670
# check single-6 success: 1
18671
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18672
ERROR HY000: Table has no partition for value 2147483647
18673
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18674
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18675
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18676
f_charbig = '#NULL#';
18678
SET f_int1 = NULL , f_int2 = -@max_row,
18679
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18680
f_charbig = '#NULL#';
18681
# check null success: 1
18683
# check null-1 success: 1
18684
UPDATE t1 SET f_int1 = -@max_row
18685
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18686
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18688
# check null-2 success: 1
18689
UPDATE t1 SET f_int1 = NULL
18690
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18691
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18693
# check null-3 success: 1
18695
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18696
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18698
# check null-4 success: 1
18700
WHERE f_int1 = 0 AND f_int2 = 0
18701
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18702
AND f_charbig = '#NULL#';
18704
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18705
SELECT f_int1, f_int1, '', '', 'was inserted'
18706
FROM t0_template source_tab
18707
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18709
# check transactions-1 success: 1
18712
# check transactions-2 success: 1
18715
# check transactions-3 success: 1
18716
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18720
# check transactions-4 success: 1
18721
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18722
SELECT f_int1, f_int1, '', '', 'was inserted'
18723
FROM t0_template source_tab
18724
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18726
# check transactions-5 success: 1
18729
Warning 1196 Some non-transactional changed tables couldn't be rolled back
18731
# check transactions-6 success: 1
18732
# INFO: Storage engine used for t1 seems to be not transactional.
18735
# check transactions-7 success: 1
18736
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18738
SET @@session.sql_mode = 'traditional';
18739
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18740
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18741
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18742
'', '', 'was inserted' FROM t0_template
18743
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18744
ERROR 22012: Division by 0
18747
# check transactions-8 success: 1
18748
# INFO: Storage engine used for t1 seems to be unable to revert
18749
# changes made by the failing statement.
18750
SET @@session.sql_mode = '';
18752
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18754
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18756
# check special-1 success: 1
18757
UPDATE t1 SET f_charbig = '';
18759
# check special-2 success: 1
18760
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18761
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18762
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18763
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18764
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18765
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18766
'just inserted' FROM t0_template
18767
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18768
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18770
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18771
f_charbig = 'updated by trigger'
18772
WHERE f_int1 = new.f_int1;
18774
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18775
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18776
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18778
# check trigger-1 success: 1
18779
DROP TRIGGER trg_1;
18780
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18781
f_int2 = CAST(f_char1 AS SIGNED INT),
18782
f_charbig = 'just inserted'
18783
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18785
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18786
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18787
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18788
'just inserted' FROM t0_template
18789
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18790
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18792
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18793
f_charbig = 'updated by trigger'
18794
WHERE f_int1 = new.f_int1;
18796
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18797
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18798
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18800
# check trigger-2 success: 1
18801
DROP TRIGGER trg_1;
18802
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18803
f_int2 = CAST(f_char1 AS SIGNED INT),
18804
f_charbig = 'just inserted'
18805
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18807
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18808
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18809
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18810
'just inserted' FROM t0_template
18811
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18812
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18814
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18815
f_charbig = 'updated by trigger'
18816
WHERE f_int1 = new.f_int1;
18818
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18819
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18821
# check trigger-3 success: 1
18822
DROP TRIGGER trg_1;
18823
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18824
f_int2 = CAST(f_char1 AS SIGNED INT),
18825
f_charbig = 'just inserted'
18826
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18828
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18829
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18830
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18831
'just inserted' FROM t0_template
18832
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18833
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18835
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18836
f_charbig = 'updated by trigger'
18837
WHERE f_int1 = - old.f_int1;
18839
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18840
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18842
# check trigger-4 success: 1
18843
DROP TRIGGER trg_1;
18844
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18845
f_int2 = CAST(f_char1 AS SIGNED INT),
18846
f_charbig = 'just inserted'
18847
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18849
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18850
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18851
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18852
'just inserted' FROM t0_template
18853
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18854
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18856
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18857
f_charbig = 'updated by trigger'
18858
WHERE f_int1 = new.f_int1;
18860
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18861
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18863
# check trigger-5 success: 1
18864
DROP TRIGGER trg_1;
18865
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18866
f_int2 = CAST(f_char1 AS SIGNED INT),
18867
f_charbig = 'just inserted'
18868
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18870
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18871
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18872
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18873
'just inserted' FROM t0_template
18874
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18875
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18877
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18878
f_charbig = 'updated by trigger'
18879
WHERE f_int1 = - old.f_int1;
18881
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18882
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18884
# check trigger-6 success: 1
18885
DROP TRIGGER trg_1;
18886
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18887
f_int2 = CAST(f_char1 AS SIGNED INT),
18888
f_charbig = 'just inserted'
18889
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18891
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18892
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18893
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18894
'just inserted' FROM t0_template
18895
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18896
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18898
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18899
f_charbig = 'updated by trigger'
18900
WHERE f_int1 = - old.f_int1;
18903
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18905
# check trigger-7 success: 1
18906
DROP TRIGGER trg_1;
18907
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18908
f_int2 = CAST(f_char1 AS SIGNED INT),
18909
f_charbig = 'just inserted'
18910
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18912
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18913
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18914
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18915
'just inserted' FROM t0_template
18916
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18917
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18919
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18920
f_charbig = 'updated by trigger'
18921
WHERE f_int1 = - old.f_int1;
18924
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18926
# check trigger-8 success: 1
18927
DROP TRIGGER trg_1;
18928
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18929
f_int2 = CAST(f_char1 AS SIGNED INT),
18930
f_charbig = 'just inserted'
18931
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18933
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18935
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18936
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18938
SET new.f_int1 = old.f_int1 + @max_row,
18939
new.f_int2 = old.f_int2 - @max_row,
18940
new.f_charbig = '####updated per update trigger####';
18943
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18944
f_charbig = '####updated per update statement itself####';
18946
# check trigger-9 success: 1
18947
DROP TRIGGER trg_2;
18948
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18949
f_int2 = CAST(f_char1 AS SIGNED INT),
18950
f_charbig = CONCAT('===',f_char1,'===');
18951
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18953
SET new.f_int1 = new.f_int1 + @max_row,
18954
new.f_int2 = new.f_int2 - @max_row,
18955
new.f_charbig = '####updated per update trigger####';
18958
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18959
f_charbig = '####updated per update statement itself####';
18961
# check trigger-10 success: 1
18962
DROP TRIGGER trg_2;
18963
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18964
f_int2 = CAST(f_char1 AS SIGNED INT),
18965
f_charbig = CONCAT('===',f_char1,'===');
18966
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18968
SET new.f_int1 = @my_max1 + @counter,
18969
new.f_int2 = @my_min2 - @counter,
18970
new.f_charbig = '####updated per insert trigger####';
18971
SET @counter = @counter + 1;
18974
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18975
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18976
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18977
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18978
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18980
DROP TRIGGER trg_3;
18982
# check trigger-11 success: 1
18984
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18985
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18986
AND f_charbig = '####updated per insert trigger####';
18987
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18989
SET new.f_int1 = @my_max1 + @counter,
18990
new.f_int2 = @my_min2 - @counter,
18991
new.f_charbig = '####updated per insert trigger####';
18992
SET @counter = @counter + 1;
18995
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18996
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18997
SELECT CAST(f_int1 AS CHAR),
18998
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18999
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19001
DROP TRIGGER trg_3;
19003
# check trigger-12 success: 1
19005
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19006
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19007
AND f_charbig = '####updated per insert trigger####';
19009
Table Op Msg_type Msg_text
19010
test.t1 analyze note The storage engine for the table doesn't support analyze
19011
CHECK TABLE t1 EXTENDED;
19012
Table Op Msg_type Msg_text
19013
test.t1 check note The storage engine for the table doesn't support check
19014
CHECKSUM TABLE t1 EXTENDED;
19016
test.t1 <some_value>
19018
Table Op Msg_type Msg_text
19019
test.t1 optimize note The storage engine for the table doesn't support optimize
19020
# check layout success: 1
19021
REPAIR TABLE t1 EXTENDED;
19022
Table Op Msg_type Msg_text
19023
test.t1 repair note The storage engine for the table doesn't support repair
19024
# check layout success: 1
19027
# check TRUNCATE success: 1
19028
# check layout success: 1
19029
# End usability test (inc/partition_check.inc)
19036
f_charbig VARCHAR(1000)
19037
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
19039
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
19040
(PARTITION parta VALUES LESS THAN (0),
19041
PARTITION partb VALUES LESS THAN (5),
19042
PARTITION partc VALUES LESS THAN (10),
19043
PARTITION partd VALUES LESS THAN (2147483646));
19044
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19045
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19046
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19047
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
19048
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19049
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19050
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19051
# Start usability test (inc/partition_check.inc)
19053
SHOW CREATE TABLE t1;
19055
t1 CREATE TABLE `t1` (
19056
`f_int1` int(11) DEFAULT NULL,
19057
`f_int2` int(11) DEFAULT NULL,
19058
`f_char1` char(20) DEFAULT NULL,
19059
`f_char2` char(20) DEFAULT NULL,
19060
`f_charbig` varchar(1000) DEFAULT NULL
19061
) 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) */
19064
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYD
19065
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYI
19066
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYD
19067
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYI
19068
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYD
19069
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYI
19070
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYD
19071
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYI
19072
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYD
19073
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYI
19074
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYD
19075
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYI
19076
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYD
19077
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYI
19078
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYD
19079
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYI
19080
$MYSQLTEST_VARDIR/master-data/test/t1.frm
19081
$MYSQLTEST_VARDIR/master-data/test/t1.par
19083
# check prerequisites-1 success: 1
19084
# check COUNT(*) success: 1
19085
# check MIN/MAX(f_int1) success: 1
19086
# check MIN/MAX(f_int2) success: 1
19087
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19088
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19089
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19090
WHERE f_int1 IN (2,3);
19091
# check prerequisites-3 success: 1
19092
DELETE FROM t1 WHERE f_charbig = 'delete me';
19093
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
19094
# check read via f_int1 success: 1
19095
# check read via f_int2 success: 1
19097
# check multiple-1 success: 1
19098
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19100
# check multiple-2 success: 1
19101
INSERT INTO t1 SELECT * FROM t0_template
19102
WHERE MOD(f_int1,3) = 0;
19104
# check multiple-3 success: 1
19105
UPDATE t1 SET f_int1 = f_int1 + @max_row
19106
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19107
AND @max_row_div2 + @max_row_div4;
19109
# check multiple-4 success: 1
19111
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19112
AND @max_row_div2 + @max_row_div4 + @max_row;
19114
# check multiple-5 success: 1
19115
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19117
SET f_int1 = @cur_value , f_int2 = @cur_value,
19118
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19119
f_charbig = '#SINGLE#';
19121
# check single-1 success: 1
19122
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19124
SET f_int1 = @cur_value , f_int2 = @cur_value,
19125
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19126
f_charbig = '#SINGLE#';
19128
# check single-2 success: 1
19129
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19130
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19131
UPDATE t1 SET f_int1 = @cur_value2
19132
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19134
# check single-3 success: 1
19135
SET @cur_value1= -1;
19136
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19137
UPDATE t1 SET f_int1 = @cur_value1
19138
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19140
# check single-4 success: 1
19141
SELECT MAX(f_int1) INTO @cur_value FROM t1;
19142
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19144
# check single-5 success: 1
19145
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19147
# check single-6 success: 1
19148
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19150
# check single-7 success: 1
19151
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19152
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19153
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19154
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19155
f_charbig = '#NULL#';
19157
SET f_int1 = NULL , f_int2 = -@max_row,
19158
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19159
f_charbig = '#NULL#';
19160
# check null success: 1
19162
# check null-1 success: 1
19163
UPDATE t1 SET f_int1 = -@max_row
19164
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19165
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19167
# check null-2 success: 1
19168
UPDATE t1 SET f_int1 = NULL
19169
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19170
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19172
# check null-3 success: 1
19174
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19175
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19177
# check null-4 success: 1
19179
WHERE f_int1 = 0 AND f_int2 = 0
19180
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19181
AND f_charbig = '#NULL#';
19183
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19184
SELECT f_int1, f_int1, '', '', 'was inserted'
19185
FROM t0_template source_tab
19186
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19188
# check transactions-1 success: 1
19191
# check transactions-2 success: 1
19194
# check transactions-3 success: 1
19195
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19199
# check transactions-4 success: 1
19200
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19201
SELECT f_int1, f_int1, '', '', 'was inserted'
19202
FROM t0_template source_tab
19203
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19205
# check transactions-5 success: 1
19208
Warning 1196 Some non-transactional changed tables couldn't be rolled back
19210
# check transactions-6 success: 1
19211
# INFO: Storage engine used for t1 seems to be not transactional.
19214
# check transactions-7 success: 1
19215
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19217
SET @@session.sql_mode = 'traditional';
19218
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19219
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19220
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19221
'', '', 'was inserted' FROM t0_template
19222
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19223
ERROR 22012: Division by 0
19226
# check transactions-8 success: 1
19227
# INFO: Storage engine used for t1 seems to be unable to revert
19228
# changes made by the failing statement.
19229
SET @@session.sql_mode = '';
19231
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19233
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19235
# check special-1 success: 1
19236
UPDATE t1 SET f_charbig = '';
19238
# check special-2 success: 1
19239
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19240
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19241
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19242
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19243
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19244
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19245
'just inserted' FROM t0_template
19246
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19247
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19249
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19250
f_charbig = 'updated by trigger'
19251
WHERE f_int1 = new.f_int1;
19253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19254
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19255
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19257
# check trigger-1 success: 1
19258
DROP TRIGGER trg_1;
19259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19260
f_int2 = CAST(f_char1 AS SIGNED INT),
19261
f_charbig = 'just inserted'
19262
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19264
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19265
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19266
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19267
'just inserted' FROM t0_template
19268
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19269
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19271
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19272
f_charbig = 'updated by trigger'
19273
WHERE f_int1 = new.f_int1;
19275
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19276
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19279
# check trigger-2 success: 1
19280
DROP TRIGGER trg_1;
19281
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19282
f_int2 = CAST(f_char1 AS SIGNED INT),
19283
f_charbig = 'just inserted'
19284
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19286
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19287
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19288
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19289
'just inserted' FROM t0_template
19290
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19291
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19293
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19294
f_charbig = 'updated by trigger'
19295
WHERE f_int1 = new.f_int1;
19297
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19298
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19300
# check trigger-3 success: 1
19301
DROP TRIGGER trg_1;
19302
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19303
f_int2 = CAST(f_char1 AS SIGNED INT),
19304
f_charbig = 'just inserted'
19305
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19307
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19308
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19309
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19310
'just inserted' FROM t0_template
19311
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19312
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19314
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19315
f_charbig = 'updated by trigger'
19316
WHERE f_int1 = - old.f_int1;
19318
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19319
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19321
# check trigger-4 success: 1
19322
DROP TRIGGER trg_1;
19323
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19324
f_int2 = CAST(f_char1 AS SIGNED INT),
19325
f_charbig = 'just inserted'
19326
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19328
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19329
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19330
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19331
'just inserted' FROM t0_template
19332
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19333
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19335
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19336
f_charbig = 'updated by trigger'
19337
WHERE f_int1 = new.f_int1;
19339
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19340
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19342
# check trigger-5 success: 1
19343
DROP TRIGGER trg_1;
19344
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19345
f_int2 = CAST(f_char1 AS SIGNED INT),
19346
f_charbig = 'just inserted'
19347
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19349
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19350
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19351
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19352
'just inserted' FROM t0_template
19353
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19354
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19356
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19357
f_charbig = 'updated by trigger'
19358
WHERE f_int1 = - old.f_int1;
19360
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19361
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19363
# check trigger-6 success: 1
19364
DROP TRIGGER trg_1;
19365
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19366
f_int2 = CAST(f_char1 AS SIGNED INT),
19367
f_charbig = 'just inserted'
19368
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19370
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19371
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19372
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19373
'just inserted' FROM t0_template
19374
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19375
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19377
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19378
f_charbig = 'updated by trigger'
19379
WHERE f_int1 = - old.f_int1;
19382
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19384
# check trigger-7 success: 1
19385
DROP TRIGGER trg_1;
19386
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19387
f_int2 = CAST(f_char1 AS SIGNED INT),
19388
f_charbig = 'just inserted'
19389
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19391
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19392
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19393
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19394
'just inserted' FROM t0_template
19395
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19396
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19398
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19399
f_charbig = 'updated by trigger'
19400
WHERE f_int1 = - old.f_int1;
19403
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19405
# check trigger-8 success: 1
19406
DROP TRIGGER trg_1;
19407
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19408
f_int2 = CAST(f_char1 AS SIGNED INT),
19409
f_charbig = 'just inserted'
19410
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19412
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19414
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19415
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19417
SET new.f_int1 = old.f_int1 + @max_row,
19418
new.f_int2 = old.f_int2 - @max_row,
19419
new.f_charbig = '####updated per update trigger####';
19422
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19423
f_charbig = '####updated per update statement itself####';
19425
# check trigger-9 success: 1
19426
DROP TRIGGER trg_2;
19427
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19428
f_int2 = CAST(f_char1 AS SIGNED INT),
19429
f_charbig = CONCAT('===',f_char1,'===');
19430
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19432
SET new.f_int1 = new.f_int1 + @max_row,
19433
new.f_int2 = new.f_int2 - @max_row,
19434
new.f_charbig = '####updated per update trigger####';
19437
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19438
f_charbig = '####updated per update statement itself####';
19440
# check trigger-10 success: 1
19441
DROP TRIGGER trg_2;
19442
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19443
f_int2 = CAST(f_char1 AS SIGNED INT),
19444
f_charbig = CONCAT('===',f_char1,'===');
19445
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19447
SET new.f_int1 = @my_max1 + @counter,
19448
new.f_int2 = @my_min2 - @counter,
19449
new.f_charbig = '####updated per insert trigger####';
19450
SET @counter = @counter + 1;
19453
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19454
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19455
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19456
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19457
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19459
DROP TRIGGER trg_3;
19461
# check trigger-11 success: 1
19463
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19464
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19465
AND f_charbig = '####updated per insert trigger####';
19466
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19468
SET new.f_int1 = @my_max1 + @counter,
19469
new.f_int2 = @my_min2 - @counter,
19470
new.f_charbig = '####updated per insert trigger####';
19471
SET @counter = @counter + 1;
19474
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19475
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19476
SELECT CAST(f_int1 AS CHAR),
19477
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19478
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19480
DROP TRIGGER trg_3;
19482
# check trigger-12 success: 1
19484
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19485
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19486
AND f_charbig = '####updated per insert trigger####';
19488
Table Op Msg_type Msg_text
19489
test.t1 analyze note The storage engine for the table doesn't support analyze
19490
CHECK TABLE t1 EXTENDED;
19491
Table Op Msg_type Msg_text
19492
test.t1 check note The storage engine for the table doesn't support check
19493
CHECKSUM TABLE t1 EXTENDED;
19495
test.t1 <some_value>
19497
Table Op Msg_type Msg_text
19498
test.t1 optimize note The storage engine for the table doesn't support optimize
19499
# check layout success: 1
19500
REPAIR TABLE t1 EXTENDED;
19501
Table Op Msg_type Msg_text
19502
test.t1 repair note The storage engine for the table doesn't support repair
19503
# check layout success: 1
19506
# check TRUNCATE success: 1
19507
# check layout success: 1
19508
# End usability test (inc/partition_check.inc)
19515
f_charbig VARCHAR(1000)
19516
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
19518
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
19519
(PARTITION part1 VALUES LESS THAN (0)
19520
(SUBPARTITION subpart11, SUBPARTITION subpart12),
19521
PARTITION part2 VALUES LESS THAN (5)
19522
(SUBPARTITION subpart21, SUBPARTITION subpart22),
19523
PARTITION part3 VALUES LESS THAN (10)
19524
(SUBPARTITION subpart31, SUBPARTITION subpart32),
19525
PARTITION part4 VALUES LESS THAN (2147483646)
19526
(SUBPARTITION subpart41, SUBPARTITION subpart42));
19527
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19528
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19529
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19530
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
19531
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19532
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19533
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19534
# Start usability test (inc/partition_check.inc)
19536
SHOW CREATE TABLE t1;
19538
t1 CREATE TABLE `t1` (
19539
`f_int1` int(11) DEFAULT NULL,
19540
`f_int2` int(11) DEFAULT NULL,
19541
`f_char1` char(20) DEFAULT NULL,
19542
`f_char2` char(20) DEFAULT NULL,
19543
`f_charbig` varchar(1000) DEFAULT NULL
19544
) 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)) */
19547
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYD
19548
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYI
19549
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYD
19550
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYI
19551
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYD
19552
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYI
19553
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYD
19554
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYI
19555
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYD
19556
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYI
19557
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYD
19558
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYI
19559
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYD
19560
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYI
19561
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYD
19562
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYI
19563
$MYSQLTEST_VARDIR/master-data/test/t1.frm
19564
$MYSQLTEST_VARDIR/master-data/test/t1.par
19566
# check prerequisites-1 success: 1
19567
# check COUNT(*) success: 1
19568
# check MIN/MAX(f_int1) success: 1
19569
# check MIN/MAX(f_int2) success: 1
19570
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19571
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19572
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19573
WHERE f_int1 IN (2,3);
19574
# check prerequisites-3 success: 1
19575
DELETE FROM t1 WHERE f_charbig = 'delete me';
19576
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
19577
# check read via f_int1 success: 1
19578
# check read via f_int2 success: 1
19580
# check multiple-1 success: 1
19581
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19583
# check multiple-2 success: 1
19584
INSERT INTO t1 SELECT * FROM t0_template
19585
WHERE MOD(f_int1,3) = 0;
19587
# check multiple-3 success: 1
19588
UPDATE t1 SET f_int1 = f_int1 + @max_row
19589
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19590
AND @max_row_div2 + @max_row_div4;
19592
# check multiple-4 success: 1
19594
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19595
AND @max_row_div2 + @max_row_div4 + @max_row;
19597
# check multiple-5 success: 1
19598
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19600
SET f_int1 = @cur_value , f_int2 = @cur_value,
19601
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19602
f_charbig = '#SINGLE#';
19604
# check single-1 success: 1
19605
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19607
SET f_int1 = @cur_value , f_int2 = @cur_value,
19608
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19609
f_charbig = '#SINGLE#';
19611
# check single-2 success: 1
19612
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19613
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19614
UPDATE t1 SET f_int1 = @cur_value2
19615
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19617
# check single-3 success: 1
19618
SET @cur_value1= -1;
19619
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19620
UPDATE t1 SET f_int1 = @cur_value1
19621
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19623
# check single-4 success: 1
19624
SELECT MAX(f_int1) INTO @cur_value FROM t1;
19625
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19627
# check single-5 success: 1
19628
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19630
# check single-6 success: 1
19631
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19632
ERROR HY000: Table has no partition for value 2147483647
19633
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19634
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19635
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19636
f_charbig = '#NULL#';
19638
SET f_int1 = NULL , f_int2 = -@max_row,
19639
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19640
f_charbig = '#NULL#';
19641
# check null success: 1
19643
# check null-1 success: 1
19644
UPDATE t1 SET f_int1 = -@max_row
19645
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19646
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19648
# check null-2 success: 1
19649
UPDATE t1 SET f_int1 = NULL
19650
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19651
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19653
# check null-3 success: 1
19655
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19656
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19658
# check null-4 success: 1
19660
WHERE f_int1 = 0 AND f_int2 = 0
19661
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19662
AND f_charbig = '#NULL#';
19664
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19665
SELECT f_int1, f_int1, '', '', 'was inserted'
19666
FROM t0_template source_tab
19667
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19669
# check transactions-1 success: 1
19672
# check transactions-2 success: 1
19675
# check transactions-3 success: 1
19676
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19680
# check transactions-4 success: 1
19681
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19682
SELECT f_int1, f_int1, '', '', 'was inserted'
19683
FROM t0_template source_tab
19684
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19686
# check transactions-5 success: 1
19689
Warning 1196 Some non-transactional changed tables couldn't be rolled back
19691
# check transactions-6 success: 1
19692
# INFO: Storage engine used for t1 seems to be not transactional.
19695
# check transactions-7 success: 1
19696
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19698
SET @@session.sql_mode = 'traditional';
19699
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19700
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19701
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19702
'', '', 'was inserted' FROM t0_template
19703
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19704
ERROR 22012: Division by 0
19707
# check transactions-8 success: 1
19708
# INFO: Storage engine used for t1 seems to be unable to revert
19709
# changes made by the failing statement.
19710
SET @@session.sql_mode = '';
19712
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19714
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19716
# check special-1 success: 1
19717
UPDATE t1 SET f_charbig = '';
19719
# check special-2 success: 1
19720
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19721
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19722
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19723
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19724
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19725
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19726
'just inserted' FROM t0_template
19727
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19728
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19730
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19731
f_charbig = 'updated by trigger'
19732
WHERE f_int1 = new.f_int1;
19734
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19735
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19736
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19738
# check trigger-1 success: 1
19739
DROP TRIGGER trg_1;
19740
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19741
f_int2 = CAST(f_char1 AS SIGNED INT),
19742
f_charbig = 'just inserted'
19743
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19745
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19746
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19747
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19748
'just inserted' FROM t0_template
19749
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19750
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19752
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19753
f_charbig = 'updated by trigger'
19754
WHERE f_int1 = new.f_int1;
19756
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19757
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19758
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19760
# check trigger-2 success: 1
19761
DROP TRIGGER trg_1;
19762
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19763
f_int2 = CAST(f_char1 AS SIGNED INT),
19764
f_charbig = 'just inserted'
19765
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19767
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19768
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19769
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19770
'just inserted' FROM t0_template
19771
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19772
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19774
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19775
f_charbig = 'updated by trigger'
19776
WHERE f_int1 = new.f_int1;
19778
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19779
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19781
# check trigger-3 success: 1
19782
DROP TRIGGER trg_1;
19783
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19784
f_int2 = CAST(f_char1 AS SIGNED INT),
19785
f_charbig = 'just inserted'
19786
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19788
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19789
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19790
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19791
'just inserted' FROM t0_template
19792
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19793
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19795
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19796
f_charbig = 'updated by trigger'
19797
WHERE f_int1 = - old.f_int1;
19799
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19800
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19802
# check trigger-4 success: 1
19803
DROP TRIGGER trg_1;
19804
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19805
f_int2 = CAST(f_char1 AS SIGNED INT),
19806
f_charbig = 'just inserted'
19807
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19809
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19810
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19811
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19812
'just inserted' FROM t0_template
19813
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19814
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19816
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19817
f_charbig = 'updated by trigger'
19818
WHERE f_int1 = new.f_int1;
19820
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19821
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19823
# check trigger-5 success: 1
19824
DROP TRIGGER trg_1;
19825
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19826
f_int2 = CAST(f_char1 AS SIGNED INT),
19827
f_charbig = 'just inserted'
19828
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19830
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19831
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19832
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19833
'just inserted' FROM t0_template
19834
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19835
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19837
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19838
f_charbig = 'updated by trigger'
19839
WHERE f_int1 = - old.f_int1;
19841
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19842
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19844
# check trigger-6 success: 1
19845
DROP TRIGGER trg_1;
19846
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19847
f_int2 = CAST(f_char1 AS SIGNED INT),
19848
f_charbig = 'just inserted'
19849
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19851
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19852
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19853
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19854
'just inserted' FROM t0_template
19855
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19856
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19858
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19859
f_charbig = 'updated by trigger'
19860
WHERE f_int1 = - old.f_int1;
19863
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19865
# check trigger-7 success: 1
19866
DROP TRIGGER trg_1;
19867
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19868
f_int2 = CAST(f_char1 AS SIGNED INT),
19869
f_charbig = 'just inserted'
19870
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19872
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19873
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19874
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19875
'just inserted' FROM t0_template
19876
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19877
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19879
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19880
f_charbig = 'updated by trigger'
19881
WHERE f_int1 = - old.f_int1;
19884
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19886
# check trigger-8 success: 1
19887
DROP TRIGGER trg_1;
19888
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19889
f_int2 = CAST(f_char1 AS SIGNED INT),
19890
f_charbig = 'just inserted'
19891
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19893
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19895
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19896
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19898
SET new.f_int1 = old.f_int1 + @max_row,
19899
new.f_int2 = old.f_int2 - @max_row,
19900
new.f_charbig = '####updated per update trigger####';
19903
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19904
f_charbig = '####updated per update statement itself####';
19906
# check trigger-9 success: 1
19907
DROP TRIGGER trg_2;
19908
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19909
f_int2 = CAST(f_char1 AS SIGNED INT),
19910
f_charbig = CONCAT('===',f_char1,'===');
19911
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19913
SET new.f_int1 = new.f_int1 + @max_row,
19914
new.f_int2 = new.f_int2 - @max_row,
19915
new.f_charbig = '####updated per update trigger####';
19918
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19919
f_charbig = '####updated per update statement itself####';
19921
# check trigger-10 success: 1
19922
DROP TRIGGER trg_2;
19923
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19924
f_int2 = CAST(f_char1 AS SIGNED INT),
19925
f_charbig = CONCAT('===',f_char1,'===');
19926
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19928
SET new.f_int1 = @my_max1 + @counter,
19929
new.f_int2 = @my_min2 - @counter,
19930
new.f_charbig = '####updated per insert trigger####';
19931
SET @counter = @counter + 1;
19934
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19935
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19936
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19937
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19938
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19940
DROP TRIGGER trg_3;
19942
# check trigger-11 success: 1
19944
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19945
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19946
AND f_charbig = '####updated per insert trigger####';
19947
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19949
SET new.f_int1 = @my_max1 + @counter,
19950
new.f_int2 = @my_min2 - @counter,
19951
new.f_charbig = '####updated per insert trigger####';
19952
SET @counter = @counter + 1;
19955
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19956
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19957
SELECT CAST(f_int1 AS CHAR),
19958
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19959
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19961
DROP TRIGGER trg_3;
19963
# check trigger-12 success: 1
19965
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19966
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19967
AND f_charbig = '####updated per insert trigger####';
19969
Table Op Msg_type Msg_text
19970
test.t1 analyze note The storage engine for the table doesn't support analyze
19971
CHECK TABLE t1 EXTENDED;
19972
Table Op Msg_type Msg_text
19973
test.t1 check note The storage engine for the table doesn't support check
19974
CHECKSUM TABLE t1 EXTENDED;
19976
test.t1 <some_value>
19978
Table Op Msg_type Msg_text
19979
test.t1 optimize note The storage engine for the table doesn't support optimize
19980
# check layout success: 1
19981
REPAIR TABLE t1 EXTENDED;
19982
Table Op Msg_type Msg_text
19983
test.t1 repair note The storage engine for the table doesn't support repair
19984
# check layout success: 1
19987
# check TRUNCATE success: 1
19988
# check layout success: 1
19989
# End usability test (inc/partition_check.inc)
19996
f_charbig VARCHAR(1000)
19997
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
19999
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
20000
(PARTITION part1 VALUES IN (0)
20001
(SUBPARTITION sp11, SUBPARTITION sp12),
20002
PARTITION part2 VALUES IN (1)
20003
(SUBPARTITION sp21, SUBPARTITION sp22),
20004
PARTITION part3 VALUES IN (2)
20005
(SUBPARTITION sp31, SUBPARTITION sp32),
20006
PARTITION part4 VALUES IN (NULL)
20007
(SUBPARTITION sp41, SUBPARTITION sp42));
20008
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20009
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20010
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20011
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
20012
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20013
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20014
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20015
# Start usability test (inc/partition_check.inc)
20017
SHOW CREATE TABLE t1;
20019
t1 CREATE TABLE `t1` (
20020
`f_int1` int(11) DEFAULT NULL,
20021
`f_int2` int(11) DEFAULT NULL,
20022
`f_char1` char(20) DEFAULT NULL,
20023
`f_char2` char(20) DEFAULT NULL,
20024
`f_charbig` varchar(1000) DEFAULT NULL
20025
) 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)) */
20028
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYD
20029
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYI
20030
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYD
20031
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYI
20032
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYD
20033
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYI
20034
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYD
20035
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYI
20036
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYD
20037
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYI
20038
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYD
20039
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYI
20040
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYD
20041
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYI
20042
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYD
20043
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYI
20044
$MYSQLTEST_VARDIR/master-data/test/t1.frm
20045
$MYSQLTEST_VARDIR/master-data/test/t1.par
20047
# check prerequisites-1 success: 1
20048
# check COUNT(*) success: 1
20049
# check MIN/MAX(f_int1) success: 1
20050
# check MIN/MAX(f_int2) success: 1
20051
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20052
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20053
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20054
WHERE f_int1 IN (2,3);
20055
# check prerequisites-3 success: 1
20056
DELETE FROM t1 WHERE f_charbig = 'delete me';
20057
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
20058
# check read via f_int1 success: 1
20059
# check read via f_int2 success: 1
20061
# check multiple-1 success: 1
20062
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20064
# check multiple-2 success: 1
20065
INSERT INTO t1 SELECT * FROM t0_template
20066
WHERE MOD(f_int1,3) = 0;
20068
# check multiple-3 success: 1
20069
UPDATE t1 SET f_int1 = f_int1 + @max_row
20070
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20071
AND @max_row_div2 + @max_row_div4;
20073
# check multiple-4 success: 1
20075
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20076
AND @max_row_div2 + @max_row_div4 + @max_row;
20078
# check multiple-5 success: 1
20079
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20081
SET f_int1 = @cur_value , f_int2 = @cur_value,
20082
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20083
f_charbig = '#SINGLE#';
20085
# check single-1 success: 1
20086
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20088
SET f_int1 = @cur_value , f_int2 = @cur_value,
20089
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20090
f_charbig = '#SINGLE#';
20092
# check single-2 success: 1
20093
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20094
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20095
UPDATE t1 SET f_int1 = @cur_value2
20096
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20098
# check single-3 success: 1
20099
SET @cur_value1= -1;
20100
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20101
UPDATE t1 SET f_int1 = @cur_value1
20102
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20104
# check single-4 success: 1
20105
SELECT MAX(f_int1) INTO @cur_value FROM t1;
20106
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20108
# check single-5 success: 1
20109
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20111
# check single-6 success: 1
20112
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20114
# check single-7 success: 1
20115
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20116
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20117
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20118
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20119
f_charbig = '#NULL#';
20121
SET f_int1 = NULL , f_int2 = -@max_row,
20122
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20123
f_charbig = '#NULL#';
20124
# check null success: 1
20126
# check null-1 success: 1
20127
UPDATE t1 SET f_int1 = -@max_row
20128
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20129
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20131
# check null-2 success: 1
20132
UPDATE t1 SET f_int1 = NULL
20133
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20134
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20136
# check null-3 success: 1
20138
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20139
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20141
# check null-4 success: 1
20143
WHERE f_int1 = 0 AND f_int2 = 0
20144
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20145
AND f_charbig = '#NULL#';
20147
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20148
SELECT f_int1, f_int1, '', '', 'was inserted'
20149
FROM t0_template source_tab
20150
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20152
# check transactions-1 success: 1
20155
# check transactions-2 success: 1
20158
# check transactions-3 success: 1
20159
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20163
# check transactions-4 success: 1
20164
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20165
SELECT f_int1, f_int1, '', '', 'was inserted'
20166
FROM t0_template source_tab
20167
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20169
# check transactions-5 success: 1
20172
Warning 1196 Some non-transactional changed tables couldn't be rolled back
20174
# check transactions-6 success: 1
20175
# INFO: Storage engine used for t1 seems to be not transactional.
20178
# check transactions-7 success: 1
20179
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20181
SET @@session.sql_mode = 'traditional';
20182
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20183
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20184
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20185
'', '', 'was inserted' FROM t0_template
20186
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20187
ERROR 22012: Division by 0
20190
# check transactions-8 success: 1
20191
# INFO: Storage engine used for t1 seems to be unable to revert
20192
# changes made by the failing statement.
20193
SET @@session.sql_mode = '';
20195
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20197
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20199
# check special-1 success: 1
20200
UPDATE t1 SET f_charbig = '';
20202
# check special-2 success: 1
20203
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20204
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20205
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20206
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20207
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20208
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20209
'just inserted' FROM t0_template
20210
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20211
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20213
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20214
f_charbig = 'updated by trigger'
20215
WHERE f_int1 = new.f_int1;
20217
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20218
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20219
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20221
# check trigger-1 success: 1
20222
DROP TRIGGER trg_1;
20223
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20224
f_int2 = CAST(f_char1 AS SIGNED INT),
20225
f_charbig = 'just inserted'
20226
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20228
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20229
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20230
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20231
'just inserted' FROM t0_template
20232
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20233
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20235
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20236
f_charbig = 'updated by trigger'
20237
WHERE f_int1 = new.f_int1;
20239
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20240
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20241
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20243
# check trigger-2 success: 1
20244
DROP TRIGGER trg_1;
20245
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20246
f_int2 = CAST(f_char1 AS SIGNED INT),
20247
f_charbig = 'just inserted'
20248
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20250
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20251
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20252
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20253
'just inserted' FROM t0_template
20254
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20255
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20257
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20258
f_charbig = 'updated by trigger'
20259
WHERE f_int1 = new.f_int1;
20261
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20262
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20264
# check trigger-3 success: 1
20265
DROP TRIGGER trg_1;
20266
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20267
f_int2 = CAST(f_char1 AS SIGNED INT),
20268
f_charbig = 'just inserted'
20269
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20271
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20272
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20273
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20274
'just inserted' FROM t0_template
20275
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20276
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20278
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20279
f_charbig = 'updated by trigger'
20280
WHERE f_int1 = - old.f_int1;
20282
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20283
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20285
# check trigger-4 success: 1
20286
DROP TRIGGER trg_1;
20287
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20288
f_int2 = CAST(f_char1 AS SIGNED INT),
20289
f_charbig = 'just inserted'
20290
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20292
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20293
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20294
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20295
'just inserted' FROM t0_template
20296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20297
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20299
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20300
f_charbig = 'updated by trigger'
20301
WHERE f_int1 = new.f_int1;
20303
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20304
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20306
# check trigger-5 success: 1
20307
DROP TRIGGER trg_1;
20308
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20309
f_int2 = CAST(f_char1 AS SIGNED INT),
20310
f_charbig = 'just inserted'
20311
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20313
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20314
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20315
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20316
'just inserted' FROM t0_template
20317
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20318
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20320
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20321
f_charbig = 'updated by trigger'
20322
WHERE f_int1 = - old.f_int1;
20324
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20325
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20327
# check trigger-6 success: 1
20328
DROP TRIGGER trg_1;
20329
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20330
f_int2 = CAST(f_char1 AS SIGNED INT),
20331
f_charbig = 'just inserted'
20332
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20334
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20335
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20336
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20337
'just inserted' FROM t0_template
20338
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20339
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20341
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20342
f_charbig = 'updated by trigger'
20343
WHERE f_int1 = - old.f_int1;
20346
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20348
# check trigger-7 success: 1
20349
DROP TRIGGER trg_1;
20350
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20351
f_int2 = CAST(f_char1 AS SIGNED INT),
20352
f_charbig = 'just inserted'
20353
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20355
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20356
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20357
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20358
'just inserted' FROM t0_template
20359
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20360
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20362
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20363
f_charbig = 'updated by trigger'
20364
WHERE f_int1 = - old.f_int1;
20367
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20369
# check trigger-8 success: 1
20370
DROP TRIGGER trg_1;
20371
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20372
f_int2 = CAST(f_char1 AS SIGNED INT),
20373
f_charbig = 'just inserted'
20374
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20376
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20378
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20379
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20381
SET new.f_int1 = old.f_int1 + @max_row,
20382
new.f_int2 = old.f_int2 - @max_row,
20383
new.f_charbig = '####updated per update trigger####';
20386
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20387
f_charbig = '####updated per update statement itself####';
20389
# check trigger-9 success: 1
20390
DROP TRIGGER trg_2;
20391
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20392
f_int2 = CAST(f_char1 AS SIGNED INT),
20393
f_charbig = CONCAT('===',f_char1,'===');
20394
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20396
SET new.f_int1 = new.f_int1 + @max_row,
20397
new.f_int2 = new.f_int2 - @max_row,
20398
new.f_charbig = '####updated per update trigger####';
20401
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20402
f_charbig = '####updated per update statement itself####';
20404
# check trigger-10 success: 1
20405
DROP TRIGGER trg_2;
20406
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20407
f_int2 = CAST(f_char1 AS SIGNED INT),
20408
f_charbig = CONCAT('===',f_char1,'===');
20409
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20411
SET new.f_int1 = @my_max1 + @counter,
20412
new.f_int2 = @my_min2 - @counter,
20413
new.f_charbig = '####updated per insert trigger####';
20414
SET @counter = @counter + 1;
20417
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20418
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20419
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20420
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20421
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20423
DROP TRIGGER trg_3;
20425
# check trigger-11 success: 1
20427
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20428
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20429
AND f_charbig = '####updated per insert trigger####';
20430
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20432
SET new.f_int1 = @my_max1 + @counter,
20433
new.f_int2 = @my_min2 - @counter,
20434
new.f_charbig = '####updated per insert trigger####';
20435
SET @counter = @counter + 1;
20438
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20439
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20440
SELECT CAST(f_int1 AS CHAR),
20441
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20442
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20444
DROP TRIGGER trg_3;
20446
# check trigger-12 success: 1
20448
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20449
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20450
AND f_charbig = '####updated per insert trigger####';
20452
Table Op Msg_type Msg_text
20453
test.t1 analyze note The storage engine for the table doesn't support analyze
20454
CHECK TABLE t1 EXTENDED;
20455
Table Op Msg_type Msg_text
20456
test.t1 check note The storage engine for the table doesn't support check
20457
CHECKSUM TABLE t1 EXTENDED;
20459
test.t1 <some_value>
20461
Table Op Msg_type Msg_text
20462
test.t1 optimize note The storage engine for the table doesn't support optimize
20463
# check layout success: 1
20464
REPAIR TABLE t1 EXTENDED;
20465
Table Op Msg_type Msg_text
20466
test.t1 repair note The storage engine for the table doesn't support repair
20467
# check layout success: 1
20470
# check TRUNCATE success: 1
20471
# check layout success: 1
20472
# End usability test (inc/partition_check.inc)
20479
f_charbig VARCHAR(1000)
20480
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
20482
PARTITION BY LIST(ABS(MOD(f_int1,2)))
20483
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
20484
(PARTITION part1 VALUES IN (0),
20485
PARTITION part2 VALUES IN (1),
20486
PARTITION part3 VALUES IN (NULL));
20487
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20488
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20489
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20490
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
20491
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20492
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20493
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20494
# Start usability test (inc/partition_check.inc)
20496
SHOW CREATE TABLE t1;
20498
t1 CREATE TABLE `t1` (
20499
`f_int1` int(11) DEFAULT NULL,
20500
`f_int2` int(11) DEFAULT NULL,
20501
`f_char1` char(20) DEFAULT NULL,
20502
`f_char2` char(20) DEFAULT NULL,
20503
`f_charbig` varchar(1000) DEFAULT NULL
20504
) 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) */
20507
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYD
20508
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYI
20509
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYD
20510
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYI
20511
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYD
20512
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYI
20513
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYD
20514
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYI
20515
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYD
20516
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYI
20517
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYD
20518
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYI
20519
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYD
20520
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYI
20521
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYD
20522
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYI
20523
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYD
20524
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYI
20525
$MYSQLTEST_VARDIR/master-data/test/t1.frm
20526
$MYSQLTEST_VARDIR/master-data/test/t1.par
20528
# check prerequisites-1 success: 1
20529
# check COUNT(*) success: 1
20530
# check MIN/MAX(f_int1) success: 1
20531
# check MIN/MAX(f_int2) success: 1
20532
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20533
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20534
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20535
WHERE f_int1 IN (2,3);
20536
# check prerequisites-3 success: 1
20537
DELETE FROM t1 WHERE f_charbig = 'delete me';
20538
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
20539
# check read via f_int1 success: 1
20540
# check read via f_int2 success: 1
20542
# check multiple-1 success: 1
20543
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20545
# check multiple-2 success: 1
20546
INSERT INTO t1 SELECT * FROM t0_template
20547
WHERE MOD(f_int1,3) = 0;
20549
# check multiple-3 success: 1
20550
UPDATE t1 SET f_int1 = f_int1 + @max_row
20551
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20552
AND @max_row_div2 + @max_row_div4;
20554
# check multiple-4 success: 1
20556
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20557
AND @max_row_div2 + @max_row_div4 + @max_row;
20559
# check multiple-5 success: 1
20560
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20562
SET f_int1 = @cur_value , f_int2 = @cur_value,
20563
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20564
f_charbig = '#SINGLE#';
20566
# check single-1 success: 1
20567
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20569
SET f_int1 = @cur_value , f_int2 = @cur_value,
20570
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20571
f_charbig = '#SINGLE#';
20573
# check single-2 success: 1
20574
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20575
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20576
UPDATE t1 SET f_int1 = @cur_value2
20577
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20579
# check single-3 success: 1
20580
SET @cur_value1= -1;
20581
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20582
UPDATE t1 SET f_int1 = @cur_value1
20583
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20585
# check single-4 success: 1
20586
SELECT MAX(f_int1) INTO @cur_value FROM t1;
20587
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20589
# check single-5 success: 1
20590
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20592
# check single-6 success: 1
20593
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20595
# check single-7 success: 1
20596
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20597
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20598
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20599
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20600
f_charbig = '#NULL#';
20602
SET f_int1 = NULL , f_int2 = -@max_row,
20603
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20604
f_charbig = '#NULL#';
20605
# check null success: 1
20607
# check null-1 success: 1
20608
UPDATE t1 SET f_int1 = -@max_row
20609
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20610
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20612
# check null-2 success: 1
20613
UPDATE t1 SET f_int1 = NULL
20614
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20615
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20617
# check null-3 success: 1
20619
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20620
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20622
# check null-4 success: 1
20624
WHERE f_int1 = 0 AND f_int2 = 0
20625
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20626
AND f_charbig = '#NULL#';
20628
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20629
SELECT f_int1, f_int1, '', '', 'was inserted'
20630
FROM t0_template source_tab
20631
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20633
# check transactions-1 success: 1
20636
# check transactions-2 success: 1
20639
# check transactions-3 success: 1
20640
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20644
# check transactions-4 success: 1
20645
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20646
SELECT f_int1, f_int1, '', '', 'was inserted'
20647
FROM t0_template source_tab
20648
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20650
# check transactions-5 success: 1
20653
Warning 1196 Some non-transactional changed tables couldn't be rolled back
20655
# check transactions-6 success: 1
20656
# INFO: Storage engine used for t1 seems to be not transactional.
20659
# check transactions-7 success: 1
20660
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20662
SET @@session.sql_mode = 'traditional';
20663
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20664
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20665
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20666
'', '', 'was inserted' FROM t0_template
20667
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20668
ERROR 22012: Division by 0
20671
# check transactions-8 success: 1
20672
# INFO: Storage engine used for t1 seems to be unable to revert
20673
# changes made by the failing statement.
20674
SET @@session.sql_mode = '';
20676
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20678
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20680
# check special-1 success: 1
20681
UPDATE t1 SET f_charbig = '';
20683
# check special-2 success: 1
20684
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20685
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20686
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20687
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20688
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20689
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20690
'just inserted' FROM t0_template
20691
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20692
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20694
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20695
f_charbig = 'updated by trigger'
20696
WHERE f_int1 = new.f_int1;
20698
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20699
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20700
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20702
# check trigger-1 success: 1
20703
DROP TRIGGER trg_1;
20704
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20705
f_int2 = CAST(f_char1 AS SIGNED INT),
20706
f_charbig = 'just inserted'
20707
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20709
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20710
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20711
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20712
'just inserted' FROM t0_template
20713
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20714
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20716
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20717
f_charbig = 'updated by trigger'
20718
WHERE f_int1 = new.f_int1;
20720
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20721
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20722
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20724
# check trigger-2 success: 1
20725
DROP TRIGGER trg_1;
20726
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20727
f_int2 = CAST(f_char1 AS SIGNED INT),
20728
f_charbig = 'just inserted'
20729
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20731
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20732
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20733
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20734
'just inserted' FROM t0_template
20735
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20736
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20738
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20739
f_charbig = 'updated by trigger'
20740
WHERE f_int1 = new.f_int1;
20742
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20743
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20745
# check trigger-3 success: 1
20746
DROP TRIGGER trg_1;
20747
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20748
f_int2 = CAST(f_char1 AS SIGNED INT),
20749
f_charbig = 'just inserted'
20750
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20752
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20753
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20754
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20755
'just inserted' FROM t0_template
20756
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20757
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20759
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20760
f_charbig = 'updated by trigger'
20761
WHERE f_int1 = - old.f_int1;
20763
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20764
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20766
# check trigger-4 success: 1
20767
DROP TRIGGER trg_1;
20768
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20769
f_int2 = CAST(f_char1 AS SIGNED INT),
20770
f_charbig = 'just inserted'
20771
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20773
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20774
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20775
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20776
'just inserted' FROM t0_template
20777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20778
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20780
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20781
f_charbig = 'updated by trigger'
20782
WHERE f_int1 = new.f_int1;
20784
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20785
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20787
# check trigger-5 success: 1
20788
DROP TRIGGER trg_1;
20789
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20790
f_int2 = CAST(f_char1 AS SIGNED INT),
20791
f_charbig = 'just inserted'
20792
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20794
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20795
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20796
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20797
'just inserted' FROM t0_template
20798
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20799
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20801
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20802
f_charbig = 'updated by trigger'
20803
WHERE f_int1 = - old.f_int1;
20805
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20806
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20808
# check trigger-6 success: 1
20809
DROP TRIGGER trg_1;
20810
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20811
f_int2 = CAST(f_char1 AS SIGNED INT),
20812
f_charbig = 'just inserted'
20813
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20815
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20816
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20817
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20818
'just inserted' FROM t0_template
20819
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20820
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20822
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20823
f_charbig = 'updated by trigger'
20824
WHERE f_int1 = - old.f_int1;
20827
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20829
# check trigger-7 success: 1
20830
DROP TRIGGER trg_1;
20831
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20832
f_int2 = CAST(f_char1 AS SIGNED INT),
20833
f_charbig = 'just inserted'
20834
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20836
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20837
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20838
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20839
'just inserted' FROM t0_template
20840
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20841
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20843
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20844
f_charbig = 'updated by trigger'
20845
WHERE f_int1 = - old.f_int1;
20848
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20850
# check trigger-8 success: 1
20851
DROP TRIGGER trg_1;
20852
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20853
f_int2 = CAST(f_char1 AS SIGNED INT),
20854
f_charbig = 'just inserted'
20855
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20857
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20859
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20860
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20862
SET new.f_int1 = old.f_int1 + @max_row,
20863
new.f_int2 = old.f_int2 - @max_row,
20864
new.f_charbig = '####updated per update trigger####';
20867
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20868
f_charbig = '####updated per update statement itself####';
20870
# check trigger-9 success: 1
20871
DROP TRIGGER trg_2;
20872
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20873
f_int2 = CAST(f_char1 AS SIGNED INT),
20874
f_charbig = CONCAT('===',f_char1,'===');
20875
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20877
SET new.f_int1 = new.f_int1 + @max_row,
20878
new.f_int2 = new.f_int2 - @max_row,
20879
new.f_charbig = '####updated per update trigger####';
20882
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20883
f_charbig = '####updated per update statement itself####';
20885
# check trigger-10 success: 1
20886
DROP TRIGGER trg_2;
20887
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20888
f_int2 = CAST(f_char1 AS SIGNED INT),
20889
f_charbig = CONCAT('===',f_char1,'===');
20890
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20892
SET new.f_int1 = @my_max1 + @counter,
20893
new.f_int2 = @my_min2 - @counter,
20894
new.f_charbig = '####updated per insert trigger####';
20895
SET @counter = @counter + 1;
20898
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20899
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20900
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20901
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20902
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20904
DROP TRIGGER trg_3;
20906
# check trigger-11 success: 1
20908
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20909
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20910
AND f_charbig = '####updated per insert trigger####';
20911
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20913
SET new.f_int1 = @my_max1 + @counter,
20914
new.f_int2 = @my_min2 - @counter,
20915
new.f_charbig = '####updated per insert trigger####';
20916
SET @counter = @counter + 1;
20919
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20920
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20921
SELECT CAST(f_int1 AS CHAR),
20922
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20923
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20925
DROP TRIGGER trg_3;
20927
# check trigger-12 success: 1
20929
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20930
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20931
AND f_charbig = '####updated per insert trigger####';
20933
Table Op Msg_type Msg_text
20934
test.t1 analyze note The storage engine for the table doesn't support analyze
20935
CHECK TABLE t1 EXTENDED;
20936
Table Op Msg_type Msg_text
20937
test.t1 check note The storage engine for the table doesn't support check
20938
CHECKSUM TABLE t1 EXTENDED;
20940
test.t1 <some_value>
20942
Table Op Msg_type Msg_text
20943
test.t1 optimize note The storage engine for the table doesn't support optimize
20944
# check layout success: 1
20945
REPAIR TABLE t1 EXTENDED;
20946
Table Op Msg_type Msg_text
20947
test.t1 repair note The storage engine for the table doesn't support repair
20948
# check layout success: 1
20951
# check TRUNCATE success: 1
20952
# check layout success: 1
20953
# End usability test (inc/partition_check.inc)
20955
#------------------------------------------------------------------------
20956
# 2.2 Partitioning function contains two columns (f_int1,f_int2)
20957
#------------------------------------------------------------------------
20958
# 2.2.2 DROP UNIQUE INDEX consisting of two columns
20959
DROP TABLE IF EXISTS t1;
20965
f_charbig VARCHAR(1000)
20966
, UNIQUE INDEX uidx1 (f_int1,f_int2)
20968
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
20969
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20970
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20971
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20972
ALTER TABLE t1 DROP INDEX uidx1;
20973
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20974
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20975
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20976
# Start usability test (inc/partition_check.inc)
20978
SHOW CREATE TABLE t1;
20980
t1 CREATE TABLE `t1` (
20981
`f_int1` int(11) DEFAULT NULL,
20982
`f_int2` int(11) DEFAULT NULL,
20983
`f_char1` char(20) DEFAULT NULL,
20984
`f_char2` char(20) DEFAULT NULL,
20985
`f_charbig` varchar(1000) DEFAULT NULL
20986
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
20989
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
20990
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
20991
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
20992
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
20993
$MYSQLTEST_VARDIR/master-data/test/t1.frm
20994
$MYSQLTEST_VARDIR/master-data/test/t1.par
20996
# check prerequisites-1 success: 1
20997
# check COUNT(*) success: 1
20998
# check MIN/MAX(f_int1) success: 1
20999
# check MIN/MAX(f_int2) success: 1
21000
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21001
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21002
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21003
WHERE f_int1 IN (2,3);
21004
# check prerequisites-3 success: 1
21005
DELETE FROM t1 WHERE f_charbig = 'delete me';
21006
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21007
# check read via f_int1 success: 1
21008
# check read via f_int2 success: 1
21010
# check multiple-1 success: 1
21011
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21013
# check multiple-2 success: 1
21014
INSERT INTO t1 SELECT * FROM t0_template
21015
WHERE MOD(f_int1,3) = 0;
21017
# check multiple-3 success: 1
21018
UPDATE t1 SET f_int1 = f_int1 + @max_row
21019
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21020
AND @max_row_div2 + @max_row_div4;
21022
# check multiple-4 success: 1
21024
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21025
AND @max_row_div2 + @max_row_div4 + @max_row;
21027
# check multiple-5 success: 1
21028
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21030
SET f_int1 = @cur_value , f_int2 = @cur_value,
21031
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21032
f_charbig = '#SINGLE#';
21034
# check single-1 success: 1
21035
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21037
SET f_int1 = @cur_value , f_int2 = @cur_value,
21038
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21039
f_charbig = '#SINGLE#';
21041
# check single-2 success: 1
21042
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21043
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21044
UPDATE t1 SET f_int1 = @cur_value2
21045
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21047
# check single-3 success: 1
21048
SET @cur_value1= -1;
21049
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21050
UPDATE t1 SET f_int1 = @cur_value1
21051
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21053
# check single-4 success: 1
21054
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21055
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21057
# check single-5 success: 1
21058
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21060
# check single-6 success: 1
21061
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21063
# check single-7 success: 1
21064
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21065
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21066
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21067
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21068
f_charbig = '#NULL#';
21070
SET f_int1 = NULL , f_int2 = -@max_row,
21071
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21072
f_charbig = '#NULL#';
21073
# check null success: 1
21075
# check null-1 success: 1
21076
UPDATE t1 SET f_int1 = -@max_row
21077
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21078
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21080
# check null-2 success: 1
21081
UPDATE t1 SET f_int1 = NULL
21082
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21083
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21085
# check null-3 success: 1
21087
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21088
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21090
# check null-4 success: 1
21092
WHERE f_int1 = 0 AND f_int2 = 0
21093
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21094
AND f_charbig = '#NULL#';
21096
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21097
SELECT f_int1, f_int1, '', '', 'was inserted'
21098
FROM t0_template source_tab
21099
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21101
# check transactions-1 success: 1
21104
# check transactions-2 success: 1
21107
# check transactions-3 success: 1
21108
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21112
# check transactions-4 success: 1
21113
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21114
SELECT f_int1, f_int1, '', '', 'was inserted'
21115
FROM t0_template source_tab
21116
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21118
# check transactions-5 success: 1
21121
Warning 1196 Some non-transactional changed tables couldn't be rolled back
21123
# check transactions-6 success: 1
21124
# INFO: Storage engine used for t1 seems to be not transactional.
21127
# check transactions-7 success: 1
21128
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21130
SET @@session.sql_mode = 'traditional';
21131
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21132
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21133
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21134
'', '', 'was inserted' FROM t0_template
21135
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21136
ERROR 22012: Division by 0
21139
# check transactions-8 success: 1
21140
# INFO: Storage engine used for t1 seems to be unable to revert
21141
# changes made by the failing statement.
21142
SET @@session.sql_mode = '';
21144
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21146
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21148
# check special-1 success: 1
21149
UPDATE t1 SET f_charbig = '';
21151
# check special-2 success: 1
21152
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21153
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21154
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21155
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21156
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21157
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21158
'just inserted' FROM t0_template
21159
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21160
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21162
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21163
f_charbig = 'updated by trigger'
21164
WHERE f_int1 = new.f_int1;
21166
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21167
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21168
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21170
# check trigger-1 success: 1
21171
DROP TRIGGER trg_1;
21172
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21173
f_int2 = CAST(f_char1 AS SIGNED INT),
21174
f_charbig = 'just inserted'
21175
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21177
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21178
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21179
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21180
'just inserted' FROM t0_template
21181
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21182
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21184
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21185
f_charbig = 'updated by trigger'
21186
WHERE f_int1 = new.f_int1;
21188
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21189
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21190
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21192
# check trigger-2 success: 1
21193
DROP TRIGGER trg_1;
21194
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21195
f_int2 = CAST(f_char1 AS SIGNED INT),
21196
f_charbig = 'just inserted'
21197
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21199
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21200
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21201
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21202
'just inserted' FROM t0_template
21203
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21204
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21206
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21207
f_charbig = 'updated by trigger'
21208
WHERE f_int1 = new.f_int1;
21210
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21211
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21213
# check trigger-3 success: 1
21214
DROP TRIGGER trg_1;
21215
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21216
f_int2 = CAST(f_char1 AS SIGNED INT),
21217
f_charbig = 'just inserted'
21218
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21220
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21221
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21222
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21223
'just inserted' FROM t0_template
21224
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21225
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21227
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21228
f_charbig = 'updated by trigger'
21229
WHERE f_int1 = - old.f_int1;
21231
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21232
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21234
# check trigger-4 success: 1
21235
DROP TRIGGER trg_1;
21236
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21237
f_int2 = CAST(f_char1 AS SIGNED INT),
21238
f_charbig = 'just inserted'
21239
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21241
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21242
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21243
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21244
'just inserted' FROM t0_template
21245
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21246
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21248
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21249
f_charbig = 'updated by trigger'
21250
WHERE f_int1 = new.f_int1;
21252
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21253
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21255
# check trigger-5 success: 1
21256
DROP TRIGGER trg_1;
21257
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21258
f_int2 = CAST(f_char1 AS SIGNED INT),
21259
f_charbig = 'just inserted'
21260
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21262
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21263
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21264
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21265
'just inserted' FROM t0_template
21266
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21267
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21269
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21270
f_charbig = 'updated by trigger'
21271
WHERE f_int1 = - old.f_int1;
21273
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21274
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21276
# check trigger-6 success: 1
21277
DROP TRIGGER trg_1;
21278
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21279
f_int2 = CAST(f_char1 AS SIGNED INT),
21280
f_charbig = 'just inserted'
21281
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21283
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21284
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21285
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21286
'just inserted' FROM t0_template
21287
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21288
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21290
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21291
f_charbig = 'updated by trigger'
21292
WHERE f_int1 = - old.f_int1;
21295
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21297
# check trigger-7 success: 1
21298
DROP TRIGGER trg_1;
21299
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21300
f_int2 = CAST(f_char1 AS SIGNED INT),
21301
f_charbig = 'just inserted'
21302
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21304
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21305
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21306
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21307
'just inserted' FROM t0_template
21308
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21309
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21311
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21312
f_charbig = 'updated by trigger'
21313
WHERE f_int1 = - old.f_int1;
21316
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21318
# check trigger-8 success: 1
21319
DROP TRIGGER trg_1;
21320
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21321
f_int2 = CAST(f_char1 AS SIGNED INT),
21322
f_charbig = 'just inserted'
21323
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21325
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21327
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21328
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21330
SET new.f_int1 = old.f_int1 + @max_row,
21331
new.f_int2 = old.f_int2 - @max_row,
21332
new.f_charbig = '####updated per update trigger####';
21335
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21336
f_charbig = '####updated per update statement itself####';
21338
# check trigger-9 success: 1
21339
DROP TRIGGER trg_2;
21340
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21341
f_int2 = CAST(f_char1 AS SIGNED INT),
21342
f_charbig = CONCAT('===',f_char1,'===');
21343
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21345
SET new.f_int1 = new.f_int1 + @max_row,
21346
new.f_int2 = new.f_int2 - @max_row,
21347
new.f_charbig = '####updated per update trigger####';
21350
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21351
f_charbig = '####updated per update statement itself####';
21353
# check trigger-10 success: 1
21354
DROP TRIGGER trg_2;
21355
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21356
f_int2 = CAST(f_char1 AS SIGNED INT),
21357
f_charbig = CONCAT('===',f_char1,'===');
21358
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21360
SET new.f_int1 = @my_max1 + @counter,
21361
new.f_int2 = @my_min2 - @counter,
21362
new.f_charbig = '####updated per insert trigger####';
21363
SET @counter = @counter + 1;
21366
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21367
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21368
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21369
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21370
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21372
DROP TRIGGER trg_3;
21374
# check trigger-11 success: 1
21376
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21377
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21378
AND f_charbig = '####updated per insert trigger####';
21379
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21381
SET new.f_int1 = @my_max1 + @counter,
21382
new.f_int2 = @my_min2 - @counter,
21383
new.f_charbig = '####updated per insert trigger####';
21384
SET @counter = @counter + 1;
21387
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21388
INSERT INTO t1 (f_char1, f_char2, f_charbig)
21389
SELECT CAST(f_int1 AS CHAR),
21390
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21391
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21393
DROP TRIGGER trg_3;
21395
# check trigger-12 success: 1
21397
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21398
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21399
AND f_charbig = '####updated per insert trigger####';
21401
Table Op Msg_type Msg_text
21402
test.t1 analyze note The storage engine for the table doesn't support analyze
21403
CHECK TABLE t1 EXTENDED;
21404
Table Op Msg_type Msg_text
21405
test.t1 check note The storage engine for the table doesn't support check
21406
CHECKSUM TABLE t1 EXTENDED;
21408
test.t1 <some_value>
21410
Table Op Msg_type Msg_text
21411
test.t1 optimize note The storage engine for the table doesn't support optimize
21412
# check layout success: 1
21413
REPAIR TABLE t1 EXTENDED;
21414
Table Op Msg_type Msg_text
21415
test.t1 repair note The storage engine for the table doesn't support repair
21416
# check layout success: 1
21419
# check TRUNCATE success: 1
21420
# check layout success: 1
21421
# End usability test (inc/partition_check.inc)
21428
f_charbig VARCHAR(1000)
21429
, UNIQUE INDEX uidx1 (f_int1,f_int2)
21431
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
21432
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21433
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21434
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21435
ALTER TABLE t1 DROP INDEX uidx1;
21436
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21437
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21438
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21439
# Start usability test (inc/partition_check.inc)
21441
SHOW CREATE TABLE t1;
21443
t1 CREATE TABLE `t1` (
21444
`f_int1` int(11) DEFAULT NULL,
21445
`f_int2` int(11) DEFAULT NULL,
21446
`f_char1` char(20) DEFAULT NULL,
21447
`f_char2` char(20) DEFAULT NULL,
21448
`f_charbig` varchar(1000) DEFAULT NULL
21449
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
21452
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
21453
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
21454
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
21455
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
21456
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYD
21457
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYI
21458
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYD
21459
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYI
21460
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYD
21461
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYI
21462
$MYSQLTEST_VARDIR/master-data/test/t1.frm
21463
$MYSQLTEST_VARDIR/master-data/test/t1.par
21465
# check prerequisites-1 success: 1
21466
# check COUNT(*) success: 1
21467
# check MIN/MAX(f_int1) success: 1
21468
# check MIN/MAX(f_int2) success: 1
21469
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21470
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21471
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21472
WHERE f_int1 IN (2,3);
21473
# check prerequisites-3 success: 1
21474
DELETE FROM t1 WHERE f_charbig = 'delete me';
21475
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21476
# check read via f_int1 success: 1
21477
# check read via f_int2 success: 1
21479
# check multiple-1 success: 1
21480
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21482
# check multiple-2 success: 1
21483
INSERT INTO t1 SELECT * FROM t0_template
21484
WHERE MOD(f_int1,3) = 0;
21486
# check multiple-3 success: 1
21487
UPDATE t1 SET f_int1 = f_int1 + @max_row
21488
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21489
AND @max_row_div2 + @max_row_div4;
21491
# check multiple-4 success: 1
21493
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21494
AND @max_row_div2 + @max_row_div4 + @max_row;
21496
# check multiple-5 success: 1
21497
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21499
SET f_int1 = @cur_value , f_int2 = @cur_value,
21500
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21501
f_charbig = '#SINGLE#';
21503
# check single-1 success: 1
21504
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21506
SET f_int1 = @cur_value , f_int2 = @cur_value,
21507
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21508
f_charbig = '#SINGLE#';
21510
# check single-2 success: 1
21511
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21512
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21513
UPDATE t1 SET f_int1 = @cur_value2
21514
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21516
# check single-3 success: 1
21517
SET @cur_value1= -1;
21518
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21519
UPDATE t1 SET f_int1 = @cur_value1
21520
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21522
# check single-4 success: 1
21523
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21524
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21526
# check single-5 success: 1
21527
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21529
# check single-6 success: 1
21530
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21532
# check single-7 success: 1
21533
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21534
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21535
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21536
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21537
f_charbig = '#NULL#';
21539
SET f_int1 = NULL , f_int2 = -@max_row,
21540
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21541
f_charbig = '#NULL#';
21542
# check null success: 1
21544
# check null-1 success: 1
21545
UPDATE t1 SET f_int1 = -@max_row
21546
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21547
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21549
# check null-2 success: 1
21550
UPDATE t1 SET f_int1 = NULL
21551
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21552
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21554
# check null-3 success: 1
21556
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21557
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21559
# check null-4 success: 1
21561
WHERE f_int1 = 0 AND f_int2 = 0
21562
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21563
AND f_charbig = '#NULL#';
21565
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21566
SELECT f_int1, f_int1, '', '', 'was inserted'
21567
FROM t0_template source_tab
21568
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21570
# check transactions-1 success: 1
21573
# check transactions-2 success: 1
21576
# check transactions-3 success: 1
21577
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21581
# check transactions-4 success: 1
21582
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21583
SELECT f_int1, f_int1, '', '', 'was inserted'
21584
FROM t0_template source_tab
21585
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21587
# check transactions-5 success: 1
21590
Warning 1196 Some non-transactional changed tables couldn't be rolled back
21592
# check transactions-6 success: 1
21593
# INFO: Storage engine used for t1 seems to be not transactional.
21596
# check transactions-7 success: 1
21597
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21599
SET @@session.sql_mode = 'traditional';
21600
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21601
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21602
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21603
'', '', 'was inserted' FROM t0_template
21604
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21605
ERROR 22012: Division by 0
21608
# check transactions-8 success: 1
21609
# INFO: Storage engine used for t1 seems to be unable to revert
21610
# changes made by the failing statement.
21611
SET @@session.sql_mode = '';
21613
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21615
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21617
# check special-1 success: 1
21618
UPDATE t1 SET f_charbig = '';
21620
# check special-2 success: 1
21621
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21622
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21623
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21624
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21625
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21626
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21627
'just inserted' FROM t0_template
21628
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21629
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21631
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21632
f_charbig = 'updated by trigger'
21633
WHERE f_int1 = new.f_int1;
21635
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21636
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21637
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21639
# check trigger-1 success: 1
21640
DROP TRIGGER trg_1;
21641
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21642
f_int2 = CAST(f_char1 AS SIGNED INT),
21643
f_charbig = 'just inserted'
21644
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21646
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21647
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21648
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21649
'just inserted' FROM t0_template
21650
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21651
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21653
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21654
f_charbig = 'updated by trigger'
21655
WHERE f_int1 = new.f_int1;
21657
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21658
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21659
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21661
# check trigger-2 success: 1
21662
DROP TRIGGER trg_1;
21663
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21664
f_int2 = CAST(f_char1 AS SIGNED INT),
21665
f_charbig = 'just inserted'
21666
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21668
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21669
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21670
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21671
'just inserted' FROM t0_template
21672
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21673
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21675
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21676
f_charbig = 'updated by trigger'
21677
WHERE f_int1 = new.f_int1;
21679
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21680
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21682
# check trigger-3 success: 1
21683
DROP TRIGGER trg_1;
21684
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21685
f_int2 = CAST(f_char1 AS SIGNED INT),
21686
f_charbig = 'just inserted'
21687
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21689
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21690
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21691
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21692
'just inserted' FROM t0_template
21693
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21694
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21696
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21697
f_charbig = 'updated by trigger'
21698
WHERE f_int1 = - old.f_int1;
21700
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21701
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21703
# check trigger-4 success: 1
21704
DROP TRIGGER trg_1;
21705
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21706
f_int2 = CAST(f_char1 AS SIGNED INT),
21707
f_charbig = 'just inserted'
21708
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21710
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21711
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21712
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21713
'just inserted' FROM t0_template
21714
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21715
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21717
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21718
f_charbig = 'updated by trigger'
21719
WHERE f_int1 = new.f_int1;
21721
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21722
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21724
# check trigger-5 success: 1
21725
DROP TRIGGER trg_1;
21726
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21727
f_int2 = CAST(f_char1 AS SIGNED INT),
21728
f_charbig = 'just inserted'
21729
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21731
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21732
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21733
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21734
'just inserted' FROM t0_template
21735
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21736
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21738
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21739
f_charbig = 'updated by trigger'
21740
WHERE f_int1 = - old.f_int1;
21742
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21743
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21745
# check trigger-6 success: 1
21746
DROP TRIGGER trg_1;
21747
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21748
f_int2 = CAST(f_char1 AS SIGNED INT),
21749
f_charbig = 'just inserted'
21750
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21752
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21753
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21754
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21755
'just inserted' FROM t0_template
21756
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21757
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21759
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21760
f_charbig = 'updated by trigger'
21761
WHERE f_int1 = - old.f_int1;
21764
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21766
# check trigger-7 success: 1
21767
DROP TRIGGER trg_1;
21768
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21769
f_int2 = CAST(f_char1 AS SIGNED INT),
21770
f_charbig = 'just inserted'
21771
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21773
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21774
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21775
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21776
'just inserted' FROM t0_template
21777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21778
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21780
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21781
f_charbig = 'updated by trigger'
21782
WHERE f_int1 = - old.f_int1;
21785
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21787
# check trigger-8 success: 1
21788
DROP TRIGGER trg_1;
21789
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21790
f_int2 = CAST(f_char1 AS SIGNED INT),
21791
f_charbig = 'just inserted'
21792
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21794
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21796
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21797
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21799
SET new.f_int1 = old.f_int1 + @max_row,
21800
new.f_int2 = old.f_int2 - @max_row,
21801
new.f_charbig = '####updated per update trigger####';
21804
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21805
f_charbig = '####updated per update statement itself####';
21807
# check trigger-9 success: 1
21808
DROP TRIGGER trg_2;
21809
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21810
f_int2 = CAST(f_char1 AS SIGNED INT),
21811
f_charbig = CONCAT('===',f_char1,'===');
21812
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21814
SET new.f_int1 = new.f_int1 + @max_row,
21815
new.f_int2 = new.f_int2 - @max_row,
21816
new.f_charbig = '####updated per update trigger####';
21819
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21820
f_charbig = '####updated per update statement itself####';
21822
# check trigger-10 success: 1
21823
DROP TRIGGER trg_2;
21824
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21825
f_int2 = CAST(f_char1 AS SIGNED INT),
21826
f_charbig = CONCAT('===',f_char1,'===');
21827
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21829
SET new.f_int1 = @my_max1 + @counter,
21830
new.f_int2 = @my_min2 - @counter,
21831
new.f_charbig = '####updated per insert trigger####';
21832
SET @counter = @counter + 1;
21835
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21836
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21837
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21838
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21839
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21841
DROP TRIGGER trg_3;
21843
# check trigger-11 success: 1
21845
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21846
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21847
AND f_charbig = '####updated per insert trigger####';
21848
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21850
SET new.f_int1 = @my_max1 + @counter,
21851
new.f_int2 = @my_min2 - @counter,
21852
new.f_charbig = '####updated per insert trigger####';
21853
SET @counter = @counter + 1;
21856
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21857
INSERT INTO t1 (f_char1, f_char2, f_charbig)
21858
SELECT CAST(f_int1 AS CHAR),
21859
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21860
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21862
DROP TRIGGER trg_3;
21864
# check trigger-12 success: 1
21866
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21867
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21868
AND f_charbig = '####updated per insert trigger####';
21870
Table Op Msg_type Msg_text
21871
test.t1 analyze note The storage engine for the table doesn't support analyze
21872
CHECK TABLE t1 EXTENDED;
21873
Table Op Msg_type Msg_text
21874
test.t1 check note The storage engine for the table doesn't support check
21875
CHECKSUM TABLE t1 EXTENDED;
21877
test.t1 <some_value>
21879
Table Op Msg_type Msg_text
21880
test.t1 optimize note The storage engine for the table doesn't support optimize
21881
# check layout success: 1
21882
REPAIR TABLE t1 EXTENDED;
21883
Table Op Msg_type Msg_text
21884
test.t1 repair note The storage engine for the table doesn't support repair
21885
# check layout success: 1
21888
# check TRUNCATE success: 1
21889
# check layout success: 1
21890
# End usability test (inc/partition_check.inc)
21897
f_charbig VARCHAR(1000)
21898
, UNIQUE INDEX uidx1 (f_int1,f_int2)
21900
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
21901
(PARTITION part_3 VALUES IN (-3),
21902
PARTITION part_2 VALUES IN (-2),
21903
PARTITION part_1 VALUES IN (-1),
21904
PARTITION part_N VALUES IN (NULL),
21905
PARTITION part0 VALUES IN (0),
21906
PARTITION part1 VALUES IN (1),
21907
PARTITION part2 VALUES IN (2),
21908
PARTITION part3 VALUES IN (3));
21909
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21910
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21911
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21912
ALTER TABLE t1 DROP INDEX uidx1;
21913
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21914
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21915
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21916
# Start usability test (inc/partition_check.inc)
21918
SHOW CREATE TABLE t1;
21920
t1 CREATE TABLE `t1` (
21921
`f_int1` int(11) DEFAULT NULL,
21922
`f_int2` int(11) DEFAULT NULL,
21923
`f_char1` char(20) DEFAULT NULL,
21924
`f_char2` char(20) DEFAULT NULL,
21925
`f_charbig` varchar(1000) DEFAULT NULL
21926
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,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) */
21929
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD
21930
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI
21931
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD
21932
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI
21933
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD
21934
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI
21935
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD
21936
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI
21937
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD
21938
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI
21939
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD
21940
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI
21941
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD
21942
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI
21943
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD
21944
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI
21945
$MYSQLTEST_VARDIR/master-data/test/t1.frm
21946
$MYSQLTEST_VARDIR/master-data/test/t1.par
21948
# check prerequisites-1 success: 1
21949
# check COUNT(*) success: 1
21950
# check MIN/MAX(f_int1) success: 1
21951
# check MIN/MAX(f_int2) success: 1
21952
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21953
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21954
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21955
WHERE f_int1 IN (2,3);
21956
# check prerequisites-3 success: 1
21957
DELETE FROM t1 WHERE f_charbig = 'delete me';
21958
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21959
# check read via f_int1 success: 1
21960
# check read via f_int2 success: 1
21962
# check multiple-1 success: 1
21963
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21965
# check multiple-2 success: 1
21966
INSERT INTO t1 SELECT * FROM t0_template
21967
WHERE MOD(f_int1,3) = 0;
21969
# check multiple-3 success: 1
21970
UPDATE t1 SET f_int1 = f_int1 + @max_row
21971
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21972
AND @max_row_div2 + @max_row_div4;
21974
# check multiple-4 success: 1
21976
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21977
AND @max_row_div2 + @max_row_div4 + @max_row;
21979
# check multiple-5 success: 1
21980
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21982
SET f_int1 = @cur_value , f_int2 = @cur_value,
21983
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21984
f_charbig = '#SINGLE#';
21986
# check single-1 success: 1
21987
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21989
SET f_int1 = @cur_value , f_int2 = @cur_value,
21990
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21991
f_charbig = '#SINGLE#';
21993
# check single-2 success: 1
21994
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21995
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21996
UPDATE t1 SET f_int1 = @cur_value2
21997
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21999
# check single-3 success: 1
22000
SET @cur_value1= -1;
22001
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22002
UPDATE t1 SET f_int1 = @cur_value1
22003
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22005
# check single-4 success: 1
22006
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22007
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22009
# check single-5 success: 1
22010
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22012
# check single-6 success: 1
22013
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22015
# check single-7 success: 1
22016
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22017
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22018
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22019
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22020
f_charbig = '#NULL#';
22022
SET f_int1 = NULL , f_int2 = -@max_row,
22023
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22024
f_charbig = '#NULL#';
22025
# check null success: 1
22027
# check null-1 success: 1
22028
UPDATE t1 SET f_int1 = -@max_row
22029
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22030
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22032
# check null-2 success: 1
22033
UPDATE t1 SET f_int1 = NULL
22034
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22035
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22037
# check null-3 success: 1
22039
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22040
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22042
# check null-4 success: 1
22044
WHERE f_int1 = 0 AND f_int2 = 0
22045
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22046
AND f_charbig = '#NULL#';
22048
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22049
SELECT f_int1, f_int1, '', '', 'was inserted'
22050
FROM t0_template source_tab
22051
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22053
# check transactions-1 success: 1
22056
# check transactions-2 success: 1
22059
# check transactions-3 success: 1
22060
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22064
# check transactions-4 success: 1
22065
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22066
SELECT f_int1, f_int1, '', '', 'was inserted'
22067
FROM t0_template source_tab
22068
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22070
# check transactions-5 success: 1
22073
Warning 1196 Some non-transactional changed tables couldn't be rolled back
22075
# check transactions-6 success: 1
22076
# INFO: Storage engine used for t1 seems to be not transactional.
22079
# check transactions-7 success: 1
22080
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22082
SET @@session.sql_mode = 'traditional';
22083
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22084
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22085
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22086
'', '', 'was inserted' FROM t0_template
22087
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22088
ERROR 22012: Division by 0
22091
# check transactions-8 success: 1
22092
# INFO: Storage engine used for t1 seems to be unable to revert
22093
# changes made by the failing statement.
22094
SET @@session.sql_mode = '';
22096
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22098
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22100
# check special-1 success: 1
22101
UPDATE t1 SET f_charbig = '';
22103
# check special-2 success: 1
22104
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22105
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22106
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22107
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22108
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22109
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22110
'just inserted' FROM t0_template
22111
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22112
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22114
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22115
f_charbig = 'updated by trigger'
22116
WHERE f_int1 = new.f_int1;
22118
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22119
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22120
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22122
# check trigger-1 success: 1
22123
DROP TRIGGER trg_1;
22124
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22125
f_int2 = CAST(f_char1 AS SIGNED INT),
22126
f_charbig = 'just inserted'
22127
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22129
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22130
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22131
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22132
'just inserted' FROM t0_template
22133
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22134
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22136
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22137
f_charbig = 'updated by trigger'
22138
WHERE f_int1 = new.f_int1;
22140
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22141
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22142
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22144
# check trigger-2 success: 1
22145
DROP TRIGGER trg_1;
22146
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22147
f_int2 = CAST(f_char1 AS SIGNED INT),
22148
f_charbig = 'just inserted'
22149
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22151
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22152
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22153
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22154
'just inserted' FROM t0_template
22155
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22156
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22158
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22159
f_charbig = 'updated by trigger'
22160
WHERE f_int1 = new.f_int1;
22162
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22163
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22165
# check trigger-3 success: 1
22166
DROP TRIGGER trg_1;
22167
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22168
f_int2 = CAST(f_char1 AS SIGNED INT),
22169
f_charbig = 'just inserted'
22170
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22172
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22173
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22174
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22175
'just inserted' FROM t0_template
22176
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22177
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22179
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22180
f_charbig = 'updated by trigger'
22181
WHERE f_int1 = - old.f_int1;
22183
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22184
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22186
# check trigger-4 success: 1
22187
DROP TRIGGER trg_1;
22188
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22189
f_int2 = CAST(f_char1 AS SIGNED INT),
22190
f_charbig = 'just inserted'
22191
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22193
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22194
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22195
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22196
'just inserted' FROM t0_template
22197
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22198
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22200
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22201
f_charbig = 'updated by trigger'
22202
WHERE f_int1 = new.f_int1;
22204
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22205
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22207
# check trigger-5 success: 1
22208
DROP TRIGGER trg_1;
22209
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22210
f_int2 = CAST(f_char1 AS SIGNED INT),
22211
f_charbig = 'just inserted'
22212
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22214
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22215
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22216
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22217
'just inserted' FROM t0_template
22218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22219
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22221
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22222
f_charbig = 'updated by trigger'
22223
WHERE f_int1 = - old.f_int1;
22225
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22226
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22228
# check trigger-6 success: 1
22229
DROP TRIGGER trg_1;
22230
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22231
f_int2 = CAST(f_char1 AS SIGNED INT),
22232
f_charbig = 'just inserted'
22233
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22235
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22236
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22237
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22238
'just inserted' FROM t0_template
22239
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22240
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22242
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22243
f_charbig = 'updated by trigger'
22244
WHERE f_int1 = - old.f_int1;
22247
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22249
# check trigger-7 success: 1
22250
DROP TRIGGER trg_1;
22251
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22252
f_int2 = CAST(f_char1 AS SIGNED INT),
22253
f_charbig = 'just inserted'
22254
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22256
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22257
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22258
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22259
'just inserted' FROM t0_template
22260
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22261
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22263
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22264
f_charbig = 'updated by trigger'
22265
WHERE f_int1 = - old.f_int1;
22268
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22270
# check trigger-8 success: 1
22271
DROP TRIGGER trg_1;
22272
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22273
f_int2 = CAST(f_char1 AS SIGNED INT),
22274
f_charbig = 'just inserted'
22275
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22277
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22279
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22280
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22282
SET new.f_int1 = old.f_int1 + @max_row,
22283
new.f_int2 = old.f_int2 - @max_row,
22284
new.f_charbig = '####updated per update trigger####';
22287
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22288
f_charbig = '####updated per update statement itself####';
22290
# check trigger-9 success: 1
22291
DROP TRIGGER trg_2;
22292
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22293
f_int2 = CAST(f_char1 AS SIGNED INT),
22294
f_charbig = CONCAT('===',f_char1,'===');
22295
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22297
SET new.f_int1 = new.f_int1 + @max_row,
22298
new.f_int2 = new.f_int2 - @max_row,
22299
new.f_charbig = '####updated per update trigger####';
22302
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22303
f_charbig = '####updated per update statement itself####';
22305
# check trigger-10 success: 1
22306
DROP TRIGGER trg_2;
22307
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22308
f_int2 = CAST(f_char1 AS SIGNED INT),
22309
f_charbig = CONCAT('===',f_char1,'===');
22310
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22312
SET new.f_int1 = @my_max1 + @counter,
22313
new.f_int2 = @my_min2 - @counter,
22314
new.f_charbig = '####updated per insert trigger####';
22315
SET @counter = @counter + 1;
22318
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22319
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22320
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22321
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22322
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22324
DROP TRIGGER trg_3;
22326
# check trigger-11 success: 1
22328
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22329
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22330
AND f_charbig = '####updated per insert trigger####';
22331
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22333
SET new.f_int1 = @my_max1 + @counter,
22334
new.f_int2 = @my_min2 - @counter,
22335
new.f_charbig = '####updated per insert trigger####';
22336
SET @counter = @counter + 1;
22339
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22340
INSERT INTO t1 (f_char1, f_char2, f_charbig)
22341
SELECT CAST(f_int1 AS CHAR),
22342
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22343
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22345
DROP TRIGGER trg_3;
22347
# check trigger-12 success: 1
22349
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22350
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22351
AND f_charbig = '####updated per insert trigger####';
22353
Table Op Msg_type Msg_text
22354
test.t1 analyze note The storage engine for the table doesn't support analyze
22355
CHECK TABLE t1 EXTENDED;
22356
Table Op Msg_type Msg_text
22357
test.t1 check note The storage engine for the table doesn't support check
22358
CHECKSUM TABLE t1 EXTENDED;
22360
test.t1 <some_value>
22362
Table Op Msg_type Msg_text
22363
test.t1 optimize note The storage engine for the table doesn't support optimize
22364
# check layout success: 1
22365
REPAIR TABLE t1 EXTENDED;
22366
Table Op Msg_type Msg_text
22367
test.t1 repair note The storage engine for the table doesn't support repair
22368
# check layout success: 1
22371
# check TRUNCATE success: 1
22372
# check layout success: 1
22373
# End usability test (inc/partition_check.inc)
22380
f_charbig VARCHAR(1000)
22381
, UNIQUE INDEX uidx1 (f_int1,f_int2)
22383
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
22384
(PARTITION parta VALUES LESS THAN (0),
22385
PARTITION partb VALUES LESS THAN (5),
22386
PARTITION partc VALUES LESS THAN (10),
22387
PARTITION partd VALUES LESS THAN (10 + 5),
22388
PARTITION parte VALUES LESS THAN (20),
22389
PARTITION partf VALUES LESS THAN (2147483646));
22390
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22391
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22392
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22393
ALTER TABLE t1 DROP INDEX uidx1;
22394
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22395
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22396
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22397
# Start usability test (inc/partition_check.inc)
22399
SHOW CREATE TABLE t1;
22401
t1 CREATE TABLE `t1` (
22402
`f_int1` int(11) DEFAULT NULL,
22403
`f_int2` int(11) DEFAULT NULL,
22404
`f_char1` char(20) DEFAULT NULL,
22405
`f_char2` char(20) DEFAULT NULL,
22406
`f_charbig` varchar(1000) DEFAULT NULL
22407
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 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 (15) ENGINE = MyISAM, PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
22410
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD
22411
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI
22412
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYD
22413
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYI
22414
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYD
22415
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYI
22416
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYD
22417
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYI
22418
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYD
22419
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYI
22420
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYD
22421
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYI
22422
$MYSQLTEST_VARDIR/master-data/test/t1.frm
22423
$MYSQLTEST_VARDIR/master-data/test/t1.par
22425
# check prerequisites-1 success: 1
22426
# check COUNT(*) success: 1
22427
# check MIN/MAX(f_int1) success: 1
22428
# check MIN/MAX(f_int2) success: 1
22429
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22430
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22431
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22432
WHERE f_int1 IN (2,3);
22433
# check prerequisites-3 success: 1
22434
DELETE FROM t1 WHERE f_charbig = 'delete me';
22435
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
22436
# check read via f_int1 success: 1
22437
# check read via f_int2 success: 1
22439
# check multiple-1 success: 1
22440
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22442
# check multiple-2 success: 1
22443
INSERT INTO t1 SELECT * FROM t0_template
22444
WHERE MOD(f_int1,3) = 0;
22446
# check multiple-3 success: 1
22447
UPDATE t1 SET f_int1 = f_int1 + @max_row
22448
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22449
AND @max_row_div2 + @max_row_div4;
22451
# check multiple-4 success: 1
22453
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22454
AND @max_row_div2 + @max_row_div4 + @max_row;
22456
# check multiple-5 success: 1
22457
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22459
SET f_int1 = @cur_value , f_int2 = @cur_value,
22460
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22461
f_charbig = '#SINGLE#';
22463
# check single-1 success: 1
22464
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22466
SET f_int1 = @cur_value , f_int2 = @cur_value,
22467
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22468
f_charbig = '#SINGLE#';
22470
# check single-2 success: 1
22471
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22472
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22473
UPDATE t1 SET f_int1 = @cur_value2
22474
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22476
# check single-3 success: 1
22477
SET @cur_value1= -1;
22478
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22479
UPDATE t1 SET f_int1 = @cur_value1
22480
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22482
# check single-4 success: 1
22483
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22484
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22486
# check single-5 success: 1
22487
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22489
# check single-6 success: 1
22490
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22491
ERROR HY000: Table has no partition for value 2147483647
22492
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22493
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22494
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22495
f_charbig = '#NULL#';
22497
SET f_int1 = NULL , f_int2 = -@max_row,
22498
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22499
f_charbig = '#NULL#';
22500
# check null success: 1
22502
# check null-1 success: 1
22503
UPDATE t1 SET f_int1 = -@max_row
22504
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22505
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22507
# check null-2 success: 1
22508
UPDATE t1 SET f_int1 = NULL
22509
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22510
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22512
# check null-3 success: 1
22514
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22515
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22517
# check null-4 success: 1
22519
WHERE f_int1 = 0 AND f_int2 = 0
22520
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22521
AND f_charbig = '#NULL#';
22523
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22524
SELECT f_int1, f_int1, '', '', 'was inserted'
22525
FROM t0_template source_tab
22526
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22528
# check transactions-1 success: 1
22531
# check transactions-2 success: 1
22534
# check transactions-3 success: 1
22535
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22539
# check transactions-4 success: 1
22540
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22541
SELECT f_int1, f_int1, '', '', 'was inserted'
22542
FROM t0_template source_tab
22543
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22545
# check transactions-5 success: 1
22548
Warning 1196 Some non-transactional changed tables couldn't be rolled back
22550
# check transactions-6 success: 1
22551
# INFO: Storage engine used for t1 seems to be not transactional.
22554
# check transactions-7 success: 1
22555
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22557
SET @@session.sql_mode = 'traditional';
22558
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22559
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22560
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22561
'', '', 'was inserted' FROM t0_template
22562
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22563
ERROR 22012: Division by 0
22566
# check transactions-8 success: 1
22567
# INFO: Storage engine used for t1 seems to be unable to revert
22568
# changes made by the failing statement.
22569
SET @@session.sql_mode = '';
22571
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22573
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22575
# check special-1 success: 1
22576
UPDATE t1 SET f_charbig = '';
22578
# check special-2 success: 1
22579
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22580
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22581
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22582
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22583
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22584
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22585
'just inserted' FROM t0_template
22586
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22587
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22589
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22590
f_charbig = 'updated by trigger'
22591
WHERE f_int1 = new.f_int1;
22593
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22594
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22595
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22597
# check trigger-1 success: 1
22598
DROP TRIGGER trg_1;
22599
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22600
f_int2 = CAST(f_char1 AS SIGNED INT),
22601
f_charbig = 'just inserted'
22602
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22604
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22605
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22606
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22607
'just inserted' FROM t0_template
22608
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22609
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22611
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22612
f_charbig = 'updated by trigger'
22613
WHERE f_int1 = new.f_int1;
22615
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22616
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22617
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22619
# check trigger-2 success: 1
22620
DROP TRIGGER trg_1;
22621
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22622
f_int2 = CAST(f_char1 AS SIGNED INT),
22623
f_charbig = 'just inserted'
22624
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22626
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22627
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22628
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22629
'just inserted' FROM t0_template
22630
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22631
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22633
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22634
f_charbig = 'updated by trigger'
22635
WHERE f_int1 = new.f_int1;
22637
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22638
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22640
# check trigger-3 success: 1
22641
DROP TRIGGER trg_1;
22642
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22643
f_int2 = CAST(f_char1 AS SIGNED INT),
22644
f_charbig = 'just inserted'
22645
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22647
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22648
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22649
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22650
'just inserted' FROM t0_template
22651
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22652
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22654
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22655
f_charbig = 'updated by trigger'
22656
WHERE f_int1 = - old.f_int1;
22658
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22659
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22661
# check trigger-4 success: 1
22662
DROP TRIGGER trg_1;
22663
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22664
f_int2 = CAST(f_char1 AS SIGNED INT),
22665
f_charbig = 'just inserted'
22666
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22668
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22669
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22670
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22671
'just inserted' FROM t0_template
22672
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22673
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22675
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22676
f_charbig = 'updated by trigger'
22677
WHERE f_int1 = new.f_int1;
22679
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22680
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22682
# check trigger-5 success: 1
22683
DROP TRIGGER trg_1;
22684
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22685
f_int2 = CAST(f_char1 AS SIGNED INT),
22686
f_charbig = 'just inserted'
22687
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22689
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22690
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22691
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22692
'just inserted' FROM t0_template
22693
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22694
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22696
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22697
f_charbig = 'updated by trigger'
22698
WHERE f_int1 = - old.f_int1;
22700
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22701
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22703
# check trigger-6 success: 1
22704
DROP TRIGGER trg_1;
22705
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22706
f_int2 = CAST(f_char1 AS SIGNED INT),
22707
f_charbig = 'just inserted'
22708
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22710
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22711
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22712
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22713
'just inserted' FROM t0_template
22714
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22715
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22717
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22718
f_charbig = 'updated by trigger'
22719
WHERE f_int1 = - old.f_int1;
22722
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22724
# check trigger-7 success: 1
22725
DROP TRIGGER trg_1;
22726
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22727
f_int2 = CAST(f_char1 AS SIGNED INT),
22728
f_charbig = 'just inserted'
22729
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22731
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22732
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22733
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22734
'just inserted' FROM t0_template
22735
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22736
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22738
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22739
f_charbig = 'updated by trigger'
22740
WHERE f_int1 = - old.f_int1;
22743
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22745
# check trigger-8 success: 1
22746
DROP TRIGGER trg_1;
22747
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22748
f_int2 = CAST(f_char1 AS SIGNED INT),
22749
f_charbig = 'just inserted'
22750
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22752
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22754
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22755
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22757
SET new.f_int1 = old.f_int1 + @max_row,
22758
new.f_int2 = old.f_int2 - @max_row,
22759
new.f_charbig = '####updated per update trigger####';
22762
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22763
f_charbig = '####updated per update statement itself####';
22765
# check trigger-9 success: 1
22766
DROP TRIGGER trg_2;
22767
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22768
f_int2 = CAST(f_char1 AS SIGNED INT),
22769
f_charbig = CONCAT('===',f_char1,'===');
22770
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22772
SET new.f_int1 = new.f_int1 + @max_row,
22773
new.f_int2 = new.f_int2 - @max_row,
22774
new.f_charbig = '####updated per update trigger####';
22777
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22778
f_charbig = '####updated per update statement itself####';
22780
# check trigger-10 success: 1
22781
DROP TRIGGER trg_2;
22782
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22783
f_int2 = CAST(f_char1 AS SIGNED INT),
22784
f_charbig = CONCAT('===',f_char1,'===');
22785
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22787
SET new.f_int1 = @my_max1 + @counter,
22788
new.f_int2 = @my_min2 - @counter,
22789
new.f_charbig = '####updated per insert trigger####';
22790
SET @counter = @counter + 1;
22793
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22794
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22795
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22796
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22797
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22799
DROP TRIGGER trg_3;
22801
# check trigger-11 success: 1
22803
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22804
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22805
AND f_charbig = '####updated per insert trigger####';
22806
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22808
SET new.f_int1 = @my_max1 + @counter,
22809
new.f_int2 = @my_min2 - @counter,
22810
new.f_charbig = '####updated per insert trigger####';
22811
SET @counter = @counter + 1;
22814
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22815
INSERT INTO t1 (f_char1, f_char2, f_charbig)
22816
SELECT CAST(f_int1 AS CHAR),
22817
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22818
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22820
DROP TRIGGER trg_3;
22822
# check trigger-12 success: 1
22824
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22825
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22826
AND f_charbig = '####updated per insert trigger####';
22828
Table Op Msg_type Msg_text
22829
test.t1 analyze note The storage engine for the table doesn't support analyze
22830
CHECK TABLE t1 EXTENDED;
22831
Table Op Msg_type Msg_text
22832
test.t1 check note The storage engine for the table doesn't support check
22833
CHECKSUM TABLE t1 EXTENDED;
22835
test.t1 <some_value>
22837
Table Op Msg_type Msg_text
22838
test.t1 optimize note The storage engine for the table doesn't support optimize
22839
# check layout success: 1
22840
REPAIR TABLE t1 EXTENDED;
22841
Table Op Msg_type Msg_text
22842
test.t1 repair note The storage engine for the table doesn't support repair
22843
# check layout success: 1
22846
# check TRUNCATE success: 1
22847
# check layout success: 1
22848
# End usability test (inc/partition_check.inc)
22855
f_charbig VARCHAR(1000)
22856
, UNIQUE INDEX uidx1 (f_int1,f_int2)
22858
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
22859
(PARTITION parta VALUES LESS THAN (0),
22860
PARTITION partb VALUES LESS THAN (5),
22861
PARTITION partc VALUES LESS THAN (10),
22862
PARTITION partd VALUES LESS THAN (2147483646));
22863
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22864
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22865
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22866
ALTER TABLE t1 DROP INDEX uidx1;
22867
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22868
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22869
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22870
# Start usability test (inc/partition_check.inc)
22872
SHOW CREATE TABLE t1;
22874
t1 CREATE TABLE `t1` (
22875
`f_int1` int(11) DEFAULT NULL,
22876
`f_int2` int(11) DEFAULT NULL,
22877
`f_char1` char(20) DEFAULT NULL,
22878
`f_char2` char(20) DEFAULT NULL,
22879
`f_charbig` varchar(1000) DEFAULT NULL
22880
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) 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) */
22883
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYD
22884
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYI
22885
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYD
22886
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYI
22887
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYD
22888
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYI
22889
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYD
22890
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYI
22891
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYD
22892
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYI
22893
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYD
22894
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYI
22895
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYD
22896
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYI
22897
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYD
22898
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYI
22899
$MYSQLTEST_VARDIR/master-data/test/t1.frm
22900
$MYSQLTEST_VARDIR/master-data/test/t1.par
22902
# check prerequisites-1 success: 1
22903
# check COUNT(*) success: 1
22904
# check MIN/MAX(f_int1) success: 1
22905
# check MIN/MAX(f_int2) success: 1
22906
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22907
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22908
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22909
WHERE f_int1 IN (2,3);
22910
# check prerequisites-3 success: 1
22911
DELETE FROM t1 WHERE f_charbig = 'delete me';
22912
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
22913
# check read via f_int1 success: 1
22914
# check read via f_int2 success: 1
22916
# check multiple-1 success: 1
22917
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22919
# check multiple-2 success: 1
22920
INSERT INTO t1 SELECT * FROM t0_template
22921
WHERE MOD(f_int1,3) = 0;
22923
# check multiple-3 success: 1
22924
UPDATE t1 SET f_int1 = f_int1 + @max_row
22925
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22926
AND @max_row_div2 + @max_row_div4;
22928
# check multiple-4 success: 1
22930
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22931
AND @max_row_div2 + @max_row_div4 + @max_row;
22933
# check multiple-5 success: 1
22934
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22936
SET f_int1 = @cur_value , f_int2 = @cur_value,
22937
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22938
f_charbig = '#SINGLE#';
22940
# check single-1 success: 1
22941
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22943
SET f_int1 = @cur_value , f_int2 = @cur_value,
22944
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22945
f_charbig = '#SINGLE#';
22947
# check single-2 success: 1
22948
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22949
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22950
UPDATE t1 SET f_int1 = @cur_value2
22951
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22953
# check single-3 success: 1
22954
SET @cur_value1= -1;
22955
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22956
UPDATE t1 SET f_int1 = @cur_value1
22957
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22959
# check single-4 success: 1
22960
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22961
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22963
# check single-5 success: 1
22964
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22966
# check single-6 success: 1
22967
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22968
ERROR HY000: Table has no partition for value 2147483647
22969
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22970
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22971
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22972
f_charbig = '#NULL#';
22974
SET f_int1 = NULL , f_int2 = -@max_row,
22975
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22976
f_charbig = '#NULL#';
22977
# check null success: 1
22979
# check null-1 success: 1
22980
UPDATE t1 SET f_int1 = -@max_row
22981
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22982
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22984
# check null-2 success: 1
22985
UPDATE t1 SET f_int1 = NULL
22986
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22987
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22989
# check null-3 success: 1
22991
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22992
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22994
# check null-4 success: 1
22996
WHERE f_int1 = 0 AND f_int2 = 0
22997
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22998
AND f_charbig = '#NULL#';
23000
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23001
SELECT f_int1, f_int1, '', '', 'was inserted'
23002
FROM t0_template source_tab
23003
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23005
# check transactions-1 success: 1
23008
# check transactions-2 success: 1
23011
# check transactions-3 success: 1
23012
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23016
# check transactions-4 success: 1
23017
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23018
SELECT f_int1, f_int1, '', '', 'was inserted'
23019
FROM t0_template source_tab
23020
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23022
# check transactions-5 success: 1
23025
Warning 1196 Some non-transactional changed tables couldn't be rolled back
23027
# check transactions-6 success: 1
23028
# INFO: Storage engine used for t1 seems to be not transactional.
23031
# check transactions-7 success: 1
23032
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23034
SET @@session.sql_mode = 'traditional';
23035
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23036
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23037
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23038
'', '', 'was inserted' FROM t0_template
23039
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23040
ERROR 22012: Division by 0
23043
# check transactions-8 success: 1
23044
# INFO: Storage engine used for t1 seems to be unable to revert
23045
# changes made by the failing statement.
23046
SET @@session.sql_mode = '';
23048
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23050
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23052
# check special-1 success: 1
23053
UPDATE t1 SET f_charbig = '';
23055
# check special-2 success: 1
23056
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23057
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23058
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23059
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23060
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23061
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23062
'just inserted' FROM t0_template
23063
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23064
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23066
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23067
f_charbig = 'updated by trigger'
23068
WHERE f_int1 = new.f_int1;
23070
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23071
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23072
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23074
# check trigger-1 success: 1
23075
DROP TRIGGER trg_1;
23076
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23077
f_int2 = CAST(f_char1 AS SIGNED INT),
23078
f_charbig = 'just inserted'
23079
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23081
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23082
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23083
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23084
'just inserted' FROM t0_template
23085
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23086
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23088
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23089
f_charbig = 'updated by trigger'
23090
WHERE f_int1 = new.f_int1;
23092
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23093
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23094
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23096
# check trigger-2 success: 1
23097
DROP TRIGGER trg_1;
23098
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23099
f_int2 = CAST(f_char1 AS SIGNED INT),
23100
f_charbig = 'just inserted'
23101
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23103
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23104
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23105
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23106
'just inserted' FROM t0_template
23107
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23108
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23110
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23111
f_charbig = 'updated by trigger'
23112
WHERE f_int1 = new.f_int1;
23114
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23115
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23117
# check trigger-3 success: 1
23118
DROP TRIGGER trg_1;
23119
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23120
f_int2 = CAST(f_char1 AS SIGNED INT),
23121
f_charbig = 'just inserted'
23122
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23124
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23125
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23126
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23127
'just inserted' FROM t0_template
23128
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23129
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23131
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23132
f_charbig = 'updated by trigger'
23133
WHERE f_int1 = - old.f_int1;
23135
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23136
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23138
# check trigger-4 success: 1
23139
DROP TRIGGER trg_1;
23140
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23141
f_int2 = CAST(f_char1 AS SIGNED INT),
23142
f_charbig = 'just inserted'
23143
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23145
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23146
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23147
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23148
'just inserted' FROM t0_template
23149
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23150
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23152
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23153
f_charbig = 'updated by trigger'
23154
WHERE f_int1 = new.f_int1;
23156
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23157
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23159
# check trigger-5 success: 1
23160
DROP TRIGGER trg_1;
23161
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23162
f_int2 = CAST(f_char1 AS SIGNED INT),
23163
f_charbig = 'just inserted'
23164
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23166
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23167
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23168
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23169
'just inserted' FROM t0_template
23170
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23171
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23173
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23174
f_charbig = 'updated by trigger'
23175
WHERE f_int1 = - old.f_int1;
23177
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23178
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23180
# check trigger-6 success: 1
23181
DROP TRIGGER trg_1;
23182
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23183
f_int2 = CAST(f_char1 AS SIGNED INT),
23184
f_charbig = 'just inserted'
23185
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23187
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23188
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23189
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23190
'just inserted' FROM t0_template
23191
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23192
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23194
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23195
f_charbig = 'updated by trigger'
23196
WHERE f_int1 = - old.f_int1;
23199
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23201
# check trigger-7 success: 1
23202
DROP TRIGGER trg_1;
23203
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23204
f_int2 = CAST(f_char1 AS SIGNED INT),
23205
f_charbig = 'just inserted'
23206
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23208
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23209
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23210
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23211
'just inserted' FROM t0_template
23212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23213
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23215
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23216
f_charbig = 'updated by trigger'
23217
WHERE f_int1 = - old.f_int1;
23220
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23222
# check trigger-8 success: 1
23223
DROP TRIGGER trg_1;
23224
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23225
f_int2 = CAST(f_char1 AS SIGNED INT),
23226
f_charbig = 'just inserted'
23227
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23229
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23231
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23232
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23234
SET new.f_int1 = old.f_int1 + @max_row,
23235
new.f_int2 = old.f_int2 - @max_row,
23236
new.f_charbig = '####updated per update trigger####';
23239
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23240
f_charbig = '####updated per update statement itself####';
23242
# check trigger-9 success: 1
23243
DROP TRIGGER trg_2;
23244
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23245
f_int2 = CAST(f_char1 AS SIGNED INT),
23246
f_charbig = CONCAT('===',f_char1,'===');
23247
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23249
SET new.f_int1 = new.f_int1 + @max_row,
23250
new.f_int2 = new.f_int2 - @max_row,
23251
new.f_charbig = '####updated per update trigger####';
23254
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23255
f_charbig = '####updated per update statement itself####';
23257
# check trigger-10 success: 1
23258
DROP TRIGGER trg_2;
23259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23260
f_int2 = CAST(f_char1 AS SIGNED INT),
23261
f_charbig = CONCAT('===',f_char1,'===');
23262
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23264
SET new.f_int1 = @my_max1 + @counter,
23265
new.f_int2 = @my_min2 - @counter,
23266
new.f_charbig = '####updated per insert trigger####';
23267
SET @counter = @counter + 1;
23270
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23271
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23272
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23273
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23274
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23276
DROP TRIGGER trg_3;
23278
# check trigger-11 success: 1
23280
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23281
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23282
AND f_charbig = '####updated per insert trigger####';
23283
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23285
SET new.f_int1 = @my_max1 + @counter,
23286
new.f_int2 = @my_min2 - @counter,
23287
new.f_charbig = '####updated per insert trigger####';
23288
SET @counter = @counter + 1;
23291
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23292
INSERT INTO t1 (f_char1, f_char2, f_charbig)
23293
SELECT CAST(f_int1 AS CHAR),
23294
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23295
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23297
DROP TRIGGER trg_3;
23299
# check trigger-12 success: 1
23301
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23302
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23303
AND f_charbig = '####updated per insert trigger####';
23305
Table Op Msg_type Msg_text
23306
test.t1 analyze note The storage engine for the table doesn't support analyze
23307
CHECK TABLE t1 EXTENDED;
23308
Table Op Msg_type Msg_text
23309
test.t1 check note The storage engine for the table doesn't support check
23310
CHECKSUM TABLE t1 EXTENDED;
23312
test.t1 <some_value>
23314
Table Op Msg_type Msg_text
23315
test.t1 optimize note The storage engine for the table doesn't support optimize
23316
# check layout success: 1
23317
REPAIR TABLE t1 EXTENDED;
23318
Table Op Msg_type Msg_text
23319
test.t1 repair note The storage engine for the table doesn't support repair
23320
# check layout success: 1
23323
# check TRUNCATE success: 1
23324
# check layout success: 1
23325
# End usability test (inc/partition_check.inc)
23332
f_charbig VARCHAR(1000)
23333
, UNIQUE INDEX uidx1 (f_int1,f_int2)
23335
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
23336
(PARTITION part1 VALUES LESS THAN (0)
23337
(SUBPARTITION subpart11, SUBPARTITION subpart12),
23338
PARTITION part2 VALUES LESS THAN (5)
23339
(SUBPARTITION subpart21, SUBPARTITION subpart22),
23340
PARTITION part3 VALUES LESS THAN (10)
23341
(SUBPARTITION subpart31, SUBPARTITION subpart32),
23342
PARTITION part4 VALUES LESS THAN (2147483646)
23343
(SUBPARTITION subpart41, SUBPARTITION subpart42));
23344
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23345
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23346
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23347
ALTER TABLE t1 DROP INDEX uidx1;
23348
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23349
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23350
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23351
# Start usability test (inc/partition_check.inc)
23353
SHOW CREATE TABLE t1;
23355
t1 CREATE TABLE `t1` (
23356
`f_int1` int(11) DEFAULT NULL,
23357
`f_int2` int(11) DEFAULT NULL,
23358
`f_char1` char(20) DEFAULT NULL,
23359
`f_char2` char(20) DEFAULT NULL,
23360
`f_charbig` varchar(1000) DEFAULT NULL
23361
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (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)) */
23364
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYD
23365
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYI
23366
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYD
23367
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYI
23368
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYD
23369
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYI
23370
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYD
23371
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYI
23372
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYD
23373
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYI
23374
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYD
23375
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYI
23376
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYD
23377
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYI
23378
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYD
23379
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYI
23380
$MYSQLTEST_VARDIR/master-data/test/t1.frm
23381
$MYSQLTEST_VARDIR/master-data/test/t1.par
23383
# check prerequisites-1 success: 1
23384
# check COUNT(*) success: 1
23385
# check MIN/MAX(f_int1) success: 1
23386
# check MIN/MAX(f_int2) success: 1
23387
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23388
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23389
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23390
WHERE f_int1 IN (2,3);
23391
# check prerequisites-3 success: 1
23392
DELETE FROM t1 WHERE f_charbig = 'delete me';
23393
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23394
# check read via f_int1 success: 1
23395
# check read via f_int2 success: 1
23397
# check multiple-1 success: 1
23398
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23400
# check multiple-2 success: 1
23401
INSERT INTO t1 SELECT * FROM t0_template
23402
WHERE MOD(f_int1,3) = 0;
23404
# check multiple-3 success: 1
23405
UPDATE t1 SET f_int1 = f_int1 + @max_row
23406
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23407
AND @max_row_div2 + @max_row_div4;
23409
# check multiple-4 success: 1
23411
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23412
AND @max_row_div2 + @max_row_div4 + @max_row;
23414
# check multiple-5 success: 1
23415
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23417
SET f_int1 = @cur_value , f_int2 = @cur_value,
23418
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23419
f_charbig = '#SINGLE#';
23421
# check single-1 success: 1
23422
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23424
SET f_int1 = @cur_value , f_int2 = @cur_value,
23425
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23426
f_charbig = '#SINGLE#';
23428
# check single-2 success: 1
23429
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23430
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23431
UPDATE t1 SET f_int1 = @cur_value2
23432
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23434
# check single-3 success: 1
23435
SET @cur_value1= -1;
23436
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23437
UPDATE t1 SET f_int1 = @cur_value1
23438
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23440
# check single-4 success: 1
23441
SELECT MAX(f_int1) INTO @cur_value FROM t1;
23442
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23444
# check single-5 success: 1
23445
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23447
# check single-6 success: 1
23448
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23449
ERROR HY000: Table has no partition for value 2147483647
23450
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23451
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23452
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23453
f_charbig = '#NULL#';
23455
SET f_int1 = NULL , f_int2 = -@max_row,
23456
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23457
f_charbig = '#NULL#';
23458
# check null success: 1
23460
# check null-1 success: 1
23461
UPDATE t1 SET f_int1 = -@max_row
23462
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23463
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23465
# check null-2 success: 1
23466
UPDATE t1 SET f_int1 = NULL
23467
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23468
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23470
# check null-3 success: 1
23472
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23473
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23475
# check null-4 success: 1
23477
WHERE f_int1 = 0 AND f_int2 = 0
23478
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23479
AND f_charbig = '#NULL#';
23481
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23482
SELECT f_int1, f_int1, '', '', 'was inserted'
23483
FROM t0_template source_tab
23484
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23486
# check transactions-1 success: 1
23489
# check transactions-2 success: 1
23492
# check transactions-3 success: 1
23493
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23497
# check transactions-4 success: 1
23498
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23499
SELECT f_int1, f_int1, '', '', 'was inserted'
23500
FROM t0_template source_tab
23501
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23503
# check transactions-5 success: 1
23506
Warning 1196 Some non-transactional changed tables couldn't be rolled back
23508
# check transactions-6 success: 1
23509
# INFO: Storage engine used for t1 seems to be not transactional.
23512
# check transactions-7 success: 1
23513
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23515
SET @@session.sql_mode = 'traditional';
23516
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23517
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23518
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23519
'', '', 'was inserted' FROM t0_template
23520
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23521
ERROR 22012: Division by 0
23524
# check transactions-8 success: 1
23525
# INFO: Storage engine used for t1 seems to be unable to revert
23526
# changes made by the failing statement.
23527
SET @@session.sql_mode = '';
23529
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23531
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23533
# check special-1 success: 1
23534
UPDATE t1 SET f_charbig = '';
23536
# check special-2 success: 1
23537
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23538
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23539
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23540
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23541
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23542
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23543
'just inserted' FROM t0_template
23544
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23545
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23547
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23548
f_charbig = 'updated by trigger'
23549
WHERE f_int1 = new.f_int1;
23551
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23552
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23553
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23555
# check trigger-1 success: 1
23556
DROP TRIGGER trg_1;
23557
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23558
f_int2 = CAST(f_char1 AS SIGNED INT),
23559
f_charbig = 'just inserted'
23560
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23562
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23563
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23564
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23565
'just inserted' FROM t0_template
23566
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23567
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23569
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23570
f_charbig = 'updated by trigger'
23571
WHERE f_int1 = new.f_int1;
23573
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23574
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23575
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23577
# check trigger-2 success: 1
23578
DROP TRIGGER trg_1;
23579
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23580
f_int2 = CAST(f_char1 AS SIGNED INT),
23581
f_charbig = 'just inserted'
23582
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23584
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23585
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23586
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23587
'just inserted' FROM t0_template
23588
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23589
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23591
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23592
f_charbig = 'updated by trigger'
23593
WHERE f_int1 = new.f_int1;
23595
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23596
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23598
# check trigger-3 success: 1
23599
DROP TRIGGER trg_1;
23600
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23601
f_int2 = CAST(f_char1 AS SIGNED INT),
23602
f_charbig = 'just inserted'
23603
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23605
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23606
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23607
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23608
'just inserted' FROM t0_template
23609
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23610
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23612
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23613
f_charbig = 'updated by trigger'
23614
WHERE f_int1 = - old.f_int1;
23616
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23617
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23619
# check trigger-4 success: 1
23620
DROP TRIGGER trg_1;
23621
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23622
f_int2 = CAST(f_char1 AS SIGNED INT),
23623
f_charbig = 'just inserted'
23624
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23626
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23627
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23628
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23629
'just inserted' FROM t0_template
23630
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23631
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23633
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23634
f_charbig = 'updated by trigger'
23635
WHERE f_int1 = new.f_int1;
23637
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23638
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23640
# check trigger-5 success: 1
23641
DROP TRIGGER trg_1;
23642
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23643
f_int2 = CAST(f_char1 AS SIGNED INT),
23644
f_charbig = 'just inserted'
23645
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23647
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23648
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23649
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23650
'just inserted' FROM t0_template
23651
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23652
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23654
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23655
f_charbig = 'updated by trigger'
23656
WHERE f_int1 = - old.f_int1;
23658
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23659
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23661
# check trigger-6 success: 1
23662
DROP TRIGGER trg_1;
23663
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23664
f_int2 = CAST(f_char1 AS SIGNED INT),
23665
f_charbig = 'just inserted'
23666
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23668
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23669
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23670
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23671
'just inserted' FROM t0_template
23672
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23673
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23675
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23676
f_charbig = 'updated by trigger'
23677
WHERE f_int1 = - old.f_int1;
23680
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23682
# check trigger-7 success: 1
23683
DROP TRIGGER trg_1;
23684
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23685
f_int2 = CAST(f_char1 AS SIGNED INT),
23686
f_charbig = 'just inserted'
23687
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23689
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23690
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23691
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23692
'just inserted' FROM t0_template
23693
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23694
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23696
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23697
f_charbig = 'updated by trigger'
23698
WHERE f_int1 = - old.f_int1;
23701
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23703
# check trigger-8 success: 1
23704
DROP TRIGGER trg_1;
23705
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23706
f_int2 = CAST(f_char1 AS SIGNED INT),
23707
f_charbig = 'just inserted'
23708
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23710
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23712
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23713
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23715
SET new.f_int1 = old.f_int1 + @max_row,
23716
new.f_int2 = old.f_int2 - @max_row,
23717
new.f_charbig = '####updated per update trigger####';
23720
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23721
f_charbig = '####updated per update statement itself####';
23723
# check trigger-9 success: 1
23724
DROP TRIGGER trg_2;
23725
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23726
f_int2 = CAST(f_char1 AS SIGNED INT),
23727
f_charbig = CONCAT('===',f_char1,'===');
23728
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23730
SET new.f_int1 = new.f_int1 + @max_row,
23731
new.f_int2 = new.f_int2 - @max_row,
23732
new.f_charbig = '####updated per update trigger####';
23735
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23736
f_charbig = '####updated per update statement itself####';
23738
# check trigger-10 success: 1
23739
DROP TRIGGER trg_2;
23740
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23741
f_int2 = CAST(f_char1 AS SIGNED INT),
23742
f_charbig = CONCAT('===',f_char1,'===');
23743
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23745
SET new.f_int1 = @my_max1 + @counter,
23746
new.f_int2 = @my_min2 - @counter,
23747
new.f_charbig = '####updated per insert trigger####';
23748
SET @counter = @counter + 1;
23751
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23752
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23753
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23754
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23755
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23757
DROP TRIGGER trg_3;
23759
# check trigger-11 success: 1
23761
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23762
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23763
AND f_charbig = '####updated per insert trigger####';
23764
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23766
SET new.f_int1 = @my_max1 + @counter,
23767
new.f_int2 = @my_min2 - @counter,
23768
new.f_charbig = '####updated per insert trigger####';
23769
SET @counter = @counter + 1;
23772
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23773
INSERT INTO t1 (f_char1, f_char2, f_charbig)
23774
SELECT CAST(f_int1 AS CHAR),
23775
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23776
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23778
DROP TRIGGER trg_3;
23780
# check trigger-12 success: 1
23782
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23783
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23784
AND f_charbig = '####updated per insert trigger####';
23786
Table Op Msg_type Msg_text
23787
test.t1 analyze note The storage engine for the table doesn't support analyze
23788
CHECK TABLE t1 EXTENDED;
23789
Table Op Msg_type Msg_text
23790
test.t1 check note The storage engine for the table doesn't support check
23791
CHECKSUM TABLE t1 EXTENDED;
23793
test.t1 <some_value>
23795
Table Op Msg_type Msg_text
23796
test.t1 optimize note The storage engine for the table doesn't support optimize
23797
# check layout success: 1
23798
REPAIR TABLE t1 EXTENDED;
23799
Table Op Msg_type Msg_text
23800
test.t1 repair note The storage engine for the table doesn't support repair
23801
# check layout success: 1
23804
# check TRUNCATE success: 1
23805
# check layout success: 1
23806
# End usability test (inc/partition_check.inc)
23813
f_charbig VARCHAR(1000)
23814
, UNIQUE INDEX uidx1 (f_int1,f_int2)
23816
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
23817
(PARTITION part1 VALUES IN (0)
23818
(SUBPARTITION sp11, SUBPARTITION sp12),
23819
PARTITION part2 VALUES IN (1)
23820
(SUBPARTITION sp21, SUBPARTITION sp22),
23821
PARTITION part3 VALUES IN (2)
23822
(SUBPARTITION sp31, SUBPARTITION sp32),
23823
PARTITION part4 VALUES IN (NULL)
23824
(SUBPARTITION sp41, SUBPARTITION sp42));
23825
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23826
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23827
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23828
ALTER TABLE t1 DROP INDEX uidx1;
23829
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23830
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23831
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23832
# Start usability test (inc/partition_check.inc)
23834
SHOW CREATE TABLE t1;
23836
t1 CREATE TABLE `t1` (
23837
`f_int1` int(11) DEFAULT NULL,
23838
`f_int2` int(11) DEFAULT NULL,
23839
`f_char1` char(20) DEFAULT NULL,
23840
`f_char2` char(20) DEFAULT NULL,
23841
`f_charbig` varchar(1000) DEFAULT NULL
23842
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = 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)) */
23845
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYD
23846
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYI
23847
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYD
23848
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYI
23849
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYD
23850
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYI
23851
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYD
23852
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYI
23853
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYD
23854
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYI
23855
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYD
23856
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYI
23857
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYD
23858
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYI
23859
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYD
23860
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYI
23861
$MYSQLTEST_VARDIR/master-data/test/t1.frm
23862
$MYSQLTEST_VARDIR/master-data/test/t1.par
23864
# check prerequisites-1 success: 1
23865
# check COUNT(*) success: 1
23866
# check MIN/MAX(f_int1) success: 1
23867
# check MIN/MAX(f_int2) success: 1
23868
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23869
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23870
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23871
WHERE f_int1 IN (2,3);
23872
# check prerequisites-3 success: 1
23873
DELETE FROM t1 WHERE f_charbig = 'delete me';
23874
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23875
# check read via f_int1 success: 1
23876
# check read via f_int2 success: 1
23878
# check multiple-1 success: 1
23879
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23881
# check multiple-2 success: 1
23882
INSERT INTO t1 SELECT * FROM t0_template
23883
WHERE MOD(f_int1,3) = 0;
23885
# check multiple-3 success: 1
23886
UPDATE t1 SET f_int1 = f_int1 + @max_row
23887
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23888
AND @max_row_div2 + @max_row_div4;
23890
# check multiple-4 success: 1
23892
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23893
AND @max_row_div2 + @max_row_div4 + @max_row;
23895
# check multiple-5 success: 1
23896
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23898
SET f_int1 = @cur_value , f_int2 = @cur_value,
23899
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23900
f_charbig = '#SINGLE#';
23902
# check single-1 success: 1
23903
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23905
SET f_int1 = @cur_value , f_int2 = @cur_value,
23906
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23907
f_charbig = '#SINGLE#';
23909
# check single-2 success: 1
23910
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23911
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23912
UPDATE t1 SET f_int1 = @cur_value2
23913
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23915
# check single-3 success: 1
23916
SET @cur_value1= -1;
23917
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23918
UPDATE t1 SET f_int1 = @cur_value1
23919
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23921
# check single-4 success: 1
23922
SELECT MAX(f_int1) INTO @cur_value FROM t1;
23923
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23925
# check single-5 success: 1
23926
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23928
# check single-6 success: 1
23929
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23931
# check single-7 success: 1
23932
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
23933
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23934
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23935
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23936
f_charbig = '#NULL#';
23938
SET f_int1 = NULL , f_int2 = -@max_row,
23939
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23940
f_charbig = '#NULL#';
23941
# check null success: 1
23943
# check null-1 success: 1
23944
UPDATE t1 SET f_int1 = -@max_row
23945
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23946
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23948
# check null-2 success: 1
23949
UPDATE t1 SET f_int1 = NULL
23950
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23951
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23953
# check null-3 success: 1
23955
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23956
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23958
# check null-4 success: 1
23960
WHERE f_int1 = 0 AND f_int2 = 0
23961
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23962
AND f_charbig = '#NULL#';
23964
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23965
SELECT f_int1, f_int1, '', '', 'was inserted'
23966
FROM t0_template source_tab
23967
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23969
# check transactions-1 success: 1
23972
# check transactions-2 success: 1
23975
# check transactions-3 success: 1
23976
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23980
# check transactions-4 success: 1
23981
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23982
SELECT f_int1, f_int1, '', '', 'was inserted'
23983
FROM t0_template source_tab
23984
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23986
# check transactions-5 success: 1
23989
Warning 1196 Some non-transactional changed tables couldn't be rolled back
23991
# check transactions-6 success: 1
23992
# INFO: Storage engine used for t1 seems to be not transactional.
23995
# check transactions-7 success: 1
23996
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23998
SET @@session.sql_mode = 'traditional';
23999
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24000
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24001
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24002
'', '', 'was inserted' FROM t0_template
24003
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24004
ERROR 22012: Division by 0
24007
# check transactions-8 success: 1
24008
# INFO: Storage engine used for t1 seems to be unable to revert
24009
# changes made by the failing statement.
24010
SET @@session.sql_mode = '';
24012
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24014
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24016
# check special-1 success: 1
24017
UPDATE t1 SET f_charbig = '';
24019
# check special-2 success: 1
24020
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24021
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24022
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24023
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24024
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24025
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24026
'just inserted' FROM t0_template
24027
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24028
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24030
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24031
f_charbig = 'updated by trigger'
24032
WHERE f_int1 = new.f_int1;
24034
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24035
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24036
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24038
# check trigger-1 success: 1
24039
DROP TRIGGER trg_1;
24040
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24041
f_int2 = CAST(f_char1 AS SIGNED INT),
24042
f_charbig = 'just inserted'
24043
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24045
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24046
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24047
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24048
'just inserted' FROM t0_template
24049
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24050
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24052
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24053
f_charbig = 'updated by trigger'
24054
WHERE f_int1 = new.f_int1;
24056
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24057
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24058
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24060
# check trigger-2 success: 1
24061
DROP TRIGGER trg_1;
24062
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24063
f_int2 = CAST(f_char1 AS SIGNED INT),
24064
f_charbig = 'just inserted'
24065
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24067
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24068
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24069
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24070
'just inserted' FROM t0_template
24071
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24072
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24074
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24075
f_charbig = 'updated by trigger'
24076
WHERE f_int1 = new.f_int1;
24078
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24079
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24081
# check trigger-3 success: 1
24082
DROP TRIGGER trg_1;
24083
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24084
f_int2 = CAST(f_char1 AS SIGNED INT),
24085
f_charbig = 'just inserted'
24086
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24088
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24089
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24090
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24091
'just inserted' FROM t0_template
24092
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24093
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24095
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24096
f_charbig = 'updated by trigger'
24097
WHERE f_int1 = - old.f_int1;
24099
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24100
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24102
# check trigger-4 success: 1
24103
DROP TRIGGER trg_1;
24104
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24105
f_int2 = CAST(f_char1 AS SIGNED INT),
24106
f_charbig = 'just inserted'
24107
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24109
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24110
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24111
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24112
'just inserted' FROM t0_template
24113
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24114
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24116
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24117
f_charbig = 'updated by trigger'
24118
WHERE f_int1 = new.f_int1;
24120
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24121
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24123
# check trigger-5 success: 1
24124
DROP TRIGGER trg_1;
24125
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24126
f_int2 = CAST(f_char1 AS SIGNED INT),
24127
f_charbig = 'just inserted'
24128
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24130
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24131
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24132
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24133
'just inserted' FROM t0_template
24134
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24135
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24137
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24138
f_charbig = 'updated by trigger'
24139
WHERE f_int1 = - old.f_int1;
24141
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24142
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24144
# check trigger-6 success: 1
24145
DROP TRIGGER trg_1;
24146
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24147
f_int2 = CAST(f_char1 AS SIGNED INT),
24148
f_charbig = 'just inserted'
24149
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24151
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24152
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24153
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24154
'just inserted' FROM t0_template
24155
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24156
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24158
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24159
f_charbig = 'updated by trigger'
24160
WHERE f_int1 = - old.f_int1;
24163
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24165
# check trigger-7 success: 1
24166
DROP TRIGGER trg_1;
24167
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24168
f_int2 = CAST(f_char1 AS SIGNED INT),
24169
f_charbig = 'just inserted'
24170
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24172
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24173
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24174
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24175
'just inserted' FROM t0_template
24176
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24177
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24179
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24180
f_charbig = 'updated by trigger'
24181
WHERE f_int1 = - old.f_int1;
24184
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24186
# check trigger-8 success: 1
24187
DROP TRIGGER trg_1;
24188
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24189
f_int2 = CAST(f_char1 AS SIGNED INT),
24190
f_charbig = 'just inserted'
24191
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24193
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24195
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24196
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24198
SET new.f_int1 = old.f_int1 + @max_row,
24199
new.f_int2 = old.f_int2 - @max_row,
24200
new.f_charbig = '####updated per update trigger####';
24203
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24204
f_charbig = '####updated per update statement itself####';
24206
# check trigger-9 success: 1
24207
DROP TRIGGER trg_2;
24208
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24209
f_int2 = CAST(f_char1 AS SIGNED INT),
24210
f_charbig = CONCAT('===',f_char1,'===');
24211
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24213
SET new.f_int1 = new.f_int1 + @max_row,
24214
new.f_int2 = new.f_int2 - @max_row,
24215
new.f_charbig = '####updated per update trigger####';
24218
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24219
f_charbig = '####updated per update statement itself####';
24221
# check trigger-10 success: 1
24222
DROP TRIGGER trg_2;
24223
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24224
f_int2 = CAST(f_char1 AS SIGNED INT),
24225
f_charbig = CONCAT('===',f_char1,'===');
24226
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24228
SET new.f_int1 = @my_max1 + @counter,
24229
new.f_int2 = @my_min2 - @counter,
24230
new.f_charbig = '####updated per insert trigger####';
24231
SET @counter = @counter + 1;
24234
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24235
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24236
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24237
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24238
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24240
DROP TRIGGER trg_3;
24242
# check trigger-11 success: 1
24244
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24245
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24246
AND f_charbig = '####updated per insert trigger####';
24247
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24249
SET new.f_int1 = @my_max1 + @counter,
24250
new.f_int2 = @my_min2 - @counter,
24251
new.f_charbig = '####updated per insert trigger####';
24252
SET @counter = @counter + 1;
24255
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24256
INSERT INTO t1 (f_char1, f_char2, f_charbig)
24257
SELECT CAST(f_int1 AS CHAR),
24258
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24259
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24261
DROP TRIGGER trg_3;
24263
# check trigger-12 success: 1
24265
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24266
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24267
AND f_charbig = '####updated per insert trigger####';
24269
Table Op Msg_type Msg_text
24270
test.t1 analyze note The storage engine for the table doesn't support analyze
24271
CHECK TABLE t1 EXTENDED;
24272
Table Op Msg_type Msg_text
24273
test.t1 check note The storage engine for the table doesn't support check
24274
CHECKSUM TABLE t1 EXTENDED;
24276
test.t1 <some_value>
24278
Table Op Msg_type Msg_text
24279
test.t1 optimize note The storage engine for the table doesn't support optimize
24280
# check layout success: 1
24281
REPAIR TABLE t1 EXTENDED;
24282
Table Op Msg_type Msg_text
24283
test.t1 repair note The storage engine for the table doesn't support repair
24284
# check layout success: 1
24287
# check TRUNCATE success: 1
24288
# check layout success: 1
24289
# End usability test (inc/partition_check.inc)
24296
f_charbig VARCHAR(1000)
24297
, UNIQUE INDEX uidx1 (f_int1,f_int2)
24299
PARTITION BY LIST(ABS(MOD(f_int1,2)))
24300
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
24301
(PARTITION part1 VALUES IN (0),
24302
PARTITION part2 VALUES IN (1),
24303
PARTITION part3 VALUES IN (NULL));
24304
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24305
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24306
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24307
ALTER TABLE t1 DROP INDEX uidx1;
24308
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24309
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24310
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24311
# Start usability test (inc/partition_check.inc)
24313
SHOW CREATE TABLE t1;
24315
t1 CREATE TABLE `t1` (
24316
`f_int1` int(11) DEFAULT NULL,
24317
`f_int2` int(11) DEFAULT NULL,
24318
`f_char1` char(20) DEFAULT NULL,
24319
`f_char2` char(20) DEFAULT NULL,
24320
`f_charbig` varchar(1000) DEFAULT NULL
24321
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = MyISAM, PARTITION part2 VALUES IN (1) ENGINE = MyISAM, PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
24324
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYD
24325
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYI
24326
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYD
24327
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYI
24328
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYD
24329
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYI
24330
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYD
24331
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYI
24332
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYD
24333
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYI
24334
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYD
24335
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYI
24336
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYD
24337
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYI
24338
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYD
24339
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYI
24340
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYD
24341
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYI
24342
$MYSQLTEST_VARDIR/master-data/test/t1.frm
24343
$MYSQLTEST_VARDIR/master-data/test/t1.par
24345
# check prerequisites-1 success: 1
24346
# check COUNT(*) success: 1
24347
# check MIN/MAX(f_int1) success: 1
24348
# check MIN/MAX(f_int2) success: 1
24349
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24350
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24351
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24352
WHERE f_int1 IN (2,3);
24353
# check prerequisites-3 success: 1
24354
DELETE FROM t1 WHERE f_charbig = 'delete me';
24355
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
24356
# check read via f_int1 success: 1
24357
# check read via f_int2 success: 1
24359
# check multiple-1 success: 1
24360
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24362
# check multiple-2 success: 1
24363
INSERT INTO t1 SELECT * FROM t0_template
24364
WHERE MOD(f_int1,3) = 0;
24366
# check multiple-3 success: 1
24367
UPDATE t1 SET f_int1 = f_int1 + @max_row
24368
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24369
AND @max_row_div2 + @max_row_div4;
24371
# check multiple-4 success: 1
24373
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24374
AND @max_row_div2 + @max_row_div4 + @max_row;
24376
# check multiple-5 success: 1
24377
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24379
SET f_int1 = @cur_value , f_int2 = @cur_value,
24380
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24381
f_charbig = '#SINGLE#';
24383
# check single-1 success: 1
24384
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24386
SET f_int1 = @cur_value , f_int2 = @cur_value,
24387
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24388
f_charbig = '#SINGLE#';
24390
# check single-2 success: 1
24391
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24392
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24393
UPDATE t1 SET f_int1 = @cur_value2
24394
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24396
# check single-3 success: 1
24397
SET @cur_value1= -1;
24398
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24399
UPDATE t1 SET f_int1 = @cur_value1
24400
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24402
# check single-4 success: 1
24403
SELECT MAX(f_int1) INTO @cur_value FROM t1;
24404
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24406
# check single-5 success: 1
24407
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24409
# check single-6 success: 1
24410
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24412
# check single-7 success: 1
24413
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24414
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24415
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24416
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24417
f_charbig = '#NULL#';
24419
SET f_int1 = NULL , f_int2 = -@max_row,
24420
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24421
f_charbig = '#NULL#';
24422
# check null success: 1
24424
# check null-1 success: 1
24425
UPDATE t1 SET f_int1 = -@max_row
24426
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24427
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24429
# check null-2 success: 1
24430
UPDATE t1 SET f_int1 = NULL
24431
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24432
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24434
# check null-3 success: 1
24436
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24437
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24439
# check null-4 success: 1
24441
WHERE f_int1 = 0 AND f_int2 = 0
24442
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24443
AND f_charbig = '#NULL#';
24445
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24446
SELECT f_int1, f_int1, '', '', 'was inserted'
24447
FROM t0_template source_tab
24448
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24450
# check transactions-1 success: 1
24453
# check transactions-2 success: 1
24456
# check transactions-3 success: 1
24457
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24461
# check transactions-4 success: 1
24462
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24463
SELECT f_int1, f_int1, '', '', 'was inserted'
24464
FROM t0_template source_tab
24465
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24467
# check transactions-5 success: 1
24470
Warning 1196 Some non-transactional changed tables couldn't be rolled back
24472
# check transactions-6 success: 1
24473
# INFO: Storage engine used for t1 seems to be not transactional.
24476
# check transactions-7 success: 1
24477
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24479
SET @@session.sql_mode = 'traditional';
24480
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24481
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24482
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24483
'', '', 'was inserted' FROM t0_template
24484
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24485
ERROR 22012: Division by 0
24488
# check transactions-8 success: 1
24489
# INFO: Storage engine used for t1 seems to be unable to revert
24490
# changes made by the failing statement.
24491
SET @@session.sql_mode = '';
24493
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24495
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24497
# check special-1 success: 1
24498
UPDATE t1 SET f_charbig = '';
24500
# check special-2 success: 1
24501
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24502
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24503
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24504
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24505
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24506
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24507
'just inserted' FROM t0_template
24508
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24509
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24511
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24512
f_charbig = 'updated by trigger'
24513
WHERE f_int1 = new.f_int1;
24515
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24516
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24517
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24519
# check trigger-1 success: 1
24520
DROP TRIGGER trg_1;
24521
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24522
f_int2 = CAST(f_char1 AS SIGNED INT),
24523
f_charbig = 'just inserted'
24524
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24526
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24527
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24528
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24529
'just inserted' FROM t0_template
24530
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24531
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24533
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24534
f_charbig = 'updated by trigger'
24535
WHERE f_int1 = new.f_int1;
24537
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24538
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24539
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24541
# check trigger-2 success: 1
24542
DROP TRIGGER trg_1;
24543
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24544
f_int2 = CAST(f_char1 AS SIGNED INT),
24545
f_charbig = 'just inserted'
24546
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24548
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24549
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24550
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24551
'just inserted' FROM t0_template
24552
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24553
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24555
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24556
f_charbig = 'updated by trigger'
24557
WHERE f_int1 = new.f_int1;
24559
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24560
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24562
# check trigger-3 success: 1
24563
DROP TRIGGER trg_1;
24564
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24565
f_int2 = CAST(f_char1 AS SIGNED INT),
24566
f_charbig = 'just inserted'
24567
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24569
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24570
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24571
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24572
'just inserted' FROM t0_template
24573
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24574
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24576
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24577
f_charbig = 'updated by trigger'
24578
WHERE f_int1 = - old.f_int1;
24580
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24581
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24583
# check trigger-4 success: 1
24584
DROP TRIGGER trg_1;
24585
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24586
f_int2 = CAST(f_char1 AS SIGNED INT),
24587
f_charbig = 'just inserted'
24588
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24590
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24591
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24592
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24593
'just inserted' FROM t0_template
24594
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24595
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24597
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24598
f_charbig = 'updated by trigger'
24599
WHERE f_int1 = new.f_int1;
24601
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24602
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24604
# check trigger-5 success: 1
24605
DROP TRIGGER trg_1;
24606
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24607
f_int2 = CAST(f_char1 AS SIGNED INT),
24608
f_charbig = 'just inserted'
24609
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24611
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24612
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24613
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24614
'just inserted' FROM t0_template
24615
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24616
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24618
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24619
f_charbig = 'updated by trigger'
24620
WHERE f_int1 = - old.f_int1;
24622
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24623
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24625
# check trigger-6 success: 1
24626
DROP TRIGGER trg_1;
24627
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24628
f_int2 = CAST(f_char1 AS SIGNED INT),
24629
f_charbig = 'just inserted'
24630
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24632
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24633
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24634
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24635
'just inserted' FROM t0_template
24636
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24637
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24639
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24640
f_charbig = 'updated by trigger'
24641
WHERE f_int1 = - old.f_int1;
24644
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24646
# check trigger-7 success: 1
24647
DROP TRIGGER trg_1;
24648
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24649
f_int2 = CAST(f_char1 AS SIGNED INT),
24650
f_charbig = 'just inserted'
24651
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24653
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24654
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24655
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24656
'just inserted' FROM t0_template
24657
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24658
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24660
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24661
f_charbig = 'updated by trigger'
24662
WHERE f_int1 = - old.f_int1;
24665
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24667
# check trigger-8 success: 1
24668
DROP TRIGGER trg_1;
24669
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24670
f_int2 = CAST(f_char1 AS SIGNED INT),
24671
f_charbig = 'just inserted'
24672
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24674
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24676
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24677
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24679
SET new.f_int1 = old.f_int1 + @max_row,
24680
new.f_int2 = old.f_int2 - @max_row,
24681
new.f_charbig = '####updated per update trigger####';
24684
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24685
f_charbig = '####updated per update statement itself####';
24687
# check trigger-9 success: 1
24688
DROP TRIGGER trg_2;
24689
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24690
f_int2 = CAST(f_char1 AS SIGNED INT),
24691
f_charbig = CONCAT('===',f_char1,'===');
24692
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24694
SET new.f_int1 = new.f_int1 + @max_row,
24695
new.f_int2 = new.f_int2 - @max_row,
24696
new.f_charbig = '####updated per update trigger####';
24699
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24700
f_charbig = '####updated per update statement itself####';
24702
# check trigger-10 success: 1
24703
DROP TRIGGER trg_2;
24704
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24705
f_int2 = CAST(f_char1 AS SIGNED INT),
24706
f_charbig = CONCAT('===',f_char1,'===');
24707
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24709
SET new.f_int1 = @my_max1 + @counter,
24710
new.f_int2 = @my_min2 - @counter,
24711
new.f_charbig = '####updated per insert trigger####';
24712
SET @counter = @counter + 1;
24715
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24716
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24717
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24718
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24719
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24721
DROP TRIGGER trg_3;
24723
# check trigger-11 success: 1
24725
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24726
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24727
AND f_charbig = '####updated per insert trigger####';
24728
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24730
SET new.f_int1 = @my_max1 + @counter,
24731
new.f_int2 = @my_min2 - @counter,
24732
new.f_charbig = '####updated per insert trigger####';
24733
SET @counter = @counter + 1;
24736
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24737
INSERT INTO t1 (f_char1, f_char2, f_charbig)
24738
SELECT CAST(f_int1 AS CHAR),
24739
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24740
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24742
DROP TRIGGER trg_3;
24744
# check trigger-12 success: 1
24746
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24747
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24748
AND f_charbig = '####updated per insert trigger####';
24750
Table Op Msg_type Msg_text
24751
test.t1 analyze note The storage engine for the table doesn't support analyze
24752
CHECK TABLE t1 EXTENDED;
24753
Table Op Msg_type Msg_text
24754
test.t1 check note The storage engine for the table doesn't support check
24755
CHECKSUM TABLE t1 EXTENDED;
24757
test.t1 <some_value>
24759
Table Op Msg_type Msg_text
24760
test.t1 optimize note The storage engine for the table doesn't support optimize
24761
# check layout success: 1
24762
REPAIR TABLE t1 EXTENDED;
24763
Table Op Msg_type Msg_text
24764
test.t1 repair note The storage engine for the table doesn't support repair
24765
# check layout success: 1
24768
# check TRUNCATE success: 1
24769
# check layout success: 1
24770
# End usability test (inc/partition_check.inc)
24772
DROP TABLE IF EXISTS t1;
24778
f_charbig VARCHAR(1000)
24779
, UNIQUE INDEX uidx1 (f_int2,f_int1)
24781
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
24782
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24783
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24784
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24785
ALTER TABLE t1 DROP INDEX uidx1;
24786
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24787
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24788
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24789
# Start usability test (inc/partition_check.inc)
24791
SHOW CREATE TABLE t1;
24793
t1 CREATE TABLE `t1` (
24794
`f_int1` int(11) DEFAULT NULL,
24795
`f_int2` int(11) DEFAULT NULL,
24796
`f_char1` char(20) DEFAULT NULL,
24797
`f_char2` char(20) DEFAULT NULL,
24798
`f_charbig` varchar(1000) DEFAULT NULL
24799
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
24802
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
24803
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
24804
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
24805
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
24806
$MYSQLTEST_VARDIR/master-data/test/t1.frm
24807
$MYSQLTEST_VARDIR/master-data/test/t1.par
24809
# check prerequisites-1 success: 1
24810
# check COUNT(*) success: 1
24811
# check MIN/MAX(f_int1) success: 1
24812
# check MIN/MAX(f_int2) success: 1
24813
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24814
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24815
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24816
WHERE f_int1 IN (2,3);
24817
# check prerequisites-3 success: 1
24818
DELETE FROM t1 WHERE f_charbig = 'delete me';
24819
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
24820
# check read via f_int1 success: 1
24821
# check read via f_int2 success: 1
24823
# check multiple-1 success: 1
24824
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24826
# check multiple-2 success: 1
24827
INSERT INTO t1 SELECT * FROM t0_template
24828
WHERE MOD(f_int1,3) = 0;
24830
# check multiple-3 success: 1
24831
UPDATE t1 SET f_int1 = f_int1 + @max_row
24832
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24833
AND @max_row_div2 + @max_row_div4;
24835
# check multiple-4 success: 1
24837
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24838
AND @max_row_div2 + @max_row_div4 + @max_row;
24840
# check multiple-5 success: 1
24841
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24843
SET f_int1 = @cur_value , f_int2 = @cur_value,
24844
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24845
f_charbig = '#SINGLE#';
24847
# check single-1 success: 1
24848
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24850
SET f_int1 = @cur_value , f_int2 = @cur_value,
24851
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24852
f_charbig = '#SINGLE#';
24854
# check single-2 success: 1
24855
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24856
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24857
UPDATE t1 SET f_int1 = @cur_value2
24858
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24860
# check single-3 success: 1
24861
SET @cur_value1= -1;
24862
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24863
UPDATE t1 SET f_int1 = @cur_value1
24864
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24866
# check single-4 success: 1
24867
SELECT MAX(f_int1) INTO @cur_value FROM t1;
24868
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24870
# check single-5 success: 1
24871
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24873
# check single-6 success: 1
24874
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24876
# check single-7 success: 1
24877
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24878
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24879
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24880
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24881
f_charbig = '#NULL#';
24883
SET f_int1 = NULL , f_int2 = -@max_row,
24884
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24885
f_charbig = '#NULL#';
24886
# check null success: 1
24888
# check null-1 success: 1
24889
UPDATE t1 SET f_int1 = -@max_row
24890
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24891
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24893
# check null-2 success: 1
24894
UPDATE t1 SET f_int1 = NULL
24895
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24896
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24898
# check null-3 success: 1
24900
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24901
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24903
# check null-4 success: 1
24905
WHERE f_int1 = 0 AND f_int2 = 0
24906
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24907
AND f_charbig = '#NULL#';
24909
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24910
SELECT f_int1, f_int1, '', '', 'was inserted'
24911
FROM t0_template source_tab
24912
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24914
# check transactions-1 success: 1
24917
# check transactions-2 success: 1
24920
# check transactions-3 success: 1
24921
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24925
# check transactions-4 success: 1
24926
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24927
SELECT f_int1, f_int1, '', '', 'was inserted'
24928
FROM t0_template source_tab
24929
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24931
# check transactions-5 success: 1
24934
Warning 1196 Some non-transactional changed tables couldn't be rolled back
24936
# check transactions-6 success: 1
24937
# INFO: Storage engine used for t1 seems to be not transactional.
24940
# check transactions-7 success: 1
24941
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24943
SET @@session.sql_mode = 'traditional';
24944
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24945
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24946
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24947
'', '', 'was inserted' FROM t0_template
24948
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24949
ERROR 22012: Division by 0
24952
# check transactions-8 success: 1
24953
# INFO: Storage engine used for t1 seems to be unable to revert
24954
# changes made by the failing statement.
24955
SET @@session.sql_mode = '';
24957
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24959
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24961
# check special-1 success: 1
24962
UPDATE t1 SET f_charbig = '';
24964
# check special-2 success: 1
24965
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24966
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24967
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24968
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24969
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24970
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24971
'just inserted' FROM t0_template
24972
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24973
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24975
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24976
f_charbig = 'updated by trigger'
24977
WHERE f_int1 = new.f_int1;
24979
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24980
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24981
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24983
# check trigger-1 success: 1
24984
DROP TRIGGER trg_1;
24985
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24986
f_int2 = CAST(f_char1 AS SIGNED INT),
24987
f_charbig = 'just inserted'
24988
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24990
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24991
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24992
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24993
'just inserted' FROM t0_template
24994
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24995
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24997
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24998
f_charbig = 'updated by trigger'
24999
WHERE f_int1 = new.f_int1;
25001
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25002
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25003
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25005
# check trigger-2 success: 1
25006
DROP TRIGGER trg_1;
25007
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25008
f_int2 = CAST(f_char1 AS SIGNED INT),
25009
f_charbig = 'just inserted'
25010
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25012
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25013
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25014
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25015
'just inserted' FROM t0_template
25016
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25017
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25019
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25020
f_charbig = 'updated by trigger'
25021
WHERE f_int1 = new.f_int1;
25023
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25024
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25026
# check trigger-3 success: 1
25027
DROP TRIGGER trg_1;
25028
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25029
f_int2 = CAST(f_char1 AS SIGNED INT),
25030
f_charbig = 'just inserted'
25031
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25033
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25034
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25035
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25036
'just inserted' FROM t0_template
25037
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25038
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25040
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25041
f_charbig = 'updated by trigger'
25042
WHERE f_int1 = - old.f_int1;
25044
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25045
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25047
# check trigger-4 success: 1
25048
DROP TRIGGER trg_1;
25049
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25050
f_int2 = CAST(f_char1 AS SIGNED INT),
25051
f_charbig = 'just inserted'
25052
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25054
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25055
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25056
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25057
'just inserted' FROM t0_template
25058
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25059
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25061
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25062
f_charbig = 'updated by trigger'
25063
WHERE f_int1 = new.f_int1;
25065
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25066
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25068
# check trigger-5 success: 1
25069
DROP TRIGGER trg_1;
25070
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25071
f_int2 = CAST(f_char1 AS SIGNED INT),
25072
f_charbig = 'just inserted'
25073
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25075
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25076
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25077
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25078
'just inserted' FROM t0_template
25079
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25080
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25082
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25083
f_charbig = 'updated by trigger'
25084
WHERE f_int1 = - old.f_int1;
25086
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25087
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25089
# check trigger-6 success: 1
25090
DROP TRIGGER trg_1;
25091
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25092
f_int2 = CAST(f_char1 AS SIGNED INT),
25093
f_charbig = 'just inserted'
25094
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25096
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25097
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25098
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25099
'just inserted' FROM t0_template
25100
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25101
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25103
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25104
f_charbig = 'updated by trigger'
25105
WHERE f_int1 = - old.f_int1;
25108
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25110
# check trigger-7 success: 1
25111
DROP TRIGGER trg_1;
25112
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25113
f_int2 = CAST(f_char1 AS SIGNED INT),
25114
f_charbig = 'just inserted'
25115
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25117
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25118
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25119
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25120
'just inserted' FROM t0_template
25121
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25122
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25124
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25125
f_charbig = 'updated by trigger'
25126
WHERE f_int1 = - old.f_int1;
25129
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25131
# check trigger-8 success: 1
25132
DROP TRIGGER trg_1;
25133
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25134
f_int2 = CAST(f_char1 AS SIGNED INT),
25135
f_charbig = 'just inserted'
25136
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25138
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25140
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25141
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25143
SET new.f_int1 = old.f_int1 + @max_row,
25144
new.f_int2 = old.f_int2 - @max_row,
25145
new.f_charbig = '####updated per update trigger####';
25148
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25149
f_charbig = '####updated per update statement itself####';
25151
# check trigger-9 success: 1
25152
DROP TRIGGER trg_2;
25153
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25154
f_int2 = CAST(f_char1 AS SIGNED INT),
25155
f_charbig = CONCAT('===',f_char1,'===');
25156
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25158
SET new.f_int1 = new.f_int1 + @max_row,
25159
new.f_int2 = new.f_int2 - @max_row,
25160
new.f_charbig = '####updated per update trigger####';
25163
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25164
f_charbig = '####updated per update statement itself####';
25166
# check trigger-10 success: 1
25167
DROP TRIGGER trg_2;
25168
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25169
f_int2 = CAST(f_char1 AS SIGNED INT),
25170
f_charbig = CONCAT('===',f_char1,'===');
25171
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25173
SET new.f_int1 = @my_max1 + @counter,
25174
new.f_int2 = @my_min2 - @counter,
25175
new.f_charbig = '####updated per insert trigger####';
25176
SET @counter = @counter + 1;
25179
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25180
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25181
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25182
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25183
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25185
DROP TRIGGER trg_3;
25187
# check trigger-11 success: 1
25189
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25190
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25191
AND f_charbig = '####updated per insert trigger####';
25192
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25194
SET new.f_int1 = @my_max1 + @counter,
25195
new.f_int2 = @my_min2 - @counter,
25196
new.f_charbig = '####updated per insert trigger####';
25197
SET @counter = @counter + 1;
25200
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25201
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25202
SELECT CAST(f_int1 AS CHAR),
25203
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25204
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25206
DROP TRIGGER trg_3;
25208
# check trigger-12 success: 1
25210
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25211
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25212
AND f_charbig = '####updated per insert trigger####';
25214
Table Op Msg_type Msg_text
25215
test.t1 analyze note The storage engine for the table doesn't support analyze
25216
CHECK TABLE t1 EXTENDED;
25217
Table Op Msg_type Msg_text
25218
test.t1 check note The storage engine for the table doesn't support check
25219
CHECKSUM TABLE t1 EXTENDED;
25221
test.t1 <some_value>
25223
Table Op Msg_type Msg_text
25224
test.t1 optimize note The storage engine for the table doesn't support optimize
25225
# check layout success: 1
25226
REPAIR TABLE t1 EXTENDED;
25227
Table Op Msg_type Msg_text
25228
test.t1 repair note The storage engine for the table doesn't support repair
25229
# check layout success: 1
25232
# check TRUNCATE success: 1
25233
# check layout success: 1
25234
# End usability test (inc/partition_check.inc)
25241
f_charbig VARCHAR(1000)
25242
, UNIQUE INDEX uidx1 (f_int2,f_int1)
25244
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
25245
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25246
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25247
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25248
ALTER TABLE t1 DROP INDEX uidx1;
25249
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25250
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25251
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25252
# Start usability test (inc/partition_check.inc)
25254
SHOW CREATE TABLE t1;
25256
t1 CREATE TABLE `t1` (
25257
`f_int1` int(11) DEFAULT NULL,
25258
`f_int2` int(11) DEFAULT NULL,
25259
`f_char1` char(20) DEFAULT NULL,
25260
`f_char2` char(20) DEFAULT NULL,
25261
`f_charbig` varchar(1000) DEFAULT NULL
25262
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
25265
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
25266
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
25267
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
25268
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
25269
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYD
25270
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYI
25271
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYD
25272
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYI
25273
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYD
25274
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYI
25275
$MYSQLTEST_VARDIR/master-data/test/t1.frm
25276
$MYSQLTEST_VARDIR/master-data/test/t1.par
25278
# check prerequisites-1 success: 1
25279
# check COUNT(*) success: 1
25280
# check MIN/MAX(f_int1) success: 1
25281
# check MIN/MAX(f_int2) success: 1
25282
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25283
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25284
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25285
WHERE f_int1 IN (2,3);
25286
# check prerequisites-3 success: 1
25287
DELETE FROM t1 WHERE f_charbig = 'delete me';
25288
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25289
# check read via f_int1 success: 1
25290
# check read via f_int2 success: 1
25292
# check multiple-1 success: 1
25293
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25295
# check multiple-2 success: 1
25296
INSERT INTO t1 SELECT * FROM t0_template
25297
WHERE MOD(f_int1,3) = 0;
25299
# check multiple-3 success: 1
25300
UPDATE t1 SET f_int1 = f_int1 + @max_row
25301
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25302
AND @max_row_div2 + @max_row_div4;
25304
# check multiple-4 success: 1
25306
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25307
AND @max_row_div2 + @max_row_div4 + @max_row;
25309
# check multiple-5 success: 1
25310
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25312
SET f_int1 = @cur_value , f_int2 = @cur_value,
25313
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25314
f_charbig = '#SINGLE#';
25316
# check single-1 success: 1
25317
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25319
SET f_int1 = @cur_value , f_int2 = @cur_value,
25320
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25321
f_charbig = '#SINGLE#';
25323
# check single-2 success: 1
25324
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25325
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25326
UPDATE t1 SET f_int1 = @cur_value2
25327
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25329
# check single-3 success: 1
25330
SET @cur_value1= -1;
25331
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25332
UPDATE t1 SET f_int1 = @cur_value1
25333
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25335
# check single-4 success: 1
25336
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25337
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25339
# check single-5 success: 1
25340
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25342
# check single-6 success: 1
25343
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25345
# check single-7 success: 1
25346
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25347
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25348
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25349
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25350
f_charbig = '#NULL#';
25352
SET f_int1 = NULL , f_int2 = -@max_row,
25353
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25354
f_charbig = '#NULL#';
25355
# check null success: 1
25357
# check null-1 success: 1
25358
UPDATE t1 SET f_int1 = -@max_row
25359
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25360
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25362
# check null-2 success: 1
25363
UPDATE t1 SET f_int1 = NULL
25364
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25365
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25367
# check null-3 success: 1
25369
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25370
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25372
# check null-4 success: 1
25374
WHERE f_int1 = 0 AND f_int2 = 0
25375
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25376
AND f_charbig = '#NULL#';
25378
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25379
SELECT f_int1, f_int1, '', '', 'was inserted'
25380
FROM t0_template source_tab
25381
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25383
# check transactions-1 success: 1
25386
# check transactions-2 success: 1
25389
# check transactions-3 success: 1
25390
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25394
# check transactions-4 success: 1
25395
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25396
SELECT f_int1, f_int1, '', '', 'was inserted'
25397
FROM t0_template source_tab
25398
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25400
# check transactions-5 success: 1
25403
Warning 1196 Some non-transactional changed tables couldn't be rolled back
25405
# check transactions-6 success: 1
25406
# INFO: Storage engine used for t1 seems to be not transactional.
25409
# check transactions-7 success: 1
25410
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25412
SET @@session.sql_mode = 'traditional';
25413
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25414
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25415
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25416
'', '', 'was inserted' FROM t0_template
25417
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25418
ERROR 22012: Division by 0
25421
# check transactions-8 success: 1
25422
# INFO: Storage engine used for t1 seems to be unable to revert
25423
# changes made by the failing statement.
25424
SET @@session.sql_mode = '';
25426
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25428
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25430
# check special-1 success: 1
25431
UPDATE t1 SET f_charbig = '';
25433
# check special-2 success: 1
25434
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25435
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25436
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25437
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25438
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25439
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25440
'just inserted' FROM t0_template
25441
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25442
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25444
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25445
f_charbig = 'updated by trigger'
25446
WHERE f_int1 = new.f_int1;
25448
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25449
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25450
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25452
# check trigger-1 success: 1
25453
DROP TRIGGER trg_1;
25454
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25455
f_int2 = CAST(f_char1 AS SIGNED INT),
25456
f_charbig = 'just inserted'
25457
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25459
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25460
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25461
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25462
'just inserted' FROM t0_template
25463
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25464
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25466
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25467
f_charbig = 'updated by trigger'
25468
WHERE f_int1 = new.f_int1;
25470
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25471
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25472
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25474
# check trigger-2 success: 1
25475
DROP TRIGGER trg_1;
25476
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25477
f_int2 = CAST(f_char1 AS SIGNED INT),
25478
f_charbig = 'just inserted'
25479
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25481
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25482
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25483
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25484
'just inserted' FROM t0_template
25485
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25486
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25488
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25489
f_charbig = 'updated by trigger'
25490
WHERE f_int1 = new.f_int1;
25492
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25493
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25495
# check trigger-3 success: 1
25496
DROP TRIGGER trg_1;
25497
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25498
f_int2 = CAST(f_char1 AS SIGNED INT),
25499
f_charbig = 'just inserted'
25500
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25502
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25503
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25504
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25505
'just inserted' FROM t0_template
25506
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25507
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25509
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25510
f_charbig = 'updated by trigger'
25511
WHERE f_int1 = - old.f_int1;
25513
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25514
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25516
# check trigger-4 success: 1
25517
DROP TRIGGER trg_1;
25518
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25519
f_int2 = CAST(f_char1 AS SIGNED INT),
25520
f_charbig = 'just inserted'
25521
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25523
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25524
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25525
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25526
'just inserted' FROM t0_template
25527
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25528
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25530
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25531
f_charbig = 'updated by trigger'
25532
WHERE f_int1 = new.f_int1;
25534
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25535
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25537
# check trigger-5 success: 1
25538
DROP TRIGGER trg_1;
25539
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25540
f_int2 = CAST(f_char1 AS SIGNED INT),
25541
f_charbig = 'just inserted'
25542
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25544
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25545
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25546
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25547
'just inserted' FROM t0_template
25548
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25549
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25551
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25552
f_charbig = 'updated by trigger'
25553
WHERE f_int1 = - old.f_int1;
25555
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25556
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25558
# check trigger-6 success: 1
25559
DROP TRIGGER trg_1;
25560
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25561
f_int2 = CAST(f_char1 AS SIGNED INT),
25562
f_charbig = 'just inserted'
25563
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25565
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25566
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25567
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25568
'just inserted' FROM t0_template
25569
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25570
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25572
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25573
f_charbig = 'updated by trigger'
25574
WHERE f_int1 = - old.f_int1;
25577
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25579
# check trigger-7 success: 1
25580
DROP TRIGGER trg_1;
25581
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25582
f_int2 = CAST(f_char1 AS SIGNED INT),
25583
f_charbig = 'just inserted'
25584
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25586
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25587
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25588
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25589
'just inserted' FROM t0_template
25590
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25591
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25593
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25594
f_charbig = 'updated by trigger'
25595
WHERE f_int1 = - old.f_int1;
25598
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25600
# check trigger-8 success: 1
25601
DROP TRIGGER trg_1;
25602
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25603
f_int2 = CAST(f_char1 AS SIGNED INT),
25604
f_charbig = 'just inserted'
25605
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25607
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25609
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25610
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25612
SET new.f_int1 = old.f_int1 + @max_row,
25613
new.f_int2 = old.f_int2 - @max_row,
25614
new.f_charbig = '####updated per update trigger####';
25617
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25618
f_charbig = '####updated per update statement itself####';
25620
# check trigger-9 success: 1
25621
DROP TRIGGER trg_2;
25622
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25623
f_int2 = CAST(f_char1 AS SIGNED INT),
25624
f_charbig = CONCAT('===',f_char1,'===');
25625
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25627
SET new.f_int1 = new.f_int1 + @max_row,
25628
new.f_int2 = new.f_int2 - @max_row,
25629
new.f_charbig = '####updated per update trigger####';
25632
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25633
f_charbig = '####updated per update statement itself####';
25635
# check trigger-10 success: 1
25636
DROP TRIGGER trg_2;
25637
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25638
f_int2 = CAST(f_char1 AS SIGNED INT),
25639
f_charbig = CONCAT('===',f_char1,'===');
25640
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25642
SET new.f_int1 = @my_max1 + @counter,
25643
new.f_int2 = @my_min2 - @counter,
25644
new.f_charbig = '####updated per insert trigger####';
25645
SET @counter = @counter + 1;
25648
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25649
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25650
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25651
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25652
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25654
DROP TRIGGER trg_3;
25656
# check trigger-11 success: 1
25658
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25659
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25660
AND f_charbig = '####updated per insert trigger####';
25661
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25663
SET new.f_int1 = @my_max1 + @counter,
25664
new.f_int2 = @my_min2 - @counter,
25665
new.f_charbig = '####updated per insert trigger####';
25666
SET @counter = @counter + 1;
25669
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25670
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25671
SELECT CAST(f_int1 AS CHAR),
25672
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25675
DROP TRIGGER trg_3;
25677
# check trigger-12 success: 1
25679
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25680
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25681
AND f_charbig = '####updated per insert trigger####';
25683
Table Op Msg_type Msg_text
25684
test.t1 analyze note The storage engine for the table doesn't support analyze
25685
CHECK TABLE t1 EXTENDED;
25686
Table Op Msg_type Msg_text
25687
test.t1 check note The storage engine for the table doesn't support check
25688
CHECKSUM TABLE t1 EXTENDED;
25690
test.t1 <some_value>
25692
Table Op Msg_type Msg_text
25693
test.t1 optimize note The storage engine for the table doesn't support optimize
25694
# check layout success: 1
25695
REPAIR TABLE t1 EXTENDED;
25696
Table Op Msg_type Msg_text
25697
test.t1 repair note The storage engine for the table doesn't support repair
25698
# check layout success: 1
25701
# check TRUNCATE success: 1
25702
# check layout success: 1
25703
# End usability test (inc/partition_check.inc)
25710
f_charbig VARCHAR(1000)
25711
, UNIQUE INDEX uidx1 (f_int2,f_int1)
25713
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
25714
(PARTITION part_3 VALUES IN (-3),
25715
PARTITION part_2 VALUES IN (-2),
25716
PARTITION part_1 VALUES IN (-1),
25717
PARTITION part_N VALUES IN (NULL),
25718
PARTITION part0 VALUES IN (0),
25719
PARTITION part1 VALUES IN (1),
25720
PARTITION part2 VALUES IN (2),
25721
PARTITION part3 VALUES IN (3));
25722
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25723
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25724
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25725
ALTER TABLE t1 DROP INDEX uidx1;
25726
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25727
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25728
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25729
# Start usability test (inc/partition_check.inc)
25731
SHOW CREATE TABLE t1;
25733
t1 CREATE TABLE `t1` (
25734
`f_int1` int(11) DEFAULT NULL,
25735
`f_int2` int(11) DEFAULT NULL,
25736
`f_char1` char(20) DEFAULT NULL,
25737
`f_char2` char(20) DEFAULT NULL,
25738
`f_charbig` varchar(1000) DEFAULT NULL
25739
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,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) */
25742
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD
25743
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI
25744
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD
25745
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI
25746
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD
25747
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI
25748
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD
25749
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI
25750
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD
25751
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI
25752
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD
25753
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI
25754
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD
25755
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI
25756
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD
25757
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI
25758
$MYSQLTEST_VARDIR/master-data/test/t1.frm
25759
$MYSQLTEST_VARDIR/master-data/test/t1.par
25761
# check prerequisites-1 success: 1
25762
# check COUNT(*) success: 1
25763
# check MIN/MAX(f_int1) success: 1
25764
# check MIN/MAX(f_int2) success: 1
25765
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25766
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25767
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25768
WHERE f_int1 IN (2,3);
25769
# check prerequisites-3 success: 1
25770
DELETE FROM t1 WHERE f_charbig = 'delete me';
25771
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25772
# check read via f_int1 success: 1
25773
# check read via f_int2 success: 1
25775
# check multiple-1 success: 1
25776
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25778
# check multiple-2 success: 1
25779
INSERT INTO t1 SELECT * FROM t0_template
25780
WHERE MOD(f_int1,3) = 0;
25782
# check multiple-3 success: 1
25783
UPDATE t1 SET f_int1 = f_int1 + @max_row
25784
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25785
AND @max_row_div2 + @max_row_div4;
25787
# check multiple-4 success: 1
25789
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25790
AND @max_row_div2 + @max_row_div4 + @max_row;
25792
# check multiple-5 success: 1
25793
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25795
SET f_int1 = @cur_value , f_int2 = @cur_value,
25796
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25797
f_charbig = '#SINGLE#';
25799
# check single-1 success: 1
25800
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25802
SET f_int1 = @cur_value , f_int2 = @cur_value,
25803
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25804
f_charbig = '#SINGLE#';
25806
# check single-2 success: 1
25807
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25808
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25809
UPDATE t1 SET f_int1 = @cur_value2
25810
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25812
# check single-3 success: 1
25813
SET @cur_value1= -1;
25814
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25815
UPDATE t1 SET f_int1 = @cur_value1
25816
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25818
# check single-4 success: 1
25819
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25820
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25822
# check single-5 success: 1
25823
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25825
# check single-6 success: 1
25826
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25828
# check single-7 success: 1
25829
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25830
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25831
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25832
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25833
f_charbig = '#NULL#';
25835
SET f_int1 = NULL , f_int2 = -@max_row,
25836
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25837
f_charbig = '#NULL#';
25838
# check null success: 1
25840
# check null-1 success: 1
25841
UPDATE t1 SET f_int1 = -@max_row
25842
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25843
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25845
# check null-2 success: 1
25846
UPDATE t1 SET f_int1 = NULL
25847
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25848
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25850
# check null-3 success: 1
25852
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25853
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25855
# check null-4 success: 1
25857
WHERE f_int1 = 0 AND f_int2 = 0
25858
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25859
AND f_charbig = '#NULL#';
25861
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25862
SELECT f_int1, f_int1, '', '', 'was inserted'
25863
FROM t0_template source_tab
25864
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25866
# check transactions-1 success: 1
25869
# check transactions-2 success: 1
25872
# check transactions-3 success: 1
25873
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25877
# check transactions-4 success: 1
25878
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25879
SELECT f_int1, f_int1, '', '', 'was inserted'
25880
FROM t0_template source_tab
25881
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25883
# check transactions-5 success: 1
25886
Warning 1196 Some non-transactional changed tables couldn't be rolled back
25888
# check transactions-6 success: 1
25889
# INFO: Storage engine used for t1 seems to be not transactional.
25892
# check transactions-7 success: 1
25893
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25895
SET @@session.sql_mode = 'traditional';
25896
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25897
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25898
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25899
'', '', 'was inserted' FROM t0_template
25900
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25901
ERROR 22012: Division by 0
25904
# check transactions-8 success: 1
25905
# INFO: Storage engine used for t1 seems to be unable to revert
25906
# changes made by the failing statement.
25907
SET @@session.sql_mode = '';
25909
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25911
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25913
# check special-1 success: 1
25914
UPDATE t1 SET f_charbig = '';
25916
# check special-2 success: 1
25917
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25918
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25919
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25920
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25921
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25922
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25923
'just inserted' FROM t0_template
25924
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25925
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25927
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25928
f_charbig = 'updated by trigger'
25929
WHERE f_int1 = new.f_int1;
25931
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25932
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25933
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25935
# check trigger-1 success: 1
25936
DROP TRIGGER trg_1;
25937
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25938
f_int2 = CAST(f_char1 AS SIGNED INT),
25939
f_charbig = 'just inserted'
25940
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25942
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25943
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25944
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25945
'just inserted' FROM t0_template
25946
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25947
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25949
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25950
f_charbig = 'updated by trigger'
25951
WHERE f_int1 = new.f_int1;
25953
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25954
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25955
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25957
# check trigger-2 success: 1
25958
DROP TRIGGER trg_1;
25959
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25960
f_int2 = CAST(f_char1 AS SIGNED INT),
25961
f_charbig = 'just inserted'
25962
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25964
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25965
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25966
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25967
'just inserted' FROM t0_template
25968
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25969
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25971
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25972
f_charbig = 'updated by trigger'
25973
WHERE f_int1 = new.f_int1;
25975
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25976
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25978
# check trigger-3 success: 1
25979
DROP TRIGGER trg_1;
25980
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25981
f_int2 = CAST(f_char1 AS SIGNED INT),
25982
f_charbig = 'just inserted'
25983
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25985
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25986
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25987
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25988
'just inserted' FROM t0_template
25989
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25990
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25992
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25993
f_charbig = 'updated by trigger'
25994
WHERE f_int1 = - old.f_int1;
25996
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25997
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25999
# check trigger-4 success: 1
26000
DROP TRIGGER trg_1;
26001
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26002
f_int2 = CAST(f_char1 AS SIGNED INT),
26003
f_charbig = 'just inserted'
26004
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26006
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26007
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26008
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26009
'just inserted' FROM t0_template
26010
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26011
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26013
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26014
f_charbig = 'updated by trigger'
26015
WHERE f_int1 = new.f_int1;
26017
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26018
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26020
# check trigger-5 success: 1
26021
DROP TRIGGER trg_1;
26022
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26023
f_int2 = CAST(f_char1 AS SIGNED INT),
26024
f_charbig = 'just inserted'
26025
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26027
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26028
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26029
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26030
'just inserted' FROM t0_template
26031
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26032
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26034
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26035
f_charbig = 'updated by trigger'
26036
WHERE f_int1 = - old.f_int1;
26038
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26039
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26041
# check trigger-6 success: 1
26042
DROP TRIGGER trg_1;
26043
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26044
f_int2 = CAST(f_char1 AS SIGNED INT),
26045
f_charbig = 'just inserted'
26046
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26048
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26049
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26050
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26051
'just inserted' FROM t0_template
26052
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26053
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26055
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26056
f_charbig = 'updated by trigger'
26057
WHERE f_int1 = - old.f_int1;
26060
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26062
# check trigger-7 success: 1
26063
DROP TRIGGER trg_1;
26064
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26065
f_int2 = CAST(f_char1 AS SIGNED INT),
26066
f_charbig = 'just inserted'
26067
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26069
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26070
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26071
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26072
'just inserted' FROM t0_template
26073
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26074
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26076
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26077
f_charbig = 'updated by trigger'
26078
WHERE f_int1 = - old.f_int1;
26081
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26083
# check trigger-8 success: 1
26084
DROP TRIGGER trg_1;
26085
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26086
f_int2 = CAST(f_char1 AS SIGNED INT),
26087
f_charbig = 'just inserted'
26088
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26090
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26092
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26093
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26095
SET new.f_int1 = old.f_int1 + @max_row,
26096
new.f_int2 = old.f_int2 - @max_row,
26097
new.f_charbig = '####updated per update trigger####';
26100
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26101
f_charbig = '####updated per update statement itself####';
26103
# check trigger-9 success: 1
26104
DROP TRIGGER trg_2;
26105
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26106
f_int2 = CAST(f_char1 AS SIGNED INT),
26107
f_charbig = CONCAT('===',f_char1,'===');
26108
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26110
SET new.f_int1 = new.f_int1 + @max_row,
26111
new.f_int2 = new.f_int2 - @max_row,
26112
new.f_charbig = '####updated per update trigger####';
26115
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26116
f_charbig = '####updated per update statement itself####';
26118
# check trigger-10 success: 1
26119
DROP TRIGGER trg_2;
26120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26121
f_int2 = CAST(f_char1 AS SIGNED INT),
26122
f_charbig = CONCAT('===',f_char1,'===');
26123
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26125
SET new.f_int1 = @my_max1 + @counter,
26126
new.f_int2 = @my_min2 - @counter,
26127
new.f_charbig = '####updated per insert trigger####';
26128
SET @counter = @counter + 1;
26131
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26132
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26133
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26134
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26135
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26137
DROP TRIGGER trg_3;
26139
# check trigger-11 success: 1
26141
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26142
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26143
AND f_charbig = '####updated per insert trigger####';
26144
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26146
SET new.f_int1 = @my_max1 + @counter,
26147
new.f_int2 = @my_min2 - @counter,
26148
new.f_charbig = '####updated per insert trigger####';
26149
SET @counter = @counter + 1;
26152
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26153
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26154
SELECT CAST(f_int1 AS CHAR),
26155
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26156
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26158
DROP TRIGGER trg_3;
26160
# check trigger-12 success: 1
26162
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26163
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26164
AND f_charbig = '####updated per insert trigger####';
26166
Table Op Msg_type Msg_text
26167
test.t1 analyze note The storage engine for the table doesn't support analyze
26168
CHECK TABLE t1 EXTENDED;
26169
Table Op Msg_type Msg_text
26170
test.t1 check note The storage engine for the table doesn't support check
26171
CHECKSUM TABLE t1 EXTENDED;
26173
test.t1 <some_value>
26175
Table Op Msg_type Msg_text
26176
test.t1 optimize note The storage engine for the table doesn't support optimize
26177
# check layout success: 1
26178
REPAIR TABLE t1 EXTENDED;
26179
Table Op Msg_type Msg_text
26180
test.t1 repair note The storage engine for the table doesn't support repair
26181
# check layout success: 1
26184
# check TRUNCATE success: 1
26185
# check layout success: 1
26186
# End usability test (inc/partition_check.inc)
26193
f_charbig VARCHAR(1000)
26194
, UNIQUE INDEX uidx1 (f_int2,f_int1)
26196
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
26197
(PARTITION parta VALUES LESS THAN (0),
26198
PARTITION partb VALUES LESS THAN (5),
26199
PARTITION partc VALUES LESS THAN (10),
26200
PARTITION partd VALUES LESS THAN (10 + 5),
26201
PARTITION parte VALUES LESS THAN (20),
26202
PARTITION partf VALUES LESS THAN (2147483646));
26203
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26204
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26205
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26206
ALTER TABLE t1 DROP INDEX uidx1;
26207
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26208
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26209
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26210
# Start usability test (inc/partition_check.inc)
26212
SHOW CREATE TABLE t1;
26214
t1 CREATE TABLE `t1` (
26215
`f_int1` int(11) DEFAULT NULL,
26216
`f_int2` int(11) DEFAULT NULL,
26217
`f_char1` char(20) DEFAULT NULL,
26218
`f_char2` char(20) DEFAULT NULL,
26219
`f_charbig` varchar(1000) DEFAULT NULL
26220
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 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 (15) ENGINE = MyISAM, PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
26223
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD
26224
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI
26225
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYD
26226
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYI
26227
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYD
26228
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYI
26229
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYD
26230
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYI
26231
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYD
26232
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYI
26233
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYD
26234
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYI
26235
$MYSQLTEST_VARDIR/master-data/test/t1.frm
26236
$MYSQLTEST_VARDIR/master-data/test/t1.par
26238
# check prerequisites-1 success: 1
26239
# check COUNT(*) success: 1
26240
# check MIN/MAX(f_int1) success: 1
26241
# check MIN/MAX(f_int2) success: 1
26242
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26243
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26244
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26245
WHERE f_int1 IN (2,3);
26246
# check prerequisites-3 success: 1
26247
DELETE FROM t1 WHERE f_charbig = 'delete me';
26248
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26249
# check read via f_int1 success: 1
26250
# check read via f_int2 success: 1
26252
# check multiple-1 success: 1
26253
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26255
# check multiple-2 success: 1
26256
INSERT INTO t1 SELECT * FROM t0_template
26257
WHERE MOD(f_int1,3) = 0;
26259
# check multiple-3 success: 1
26260
UPDATE t1 SET f_int1 = f_int1 + @max_row
26261
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26262
AND @max_row_div2 + @max_row_div4;
26264
# check multiple-4 success: 1
26266
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26267
AND @max_row_div2 + @max_row_div4 + @max_row;
26269
# check multiple-5 success: 1
26270
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26272
SET f_int1 = @cur_value , f_int2 = @cur_value,
26273
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26274
f_charbig = '#SINGLE#';
26276
# check single-1 success: 1
26277
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26279
SET f_int1 = @cur_value , f_int2 = @cur_value,
26280
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26281
f_charbig = '#SINGLE#';
26283
# check single-2 success: 1
26284
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26285
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26286
UPDATE t1 SET f_int1 = @cur_value2
26287
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26289
# check single-3 success: 1
26290
SET @cur_value1= -1;
26291
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26292
UPDATE t1 SET f_int1 = @cur_value1
26293
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26295
# check single-4 success: 1
26296
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26297
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26299
# check single-5 success: 1
26300
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26302
# check single-6 success: 1
26303
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26304
ERROR HY000: Table has no partition for value 2147483647
26305
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26306
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26307
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26308
f_charbig = '#NULL#';
26310
SET f_int1 = NULL , f_int2 = -@max_row,
26311
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26312
f_charbig = '#NULL#';
26313
# check null success: 1
26315
# check null-1 success: 1
26316
UPDATE t1 SET f_int1 = -@max_row
26317
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26318
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26320
# check null-2 success: 1
26321
UPDATE t1 SET f_int1 = NULL
26322
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26323
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26325
# check null-3 success: 1
26327
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26328
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26330
# check null-4 success: 1
26332
WHERE f_int1 = 0 AND f_int2 = 0
26333
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26334
AND f_charbig = '#NULL#';
26336
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26337
SELECT f_int1, f_int1, '', '', 'was inserted'
26338
FROM t0_template source_tab
26339
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26341
# check transactions-1 success: 1
26344
# check transactions-2 success: 1
26347
# check transactions-3 success: 1
26348
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26352
# check transactions-4 success: 1
26353
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26354
SELECT f_int1, f_int1, '', '', 'was inserted'
26355
FROM t0_template source_tab
26356
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26358
# check transactions-5 success: 1
26361
Warning 1196 Some non-transactional changed tables couldn't be rolled back
26363
# check transactions-6 success: 1
26364
# INFO: Storage engine used for t1 seems to be not transactional.
26367
# check transactions-7 success: 1
26368
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26370
SET @@session.sql_mode = 'traditional';
26371
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26372
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26373
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26374
'', '', 'was inserted' FROM t0_template
26375
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26376
ERROR 22012: Division by 0
26379
# check transactions-8 success: 1
26380
# INFO: Storage engine used for t1 seems to be unable to revert
26381
# changes made by the failing statement.
26382
SET @@session.sql_mode = '';
26384
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26386
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26388
# check special-1 success: 1
26389
UPDATE t1 SET f_charbig = '';
26391
# check special-2 success: 1
26392
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26393
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26394
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26395
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26396
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26397
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26398
'just inserted' FROM t0_template
26399
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26400
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26402
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26403
f_charbig = 'updated by trigger'
26404
WHERE f_int1 = new.f_int1;
26406
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26407
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26408
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26410
# check trigger-1 success: 1
26411
DROP TRIGGER trg_1;
26412
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26413
f_int2 = CAST(f_char1 AS SIGNED INT),
26414
f_charbig = 'just inserted'
26415
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26417
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26418
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26419
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26420
'just inserted' FROM t0_template
26421
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26422
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26424
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26425
f_charbig = 'updated by trigger'
26426
WHERE f_int1 = new.f_int1;
26428
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26429
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26430
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26432
# check trigger-2 success: 1
26433
DROP TRIGGER trg_1;
26434
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26435
f_int2 = CAST(f_char1 AS SIGNED INT),
26436
f_charbig = 'just inserted'
26437
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26439
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26440
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26441
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26442
'just inserted' FROM t0_template
26443
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26444
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26446
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26447
f_charbig = 'updated by trigger'
26448
WHERE f_int1 = new.f_int1;
26450
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26451
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26453
# check trigger-3 success: 1
26454
DROP TRIGGER trg_1;
26455
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26456
f_int2 = CAST(f_char1 AS SIGNED INT),
26457
f_charbig = 'just inserted'
26458
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26460
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26461
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26462
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26463
'just inserted' FROM t0_template
26464
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26465
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26467
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26468
f_charbig = 'updated by trigger'
26469
WHERE f_int1 = - old.f_int1;
26471
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26472
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26474
# check trigger-4 success: 1
26475
DROP TRIGGER trg_1;
26476
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26477
f_int2 = CAST(f_char1 AS SIGNED INT),
26478
f_charbig = 'just inserted'
26479
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26481
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26482
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26483
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26484
'just inserted' FROM t0_template
26485
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26486
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26488
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26489
f_charbig = 'updated by trigger'
26490
WHERE f_int1 = new.f_int1;
26492
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26493
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26495
# check trigger-5 success: 1
26496
DROP TRIGGER trg_1;
26497
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26498
f_int2 = CAST(f_char1 AS SIGNED INT),
26499
f_charbig = 'just inserted'
26500
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26502
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26503
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26504
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26505
'just inserted' FROM t0_template
26506
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26507
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26509
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26510
f_charbig = 'updated by trigger'
26511
WHERE f_int1 = - old.f_int1;
26513
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26514
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26516
# check trigger-6 success: 1
26517
DROP TRIGGER trg_1;
26518
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26519
f_int2 = CAST(f_char1 AS SIGNED INT),
26520
f_charbig = 'just inserted'
26521
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26523
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26524
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26525
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26526
'just inserted' FROM t0_template
26527
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26528
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26530
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26531
f_charbig = 'updated by trigger'
26532
WHERE f_int1 = - old.f_int1;
26535
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26537
# check trigger-7 success: 1
26538
DROP TRIGGER trg_1;
26539
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26540
f_int2 = CAST(f_char1 AS SIGNED INT),
26541
f_charbig = 'just inserted'
26542
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26544
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26545
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26546
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26547
'just inserted' FROM t0_template
26548
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26549
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26551
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26552
f_charbig = 'updated by trigger'
26553
WHERE f_int1 = - old.f_int1;
26556
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26558
# check trigger-8 success: 1
26559
DROP TRIGGER trg_1;
26560
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26561
f_int2 = CAST(f_char1 AS SIGNED INT),
26562
f_charbig = 'just inserted'
26563
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26565
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26567
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26568
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26570
SET new.f_int1 = old.f_int1 + @max_row,
26571
new.f_int2 = old.f_int2 - @max_row,
26572
new.f_charbig = '####updated per update trigger####';
26575
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26576
f_charbig = '####updated per update statement itself####';
26578
# check trigger-9 success: 1
26579
DROP TRIGGER trg_2;
26580
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26581
f_int2 = CAST(f_char1 AS SIGNED INT),
26582
f_charbig = CONCAT('===',f_char1,'===');
26583
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26585
SET new.f_int1 = new.f_int1 + @max_row,
26586
new.f_int2 = new.f_int2 - @max_row,
26587
new.f_charbig = '####updated per update trigger####';
26590
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26591
f_charbig = '####updated per update statement itself####';
26593
# check trigger-10 success: 1
26594
DROP TRIGGER trg_2;
26595
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26596
f_int2 = CAST(f_char1 AS SIGNED INT),
26597
f_charbig = CONCAT('===',f_char1,'===');
26598
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26600
SET new.f_int1 = @my_max1 + @counter,
26601
new.f_int2 = @my_min2 - @counter,
26602
new.f_charbig = '####updated per insert trigger####';
26603
SET @counter = @counter + 1;
26606
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26607
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26608
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26609
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26610
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26612
DROP TRIGGER trg_3;
26614
# check trigger-11 success: 1
26616
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26617
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26618
AND f_charbig = '####updated per insert trigger####';
26619
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26621
SET new.f_int1 = @my_max1 + @counter,
26622
new.f_int2 = @my_min2 - @counter,
26623
new.f_charbig = '####updated per insert trigger####';
26624
SET @counter = @counter + 1;
26627
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26628
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26629
SELECT CAST(f_int1 AS CHAR),
26630
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26631
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26633
DROP TRIGGER trg_3;
26635
# check trigger-12 success: 1
26637
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26638
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26639
AND f_charbig = '####updated per insert trigger####';
26641
Table Op Msg_type Msg_text
26642
test.t1 analyze note The storage engine for the table doesn't support analyze
26643
CHECK TABLE t1 EXTENDED;
26644
Table Op Msg_type Msg_text
26645
test.t1 check note The storage engine for the table doesn't support check
26646
CHECKSUM TABLE t1 EXTENDED;
26648
test.t1 <some_value>
26650
Table Op Msg_type Msg_text
26651
test.t1 optimize note The storage engine for the table doesn't support optimize
26652
# check layout success: 1
26653
REPAIR TABLE t1 EXTENDED;
26654
Table Op Msg_type Msg_text
26655
test.t1 repair note The storage engine for the table doesn't support repair
26656
# check layout success: 1
26659
# check TRUNCATE success: 1
26660
# check layout success: 1
26661
# End usability test (inc/partition_check.inc)
26668
f_charbig VARCHAR(1000)
26669
, UNIQUE INDEX uidx1 (f_int2,f_int1)
26671
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
26672
(PARTITION parta VALUES LESS THAN (0),
26673
PARTITION partb VALUES LESS THAN (5),
26674
PARTITION partc VALUES LESS THAN (10),
26675
PARTITION partd VALUES LESS THAN (2147483646));
26676
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26677
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26678
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26679
ALTER TABLE t1 DROP INDEX uidx1;
26680
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26681
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26682
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26683
# Start usability test (inc/partition_check.inc)
26685
SHOW CREATE TABLE t1;
26687
t1 CREATE TABLE `t1` (
26688
`f_int1` int(11) DEFAULT NULL,
26689
`f_int2` int(11) DEFAULT NULL,
26690
`f_char1` char(20) DEFAULT NULL,
26691
`f_char2` char(20) DEFAULT NULL,
26692
`f_charbig` varchar(1000) DEFAULT NULL
26693
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) 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) */
26696
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYD
26697
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYI
26698
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYD
26699
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYI
26700
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYD
26701
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYI
26702
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYD
26703
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYI
26704
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYD
26705
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYI
26706
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYD
26707
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYI
26708
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYD
26709
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYI
26710
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYD
26711
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYI
26712
$MYSQLTEST_VARDIR/master-data/test/t1.frm
26713
$MYSQLTEST_VARDIR/master-data/test/t1.par
26715
# check prerequisites-1 success: 1
26716
# check COUNT(*) success: 1
26717
# check MIN/MAX(f_int1) success: 1
26718
# check MIN/MAX(f_int2) success: 1
26719
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26720
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26721
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26722
WHERE f_int1 IN (2,3);
26723
# check prerequisites-3 success: 1
26724
DELETE FROM t1 WHERE f_charbig = 'delete me';
26725
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26726
# check read via f_int1 success: 1
26727
# check read via f_int2 success: 1
26729
# check multiple-1 success: 1
26730
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26732
# check multiple-2 success: 1
26733
INSERT INTO t1 SELECT * FROM t0_template
26734
WHERE MOD(f_int1,3) = 0;
26736
# check multiple-3 success: 1
26737
UPDATE t1 SET f_int1 = f_int1 + @max_row
26738
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26739
AND @max_row_div2 + @max_row_div4;
26741
# check multiple-4 success: 1
26743
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26744
AND @max_row_div2 + @max_row_div4 + @max_row;
26746
# check multiple-5 success: 1
26747
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26749
SET f_int1 = @cur_value , f_int2 = @cur_value,
26750
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26751
f_charbig = '#SINGLE#';
26753
# check single-1 success: 1
26754
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26756
SET f_int1 = @cur_value , f_int2 = @cur_value,
26757
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26758
f_charbig = '#SINGLE#';
26760
# check single-2 success: 1
26761
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26762
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26763
UPDATE t1 SET f_int1 = @cur_value2
26764
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26766
# check single-3 success: 1
26767
SET @cur_value1= -1;
26768
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26769
UPDATE t1 SET f_int1 = @cur_value1
26770
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26772
# check single-4 success: 1
26773
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26774
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26776
# check single-5 success: 1
26777
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26779
# check single-6 success: 1
26780
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26781
ERROR HY000: Table has no partition for value 2147483647
26782
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26783
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26784
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26785
f_charbig = '#NULL#';
26787
SET f_int1 = NULL , f_int2 = -@max_row,
26788
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26789
f_charbig = '#NULL#';
26790
# check null success: 1
26792
# check null-1 success: 1
26793
UPDATE t1 SET f_int1 = -@max_row
26794
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26795
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26797
# check null-2 success: 1
26798
UPDATE t1 SET f_int1 = NULL
26799
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26800
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26802
# check null-3 success: 1
26804
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
26805
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
26807
# check null-4 success: 1
26809
WHERE f_int1 = 0 AND f_int2 = 0
26810
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26811
AND f_charbig = '#NULL#';
26813
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26814
SELECT f_int1, f_int1, '', '', 'was inserted'
26815
FROM t0_template source_tab
26816
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26818
# check transactions-1 success: 1
26821
# check transactions-2 success: 1
26824
# check transactions-3 success: 1
26825
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26829
# check transactions-4 success: 1
26830
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26831
SELECT f_int1, f_int1, '', '', 'was inserted'
26832
FROM t0_template source_tab
26833
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26835
# check transactions-5 success: 1
26838
Warning 1196 Some non-transactional changed tables couldn't be rolled back
26840
# check transactions-6 success: 1
26841
# INFO: Storage engine used for t1 seems to be not transactional.
26844
# check transactions-7 success: 1
26845
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26847
SET @@session.sql_mode = 'traditional';
26848
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26849
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26850
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26851
'', '', 'was inserted' FROM t0_template
26852
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26853
ERROR 22012: Division by 0
26856
# check transactions-8 success: 1
26857
# INFO: Storage engine used for t1 seems to be unable to revert
26858
# changes made by the failing statement.
26859
SET @@session.sql_mode = '';
26861
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26863
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26865
# check special-1 success: 1
26866
UPDATE t1 SET f_charbig = '';
26868
# check special-2 success: 1
26869
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26870
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26871
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26872
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26873
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26874
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26875
'just inserted' FROM t0_template
26876
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26877
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26879
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26880
f_charbig = 'updated by trigger'
26881
WHERE f_int1 = new.f_int1;
26883
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26884
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26885
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26887
# check trigger-1 success: 1
26888
DROP TRIGGER trg_1;
26889
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26890
f_int2 = CAST(f_char1 AS SIGNED INT),
26891
f_charbig = 'just inserted'
26892
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26894
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26895
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26896
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26897
'just inserted' FROM t0_template
26898
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26899
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26901
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26902
f_charbig = 'updated by trigger'
26903
WHERE f_int1 = new.f_int1;
26905
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26906
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26907
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26909
# check trigger-2 success: 1
26910
DROP TRIGGER trg_1;
26911
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26912
f_int2 = CAST(f_char1 AS SIGNED INT),
26913
f_charbig = 'just inserted'
26914
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26916
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26917
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26918
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26919
'just inserted' FROM t0_template
26920
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26921
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26923
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26924
f_charbig = 'updated by trigger'
26925
WHERE f_int1 = new.f_int1;
26927
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26928
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26930
# check trigger-3 success: 1
26931
DROP TRIGGER trg_1;
26932
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26933
f_int2 = CAST(f_char1 AS SIGNED INT),
26934
f_charbig = 'just inserted'
26935
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26937
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26938
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26939
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26940
'just inserted' FROM t0_template
26941
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26942
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26944
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26945
f_charbig = 'updated by trigger'
26946
WHERE f_int1 = - old.f_int1;
26948
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26949
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26951
# check trigger-4 success: 1
26952
DROP TRIGGER trg_1;
26953
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26954
f_int2 = CAST(f_char1 AS SIGNED INT),
26955
f_charbig = 'just inserted'
26956
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26958
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26959
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26960
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26961
'just inserted' FROM t0_template
26962
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26963
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26965
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26966
f_charbig = 'updated by trigger'
26967
WHERE f_int1 = new.f_int1;
26969
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26970
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26972
# check trigger-5 success: 1
26973
DROP TRIGGER trg_1;
26974
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26975
f_int2 = CAST(f_char1 AS SIGNED INT),
26976
f_charbig = 'just inserted'
26977
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26979
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26980
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26981
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26982
'just inserted' FROM t0_template
26983
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26984
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26986
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26987
f_charbig = 'updated by trigger'
26988
WHERE f_int1 = - old.f_int1;
26990
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26991
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26993
# check trigger-6 success: 1
26994
DROP TRIGGER trg_1;
26995
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26996
f_int2 = CAST(f_char1 AS SIGNED INT),
26997
f_charbig = 'just inserted'
26998
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27000
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27001
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27002
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27003
'just inserted' FROM t0_template
27004
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27005
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27007
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27008
f_charbig = 'updated by trigger'
27009
WHERE f_int1 = - old.f_int1;
27012
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27014
# check trigger-7 success: 1
27015
DROP TRIGGER trg_1;
27016
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27017
f_int2 = CAST(f_char1 AS SIGNED INT),
27018
f_charbig = 'just inserted'
27019
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27021
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27022
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27023
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27024
'just inserted' FROM t0_template
27025
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27026
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27028
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27029
f_charbig = 'updated by trigger'
27030
WHERE f_int1 = - old.f_int1;
27033
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27035
# check trigger-8 success: 1
27036
DROP TRIGGER trg_1;
27037
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27038
f_int2 = CAST(f_char1 AS SIGNED INT),
27039
f_charbig = 'just inserted'
27040
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27042
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27044
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27045
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27047
SET new.f_int1 = old.f_int1 + @max_row,
27048
new.f_int2 = old.f_int2 - @max_row,
27049
new.f_charbig = '####updated per update trigger####';
27052
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27053
f_charbig = '####updated per update statement itself####';
27055
# check trigger-9 success: 1
27056
DROP TRIGGER trg_2;
27057
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27058
f_int2 = CAST(f_char1 AS SIGNED INT),
27059
f_charbig = CONCAT('===',f_char1,'===');
27060
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27062
SET new.f_int1 = new.f_int1 + @max_row,
27063
new.f_int2 = new.f_int2 - @max_row,
27064
new.f_charbig = '####updated per update trigger####';
27067
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27068
f_charbig = '####updated per update statement itself####';
27070
# check trigger-10 success: 1
27071
DROP TRIGGER trg_2;
27072
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27073
f_int2 = CAST(f_char1 AS SIGNED INT),
27074
f_charbig = CONCAT('===',f_char1,'===');
27075
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27077
SET new.f_int1 = @my_max1 + @counter,
27078
new.f_int2 = @my_min2 - @counter,
27079
new.f_charbig = '####updated per insert trigger####';
27080
SET @counter = @counter + 1;
27083
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27084
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27085
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27086
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27089
DROP TRIGGER trg_3;
27091
# check trigger-11 success: 1
27093
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27094
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27095
AND f_charbig = '####updated per insert trigger####';
27096
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27098
SET new.f_int1 = @my_max1 + @counter,
27099
new.f_int2 = @my_min2 - @counter,
27100
new.f_charbig = '####updated per insert trigger####';
27101
SET @counter = @counter + 1;
27104
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27105
INSERT INTO t1 (f_char1, f_char2, f_charbig)
27106
SELECT CAST(f_int1 AS CHAR),
27107
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27108
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27110
DROP TRIGGER trg_3;
27112
# check trigger-12 success: 1
27114
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27115
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27116
AND f_charbig = '####updated per insert trigger####';
27118
Table Op Msg_type Msg_text
27119
test.t1 analyze note The storage engine for the table doesn't support analyze
27120
CHECK TABLE t1 EXTENDED;
27121
Table Op Msg_type Msg_text
27122
test.t1 check note The storage engine for the table doesn't support check
27123
CHECKSUM TABLE t1 EXTENDED;
27125
test.t1 <some_value>
27127
Table Op Msg_type Msg_text
27128
test.t1 optimize note The storage engine for the table doesn't support optimize
27129
# check layout success: 1
27130
REPAIR TABLE t1 EXTENDED;
27131
Table Op Msg_type Msg_text
27132
test.t1 repair note The storage engine for the table doesn't support repair
27133
# check layout success: 1
27136
# check TRUNCATE success: 1
27137
# check layout success: 1
27138
# End usability test (inc/partition_check.inc)
27145
f_charbig VARCHAR(1000)
27146
, UNIQUE INDEX uidx1 (f_int2,f_int1)
27148
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
27149
(PARTITION part1 VALUES LESS THAN (0)
27150
(SUBPARTITION subpart11, SUBPARTITION subpart12),
27151
PARTITION part2 VALUES LESS THAN (5)
27152
(SUBPARTITION subpart21, SUBPARTITION subpart22),
27153
PARTITION part3 VALUES LESS THAN (10)
27154
(SUBPARTITION subpart31, SUBPARTITION subpart32),
27155
PARTITION part4 VALUES LESS THAN (2147483646)
27156
(SUBPARTITION subpart41, SUBPARTITION subpart42));
27157
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27158
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27159
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27160
ALTER TABLE t1 DROP INDEX uidx1;
27161
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27162
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27163
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27164
# Start usability test (inc/partition_check.inc)
27166
SHOW CREATE TABLE t1;
27168
t1 CREATE TABLE `t1` (
27169
`f_int1` int(11) DEFAULT NULL,
27170
`f_int2` int(11) DEFAULT NULL,
27171
`f_char1` char(20) DEFAULT NULL,
27172
`f_char2` char(20) DEFAULT NULL,
27173
`f_charbig` varchar(1000) DEFAULT NULL
27174
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (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)) */
27177
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYD
27178
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYI
27179
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYD
27180
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYI
27181
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYD
27182
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYI
27183
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYD
27184
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYI
27185
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYD
27186
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYI
27187
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYD
27188
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYI
27189
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYD
27190
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYI
27191
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYD
27192
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYI
27193
$MYSQLTEST_VARDIR/master-data/test/t1.frm
27194
$MYSQLTEST_VARDIR/master-data/test/t1.par
27196
# check prerequisites-1 success: 1
27197
# check COUNT(*) success: 1
27198
# check MIN/MAX(f_int1) success: 1
27199
# check MIN/MAX(f_int2) success: 1
27200
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27201
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27202
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27203
WHERE f_int1 IN (2,3);
27204
# check prerequisites-3 success: 1
27205
DELETE FROM t1 WHERE f_charbig = 'delete me';
27206
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
27207
# check read via f_int1 success: 1
27208
# check read via f_int2 success: 1
27210
# check multiple-1 success: 1
27211
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27213
# check multiple-2 success: 1
27214
INSERT INTO t1 SELECT * FROM t0_template
27215
WHERE MOD(f_int1,3) = 0;
27217
# check multiple-3 success: 1
27218
UPDATE t1 SET f_int1 = f_int1 + @max_row
27219
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27220
AND @max_row_div2 + @max_row_div4;
27222
# check multiple-4 success: 1
27224
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27225
AND @max_row_div2 + @max_row_div4 + @max_row;
27227
# check multiple-5 success: 1
27228
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27230
SET f_int1 = @cur_value , f_int2 = @cur_value,
27231
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27232
f_charbig = '#SINGLE#';
27234
# check single-1 success: 1
27235
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27237
SET f_int1 = @cur_value , f_int2 = @cur_value,
27238
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27239
f_charbig = '#SINGLE#';
27241
# check single-2 success: 1
27242
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27243
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27244
UPDATE t1 SET f_int1 = @cur_value2
27245
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27247
# check single-3 success: 1
27248
SET @cur_value1= -1;
27249
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27250
UPDATE t1 SET f_int1 = @cur_value1
27251
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27253
# check single-4 success: 1
27254
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27255
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27257
# check single-5 success: 1
27258
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27260
# check single-6 success: 1
27261
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27262
ERROR HY000: Table has no partition for value 2147483647
27263
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27264
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27265
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27266
f_charbig = '#NULL#';
27268
SET f_int1 = NULL , f_int2 = -@max_row,
27269
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27270
f_charbig = '#NULL#';
27271
# check null success: 1
27273
# check null-1 success: 1
27274
UPDATE t1 SET f_int1 = -@max_row
27275
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27276
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27278
# check null-2 success: 1
27279
UPDATE t1 SET f_int1 = NULL
27280
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27281
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27283
# check null-3 success: 1
27285
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27286
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27288
# check null-4 success: 1
27290
WHERE f_int1 = 0 AND f_int2 = 0
27291
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27292
AND f_charbig = '#NULL#';
27294
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27295
SELECT f_int1, f_int1, '', '', 'was inserted'
27296
FROM t0_template source_tab
27297
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27299
# check transactions-1 success: 1
27302
# check transactions-2 success: 1
27305
# check transactions-3 success: 1
27306
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27310
# check transactions-4 success: 1
27311
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27312
SELECT f_int1, f_int1, '', '', 'was inserted'
27313
FROM t0_template source_tab
27314
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27316
# check transactions-5 success: 1
27319
Warning 1196 Some non-transactional changed tables couldn't be rolled back
27321
# check transactions-6 success: 1
27322
# INFO: Storage engine used for t1 seems to be not transactional.
27325
# check transactions-7 success: 1
27326
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27328
SET @@session.sql_mode = 'traditional';
27329
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27330
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27331
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27332
'', '', 'was inserted' FROM t0_template
27333
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27334
ERROR 22012: Division by 0
27337
# check transactions-8 success: 1
27338
# INFO: Storage engine used for t1 seems to be unable to revert
27339
# changes made by the failing statement.
27340
SET @@session.sql_mode = '';
27342
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27344
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27346
# check special-1 success: 1
27347
UPDATE t1 SET f_charbig = '';
27349
# check special-2 success: 1
27350
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27351
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27352
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27353
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27354
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27355
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27356
'just inserted' FROM t0_template
27357
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27358
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27360
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27361
f_charbig = 'updated by trigger'
27362
WHERE f_int1 = new.f_int1;
27364
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27365
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27366
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27368
# check trigger-1 success: 1
27369
DROP TRIGGER trg_1;
27370
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27371
f_int2 = CAST(f_char1 AS SIGNED INT),
27372
f_charbig = 'just inserted'
27373
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27375
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27376
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27377
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27378
'just inserted' FROM t0_template
27379
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27380
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27382
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27383
f_charbig = 'updated by trigger'
27384
WHERE f_int1 = new.f_int1;
27386
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27387
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27388
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27390
# check trigger-2 success: 1
27391
DROP TRIGGER trg_1;
27392
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27393
f_int2 = CAST(f_char1 AS SIGNED INT),
27394
f_charbig = 'just inserted'
27395
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27397
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27398
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27399
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27400
'just inserted' FROM t0_template
27401
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27402
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27404
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27405
f_charbig = 'updated by trigger'
27406
WHERE f_int1 = new.f_int1;
27408
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27409
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27411
# check trigger-3 success: 1
27412
DROP TRIGGER trg_1;
27413
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27414
f_int2 = CAST(f_char1 AS SIGNED INT),
27415
f_charbig = 'just inserted'
27416
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27418
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27419
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27420
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27421
'just inserted' FROM t0_template
27422
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27423
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27425
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27426
f_charbig = 'updated by trigger'
27427
WHERE f_int1 = - old.f_int1;
27429
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27430
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27432
# check trigger-4 success: 1
27433
DROP TRIGGER trg_1;
27434
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27435
f_int2 = CAST(f_char1 AS SIGNED INT),
27436
f_charbig = 'just inserted'
27437
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27439
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27440
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27441
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27442
'just inserted' FROM t0_template
27443
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27444
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27446
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27447
f_charbig = 'updated by trigger'
27448
WHERE f_int1 = new.f_int1;
27450
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27451
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27453
# check trigger-5 success: 1
27454
DROP TRIGGER trg_1;
27455
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27456
f_int2 = CAST(f_char1 AS SIGNED INT),
27457
f_charbig = 'just inserted'
27458
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27460
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27461
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27462
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27463
'just inserted' FROM t0_template
27464
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27465
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27467
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27468
f_charbig = 'updated by trigger'
27469
WHERE f_int1 = - old.f_int1;
27471
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27472
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27474
# check trigger-6 success: 1
27475
DROP TRIGGER trg_1;
27476
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27477
f_int2 = CAST(f_char1 AS SIGNED INT),
27478
f_charbig = 'just inserted'
27479
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27481
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27482
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27483
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27484
'just inserted' FROM t0_template
27485
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27486
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27488
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27489
f_charbig = 'updated by trigger'
27490
WHERE f_int1 = - old.f_int1;
27493
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27495
# check trigger-7 success: 1
27496
DROP TRIGGER trg_1;
27497
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27498
f_int2 = CAST(f_char1 AS SIGNED INT),
27499
f_charbig = 'just inserted'
27500
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27502
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27503
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27504
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27505
'just inserted' FROM t0_template
27506
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27507
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27509
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27510
f_charbig = 'updated by trigger'
27511
WHERE f_int1 = - old.f_int1;
27514
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27516
# check trigger-8 success: 1
27517
DROP TRIGGER trg_1;
27518
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27519
f_int2 = CAST(f_char1 AS SIGNED INT),
27520
f_charbig = 'just inserted'
27521
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27523
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27525
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27526
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27528
SET new.f_int1 = old.f_int1 + @max_row,
27529
new.f_int2 = old.f_int2 - @max_row,
27530
new.f_charbig = '####updated per update trigger####';
27533
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27534
f_charbig = '####updated per update statement itself####';
27536
# check trigger-9 success: 1
27537
DROP TRIGGER trg_2;
27538
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27539
f_int2 = CAST(f_char1 AS SIGNED INT),
27540
f_charbig = CONCAT('===',f_char1,'===');
27541
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27543
SET new.f_int1 = new.f_int1 + @max_row,
27544
new.f_int2 = new.f_int2 - @max_row,
27545
new.f_charbig = '####updated per update trigger####';
27548
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27549
f_charbig = '####updated per update statement itself####';
27551
# check trigger-10 success: 1
27552
DROP TRIGGER trg_2;
27553
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27554
f_int2 = CAST(f_char1 AS SIGNED INT),
27555
f_charbig = CONCAT('===',f_char1,'===');
27556
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27558
SET new.f_int1 = @my_max1 + @counter,
27559
new.f_int2 = @my_min2 - @counter,
27560
new.f_charbig = '####updated per insert trigger####';
27561
SET @counter = @counter + 1;
27564
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27565
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27566
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27567
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27568
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27570
DROP TRIGGER trg_3;
27572
# check trigger-11 success: 1
27574
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27575
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27576
AND f_charbig = '####updated per insert trigger####';
27577
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27579
SET new.f_int1 = @my_max1 + @counter,
27580
new.f_int2 = @my_min2 - @counter,
27581
new.f_charbig = '####updated per insert trigger####';
27582
SET @counter = @counter + 1;
27585
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27586
INSERT INTO t1 (f_char1, f_char2, f_charbig)
27587
SELECT CAST(f_int1 AS CHAR),
27588
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27591
DROP TRIGGER trg_3;
27593
# check trigger-12 success: 1
27595
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27596
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27597
AND f_charbig = '####updated per insert trigger####';
27599
Table Op Msg_type Msg_text
27600
test.t1 analyze note The storage engine for the table doesn't support analyze
27601
CHECK TABLE t1 EXTENDED;
27602
Table Op Msg_type Msg_text
27603
test.t1 check note The storage engine for the table doesn't support check
27604
CHECKSUM TABLE t1 EXTENDED;
27606
test.t1 <some_value>
27608
Table Op Msg_type Msg_text
27609
test.t1 optimize note The storage engine for the table doesn't support optimize
27610
# check layout success: 1
27611
REPAIR TABLE t1 EXTENDED;
27612
Table Op Msg_type Msg_text
27613
test.t1 repair note The storage engine for the table doesn't support repair
27614
# check layout success: 1
27617
# check TRUNCATE success: 1
27618
# check layout success: 1
27619
# End usability test (inc/partition_check.inc)
27626
f_charbig VARCHAR(1000)
27627
, UNIQUE INDEX uidx1 (f_int2,f_int1)
27629
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
27630
(PARTITION part1 VALUES IN (0)
27631
(SUBPARTITION sp11, SUBPARTITION sp12),
27632
PARTITION part2 VALUES IN (1)
27633
(SUBPARTITION sp21, SUBPARTITION sp22),
27634
PARTITION part3 VALUES IN (2)
27635
(SUBPARTITION sp31, SUBPARTITION sp32),
27636
PARTITION part4 VALUES IN (NULL)
27637
(SUBPARTITION sp41, SUBPARTITION sp42));
27638
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27639
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27640
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27641
ALTER TABLE t1 DROP INDEX uidx1;
27642
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27643
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27644
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27645
# Start usability test (inc/partition_check.inc)
27647
SHOW CREATE TABLE t1;
27649
t1 CREATE TABLE `t1` (
27650
`f_int1` int(11) DEFAULT NULL,
27651
`f_int2` int(11) DEFAULT NULL,
27652
`f_char1` char(20) DEFAULT NULL,
27653
`f_char2` char(20) DEFAULT NULL,
27654
`f_charbig` varchar(1000) DEFAULT NULL
27655
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = 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)) */
27658
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYD
27659
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYI
27660
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYD
27661
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYI
27662
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYD
27663
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYI
27664
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYD
27665
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYI
27666
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYD
27667
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYI
27668
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYD
27669
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYI
27670
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYD
27671
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYI
27672
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYD
27673
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYI
27674
$MYSQLTEST_VARDIR/master-data/test/t1.frm
27675
$MYSQLTEST_VARDIR/master-data/test/t1.par
27677
# check prerequisites-1 success: 1
27678
# check COUNT(*) success: 1
27679
# check MIN/MAX(f_int1) success: 1
27680
# check MIN/MAX(f_int2) success: 1
27681
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27682
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27683
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27684
WHERE f_int1 IN (2,3);
27685
# check prerequisites-3 success: 1
27686
DELETE FROM t1 WHERE f_charbig = 'delete me';
27687
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
27688
# check read via f_int1 success: 1
27689
# check read via f_int2 success: 1
27691
# check multiple-1 success: 1
27692
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27694
# check multiple-2 success: 1
27695
INSERT INTO t1 SELECT * FROM t0_template
27696
WHERE MOD(f_int1,3) = 0;
27698
# check multiple-3 success: 1
27699
UPDATE t1 SET f_int1 = f_int1 + @max_row
27700
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27701
AND @max_row_div2 + @max_row_div4;
27703
# check multiple-4 success: 1
27705
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27706
AND @max_row_div2 + @max_row_div4 + @max_row;
27708
# check multiple-5 success: 1
27709
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27711
SET f_int1 = @cur_value , f_int2 = @cur_value,
27712
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27713
f_charbig = '#SINGLE#';
27715
# check single-1 success: 1
27716
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27718
SET f_int1 = @cur_value , f_int2 = @cur_value,
27719
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27720
f_charbig = '#SINGLE#';
27722
# check single-2 success: 1
27723
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27724
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27725
UPDATE t1 SET f_int1 = @cur_value2
27726
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27728
# check single-3 success: 1
27729
SET @cur_value1= -1;
27730
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27731
UPDATE t1 SET f_int1 = @cur_value1
27732
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27734
# check single-4 success: 1
27735
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27736
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27738
# check single-5 success: 1
27739
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27741
# check single-6 success: 1
27742
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27744
# check single-7 success: 1
27745
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
27746
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27747
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27748
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27749
f_charbig = '#NULL#';
27751
SET f_int1 = NULL , f_int2 = -@max_row,
27752
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27753
f_charbig = '#NULL#';
27754
# check null success: 1
27756
# check null-1 success: 1
27757
UPDATE t1 SET f_int1 = -@max_row
27758
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27759
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27761
# check null-2 success: 1
27762
UPDATE t1 SET f_int1 = NULL
27763
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27764
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27766
# check null-3 success: 1
27768
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27769
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27771
# check null-4 success: 1
27773
WHERE f_int1 = 0 AND f_int2 = 0
27774
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27775
AND f_charbig = '#NULL#';
27777
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27778
SELECT f_int1, f_int1, '', '', 'was inserted'
27779
FROM t0_template source_tab
27780
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27782
# check transactions-1 success: 1
27785
# check transactions-2 success: 1
27788
# check transactions-3 success: 1
27789
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27793
# check transactions-4 success: 1
27794
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27795
SELECT f_int1, f_int1, '', '', 'was inserted'
27796
FROM t0_template source_tab
27797
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27799
# check transactions-5 success: 1
27802
Warning 1196 Some non-transactional changed tables couldn't be rolled back
27804
# check transactions-6 success: 1
27805
# INFO: Storage engine used for t1 seems to be not transactional.
27808
# check transactions-7 success: 1
27809
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27811
SET @@session.sql_mode = 'traditional';
27812
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27813
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27814
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27815
'', '', 'was inserted' FROM t0_template
27816
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27817
ERROR 22012: Division by 0
27820
# check transactions-8 success: 1
27821
# INFO: Storage engine used for t1 seems to be unable to revert
27822
# changes made by the failing statement.
27823
SET @@session.sql_mode = '';
27825
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27827
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27829
# check special-1 success: 1
27830
UPDATE t1 SET f_charbig = '';
27832
# check special-2 success: 1
27833
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27834
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27835
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27836
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27837
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27838
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27839
'just inserted' FROM t0_template
27840
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27841
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27843
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27844
f_charbig = 'updated by trigger'
27845
WHERE f_int1 = new.f_int1;
27847
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27848
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27849
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27851
# check trigger-1 success: 1
27852
DROP TRIGGER trg_1;
27853
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27854
f_int2 = CAST(f_char1 AS SIGNED INT),
27855
f_charbig = 'just inserted'
27856
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27858
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27859
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27860
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27861
'just inserted' FROM t0_template
27862
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27863
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27865
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27866
f_charbig = 'updated by trigger'
27867
WHERE f_int1 = new.f_int1;
27869
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27870
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27871
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27873
# check trigger-2 success: 1
27874
DROP TRIGGER trg_1;
27875
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27876
f_int2 = CAST(f_char1 AS SIGNED INT),
27877
f_charbig = 'just inserted'
27878
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27880
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27881
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27882
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27883
'just inserted' FROM t0_template
27884
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27885
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27887
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27888
f_charbig = 'updated by trigger'
27889
WHERE f_int1 = new.f_int1;
27891
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27892
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27894
# check trigger-3 success: 1
27895
DROP TRIGGER trg_1;
27896
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27897
f_int2 = CAST(f_char1 AS SIGNED INT),
27898
f_charbig = 'just inserted'
27899
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27901
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27902
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27903
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27904
'just inserted' FROM t0_template
27905
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27906
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27908
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27909
f_charbig = 'updated by trigger'
27910
WHERE f_int1 = - old.f_int1;
27912
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27913
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27915
# check trigger-4 success: 1
27916
DROP TRIGGER trg_1;
27917
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27918
f_int2 = CAST(f_char1 AS SIGNED INT),
27919
f_charbig = 'just inserted'
27920
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27922
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27923
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27924
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27925
'just inserted' FROM t0_template
27926
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27927
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27929
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27930
f_charbig = 'updated by trigger'
27931
WHERE f_int1 = new.f_int1;
27933
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27934
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27936
# check trigger-5 success: 1
27937
DROP TRIGGER trg_1;
27938
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27939
f_int2 = CAST(f_char1 AS SIGNED INT),
27940
f_charbig = 'just inserted'
27941
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27943
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27944
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27945
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27946
'just inserted' FROM t0_template
27947
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27948
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27950
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27951
f_charbig = 'updated by trigger'
27952
WHERE f_int1 = - old.f_int1;
27954
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27955
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27957
# check trigger-6 success: 1
27958
DROP TRIGGER trg_1;
27959
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27960
f_int2 = CAST(f_char1 AS SIGNED INT),
27961
f_charbig = 'just inserted'
27962
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27964
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27965
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27966
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27967
'just inserted' FROM t0_template
27968
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27969
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27971
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27972
f_charbig = 'updated by trigger'
27973
WHERE f_int1 = - old.f_int1;
27976
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27978
# check trigger-7 success: 1
27979
DROP TRIGGER trg_1;
27980
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27981
f_int2 = CAST(f_char1 AS SIGNED INT),
27982
f_charbig = 'just inserted'
27983
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27985
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27986
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27987
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27988
'just inserted' FROM t0_template
27989
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27990
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27992
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27993
f_charbig = 'updated by trigger'
27994
WHERE f_int1 = - old.f_int1;
27997
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27999
# check trigger-8 success: 1
28000
DROP TRIGGER trg_1;
28001
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28002
f_int2 = CAST(f_char1 AS SIGNED INT),
28003
f_charbig = 'just inserted'
28004
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28006
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28008
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28009
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28011
SET new.f_int1 = old.f_int1 + @max_row,
28012
new.f_int2 = old.f_int2 - @max_row,
28013
new.f_charbig = '####updated per update trigger####';
28016
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28017
f_charbig = '####updated per update statement itself####';
28019
# check trigger-9 success: 1
28020
DROP TRIGGER trg_2;
28021
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28022
f_int2 = CAST(f_char1 AS SIGNED INT),
28023
f_charbig = CONCAT('===',f_char1,'===');
28024
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28026
SET new.f_int1 = new.f_int1 + @max_row,
28027
new.f_int2 = new.f_int2 - @max_row,
28028
new.f_charbig = '####updated per update trigger####';
28031
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28032
f_charbig = '####updated per update statement itself####';
28034
# check trigger-10 success: 1
28035
DROP TRIGGER trg_2;
28036
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28037
f_int2 = CAST(f_char1 AS SIGNED INT),
28038
f_charbig = CONCAT('===',f_char1,'===');
28039
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28041
SET new.f_int1 = @my_max1 + @counter,
28042
new.f_int2 = @my_min2 - @counter,
28043
new.f_charbig = '####updated per insert trigger####';
28044
SET @counter = @counter + 1;
28047
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28048
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28049
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28050
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28051
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28053
DROP TRIGGER trg_3;
28055
# check trigger-11 success: 1
28057
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28058
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28059
AND f_charbig = '####updated per insert trigger####';
28060
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28062
SET new.f_int1 = @my_max1 + @counter,
28063
new.f_int2 = @my_min2 - @counter,
28064
new.f_charbig = '####updated per insert trigger####';
28065
SET @counter = @counter + 1;
28068
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28069
INSERT INTO t1 (f_char1, f_char2, f_charbig)
28070
SELECT CAST(f_int1 AS CHAR),
28071
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28072
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28074
DROP TRIGGER trg_3;
28076
# check trigger-12 success: 1
28078
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28079
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28080
AND f_charbig = '####updated per insert trigger####';
28082
Table Op Msg_type Msg_text
28083
test.t1 analyze note The storage engine for the table doesn't support analyze
28084
CHECK TABLE t1 EXTENDED;
28085
Table Op Msg_type Msg_text
28086
test.t1 check note The storage engine for the table doesn't support check
28087
CHECKSUM TABLE t1 EXTENDED;
28089
test.t1 <some_value>
28091
Table Op Msg_type Msg_text
28092
test.t1 optimize note The storage engine for the table doesn't support optimize
28093
# check layout success: 1
28094
REPAIR TABLE t1 EXTENDED;
28095
Table Op Msg_type Msg_text
28096
test.t1 repair note The storage engine for the table doesn't support repair
28097
# check layout success: 1
28100
# check TRUNCATE success: 1
28101
# check layout success: 1
28102
# End usability test (inc/partition_check.inc)
28109
f_charbig VARCHAR(1000)
28110
, UNIQUE INDEX uidx1 (f_int2,f_int1)
28112
PARTITION BY LIST(ABS(MOD(f_int1,2)))
28113
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
28114
(PARTITION part1 VALUES IN (0),
28115
PARTITION part2 VALUES IN (1),
28116
PARTITION part3 VALUES IN (NULL));
28117
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28118
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28119
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28120
ALTER TABLE t1 DROP INDEX uidx1;
28121
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28122
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28123
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28124
# Start usability test (inc/partition_check.inc)
28126
SHOW CREATE TABLE t1;
28128
t1 CREATE TABLE `t1` (
28129
`f_int1` int(11) DEFAULT NULL,
28130
`f_int2` int(11) DEFAULT NULL,
28131
`f_char1` char(20) DEFAULT NULL,
28132
`f_char2` char(20) DEFAULT NULL,
28133
`f_charbig` varchar(1000) DEFAULT NULL
28134
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = MyISAM, PARTITION part2 VALUES IN (1) ENGINE = MyISAM, PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
28137
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYD
28138
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYI
28139
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYD
28140
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYI
28141
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYD
28142
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYI
28143
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYD
28144
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYI
28145
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYD
28146
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYI
28147
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYD
28148
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYI
28149
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYD
28150
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYI
28151
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYD
28152
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYI
28153
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYD
28154
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYI
28155
$MYSQLTEST_VARDIR/master-data/test/t1.frm
28156
$MYSQLTEST_VARDIR/master-data/test/t1.par
28158
# check prerequisites-1 success: 1
28159
# check COUNT(*) success: 1
28160
# check MIN/MAX(f_int1) success: 1
28161
# check MIN/MAX(f_int2) success: 1
28162
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28163
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28164
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28165
WHERE f_int1 IN (2,3);
28166
# check prerequisites-3 success: 1
28167
DELETE FROM t1 WHERE f_charbig = 'delete me';
28168
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
28169
# check read via f_int1 success: 1
28170
# check read via f_int2 success: 1
28172
# check multiple-1 success: 1
28173
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28175
# check multiple-2 success: 1
28176
INSERT INTO t1 SELECT * FROM t0_template
28177
WHERE MOD(f_int1,3) = 0;
28179
# check multiple-3 success: 1
28180
UPDATE t1 SET f_int1 = f_int1 + @max_row
28181
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28182
AND @max_row_div2 + @max_row_div4;
28184
# check multiple-4 success: 1
28186
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28187
AND @max_row_div2 + @max_row_div4 + @max_row;
28189
# check multiple-5 success: 1
28190
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28192
SET f_int1 = @cur_value , f_int2 = @cur_value,
28193
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28194
f_charbig = '#SINGLE#';
28196
# check single-1 success: 1
28197
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28199
SET f_int1 = @cur_value , f_int2 = @cur_value,
28200
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28201
f_charbig = '#SINGLE#';
28203
# check single-2 success: 1
28204
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28205
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28206
UPDATE t1 SET f_int1 = @cur_value2
28207
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28209
# check single-3 success: 1
28210
SET @cur_value1= -1;
28211
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28212
UPDATE t1 SET f_int1 = @cur_value1
28213
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28215
# check single-4 success: 1
28216
SELECT MAX(f_int1) INTO @cur_value FROM t1;
28217
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28219
# check single-5 success: 1
28220
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28222
# check single-6 success: 1
28223
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28225
# check single-7 success: 1
28226
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28227
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28228
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28229
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28230
f_charbig = '#NULL#';
28232
SET f_int1 = NULL , f_int2 = -@max_row,
28233
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28234
f_charbig = '#NULL#';
28235
# check null success: 1
28237
# check null-1 success: 1
28238
UPDATE t1 SET f_int1 = -@max_row
28239
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28240
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28242
# check null-2 success: 1
28243
UPDATE t1 SET f_int1 = NULL
28244
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28245
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28247
# check null-3 success: 1
28249
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28250
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28252
# check null-4 success: 1
28254
WHERE f_int1 = 0 AND f_int2 = 0
28255
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28256
AND f_charbig = '#NULL#';
28258
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28259
SELECT f_int1, f_int1, '', '', 'was inserted'
28260
FROM t0_template source_tab
28261
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28263
# check transactions-1 success: 1
28266
# check transactions-2 success: 1
28269
# check transactions-3 success: 1
28270
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28274
# check transactions-4 success: 1
28275
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28276
SELECT f_int1, f_int1, '', '', 'was inserted'
28277
FROM t0_template source_tab
28278
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28280
# check transactions-5 success: 1
28283
Warning 1196 Some non-transactional changed tables couldn't be rolled back
28285
# check transactions-6 success: 1
28286
# INFO: Storage engine used for t1 seems to be not transactional.
28289
# check transactions-7 success: 1
28290
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28292
SET @@session.sql_mode = 'traditional';
28293
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28294
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28295
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28296
'', '', 'was inserted' FROM t0_template
28297
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28298
ERROR 22012: Division by 0
28301
# check transactions-8 success: 1
28302
# INFO: Storage engine used for t1 seems to be unable to revert
28303
# changes made by the failing statement.
28304
SET @@session.sql_mode = '';
28306
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28308
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28310
# check special-1 success: 1
28311
UPDATE t1 SET f_charbig = '';
28313
# check special-2 success: 1
28314
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28315
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28316
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28317
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28318
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28319
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28320
'just inserted' FROM t0_template
28321
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28322
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28324
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28325
f_charbig = 'updated by trigger'
28326
WHERE f_int1 = new.f_int1;
28328
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28329
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28330
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28332
# check trigger-1 success: 1
28333
DROP TRIGGER trg_1;
28334
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28335
f_int2 = CAST(f_char1 AS SIGNED INT),
28336
f_charbig = 'just inserted'
28337
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28339
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28340
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28341
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28342
'just inserted' FROM t0_template
28343
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28344
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28346
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28347
f_charbig = 'updated by trigger'
28348
WHERE f_int1 = new.f_int1;
28350
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28351
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28352
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28354
# check trigger-2 success: 1
28355
DROP TRIGGER trg_1;
28356
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28357
f_int2 = CAST(f_char1 AS SIGNED INT),
28358
f_charbig = 'just inserted'
28359
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28361
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28362
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28363
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28364
'just inserted' FROM t0_template
28365
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28366
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28368
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28369
f_charbig = 'updated by trigger'
28370
WHERE f_int1 = new.f_int1;
28372
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28373
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28375
# check trigger-3 success: 1
28376
DROP TRIGGER trg_1;
28377
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28378
f_int2 = CAST(f_char1 AS SIGNED INT),
28379
f_charbig = 'just inserted'
28380
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28382
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28383
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28384
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28385
'just inserted' FROM t0_template
28386
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28387
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28389
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28390
f_charbig = 'updated by trigger'
28391
WHERE f_int1 = - old.f_int1;
28393
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28394
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28396
# check trigger-4 success: 1
28397
DROP TRIGGER trg_1;
28398
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28399
f_int2 = CAST(f_char1 AS SIGNED INT),
28400
f_charbig = 'just inserted'
28401
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28403
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28404
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28405
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28406
'just inserted' FROM t0_template
28407
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28408
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28410
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28411
f_charbig = 'updated by trigger'
28412
WHERE f_int1 = new.f_int1;
28414
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28415
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28417
# check trigger-5 success: 1
28418
DROP TRIGGER trg_1;
28419
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28420
f_int2 = CAST(f_char1 AS SIGNED INT),
28421
f_charbig = 'just inserted'
28422
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28424
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28425
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28426
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28427
'just inserted' FROM t0_template
28428
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28429
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28431
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28432
f_charbig = 'updated by trigger'
28433
WHERE f_int1 = - old.f_int1;
28435
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28436
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28438
# check trigger-6 success: 1
28439
DROP TRIGGER trg_1;
28440
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28441
f_int2 = CAST(f_char1 AS SIGNED INT),
28442
f_charbig = 'just inserted'
28443
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28445
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28446
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28447
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28448
'just inserted' FROM t0_template
28449
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28450
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28452
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28453
f_charbig = 'updated by trigger'
28454
WHERE f_int1 = - old.f_int1;
28457
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28459
# check trigger-7 success: 1
28460
DROP TRIGGER trg_1;
28461
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28462
f_int2 = CAST(f_char1 AS SIGNED INT),
28463
f_charbig = 'just inserted'
28464
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28466
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28467
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28468
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28469
'just inserted' FROM t0_template
28470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28471
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28473
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28474
f_charbig = 'updated by trigger'
28475
WHERE f_int1 = - old.f_int1;
28478
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28480
# check trigger-8 success: 1
28481
DROP TRIGGER trg_1;
28482
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28483
f_int2 = CAST(f_char1 AS SIGNED INT),
28484
f_charbig = 'just inserted'
28485
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28487
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28489
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28490
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28492
SET new.f_int1 = old.f_int1 + @max_row,
28493
new.f_int2 = old.f_int2 - @max_row,
28494
new.f_charbig = '####updated per update trigger####';
28497
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28498
f_charbig = '####updated per update statement itself####';
28500
# check trigger-9 success: 1
28501
DROP TRIGGER trg_2;
28502
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28503
f_int2 = CAST(f_char1 AS SIGNED INT),
28504
f_charbig = CONCAT('===',f_char1,'===');
28505
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28507
SET new.f_int1 = new.f_int1 + @max_row,
28508
new.f_int2 = new.f_int2 - @max_row,
28509
new.f_charbig = '####updated per update trigger####';
28512
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28513
f_charbig = '####updated per update statement itself####';
28515
# check trigger-10 success: 1
28516
DROP TRIGGER trg_2;
28517
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28518
f_int2 = CAST(f_char1 AS SIGNED INT),
28519
f_charbig = CONCAT('===',f_char1,'===');
28520
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28522
SET new.f_int1 = @my_max1 + @counter,
28523
new.f_int2 = @my_min2 - @counter,
28524
new.f_charbig = '####updated per insert trigger####';
28525
SET @counter = @counter + 1;
28528
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28529
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28530
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28531
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28532
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28534
DROP TRIGGER trg_3;
28536
# check trigger-11 success: 1
28538
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28539
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28540
AND f_charbig = '####updated per insert trigger####';
28541
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28543
SET new.f_int1 = @my_max1 + @counter,
28544
new.f_int2 = @my_min2 - @counter,
28545
new.f_charbig = '####updated per insert trigger####';
28546
SET @counter = @counter + 1;
28549
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28550
INSERT INTO t1 (f_char1, f_char2, f_charbig)
28551
SELECT CAST(f_int1 AS CHAR),
28552
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28553
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28555
DROP TRIGGER trg_3;
28557
# check trigger-12 success: 1
28559
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28560
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28561
AND f_charbig = '####updated per insert trigger####';
28563
Table Op Msg_type Msg_text
28564
test.t1 analyze note The storage engine for the table doesn't support analyze
28565
CHECK TABLE t1 EXTENDED;
28566
Table Op Msg_type Msg_text
28567
test.t1 check note The storage engine for the table doesn't support check
28568
CHECKSUM TABLE t1 EXTENDED;
28570
test.t1 <some_value>
28572
Table Op Msg_type Msg_text
28573
test.t1 optimize note The storage engine for the table doesn't support optimize
28574
# check layout success: 1
28575
REPAIR TABLE t1 EXTENDED;
28576
Table Op Msg_type Msg_text
28577
test.t1 repair note The storage engine for the table doesn't support repair
28578
# check layout success: 1
28581
# check TRUNCATE success: 1
28582
# check layout success: 1
28583
# End usability test (inc/partition_check.inc)
28585
DROP TABLE IF EXISTS t1;
28591
f_charbig VARCHAR(1000)
28592
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
28594
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
28595
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28596
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28597
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28598
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
28599
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28600
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28601
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28602
# Start usability test (inc/partition_check.inc)
28604
SHOW CREATE TABLE t1;
28606
t1 CREATE TABLE `t1` (
28607
`f_int1` int(11) DEFAULT NULL,
28608
`f_int2` int(11) DEFAULT NULL,
28609
`f_char1` char(20) DEFAULT NULL,
28610
`f_char2` char(20) DEFAULT NULL,
28611
`f_charbig` varchar(1000) DEFAULT NULL
28612
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
28615
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
28616
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
28617
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
28618
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
28619
$MYSQLTEST_VARDIR/master-data/test/t1.frm
28620
$MYSQLTEST_VARDIR/master-data/test/t1.par
28622
# check prerequisites-1 success: 1
28623
# check COUNT(*) success: 1
28624
# check MIN/MAX(f_int1) success: 1
28625
# check MIN/MAX(f_int2) success: 1
28626
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28627
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28628
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28629
WHERE f_int1 IN (2,3);
28630
# check prerequisites-3 success: 1
28631
DELETE FROM t1 WHERE f_charbig = 'delete me';
28632
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
28633
# check read via f_int1 success: 1
28634
# check read via f_int2 success: 1
28636
# check multiple-1 success: 1
28637
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28639
# check multiple-2 success: 1
28640
INSERT INTO t1 SELECT * FROM t0_template
28641
WHERE MOD(f_int1,3) = 0;
28643
# check multiple-3 success: 1
28644
UPDATE t1 SET f_int1 = f_int1 + @max_row
28645
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28646
AND @max_row_div2 + @max_row_div4;
28648
# check multiple-4 success: 1
28650
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28651
AND @max_row_div2 + @max_row_div4 + @max_row;
28653
# check multiple-5 success: 1
28654
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28656
SET f_int1 = @cur_value , f_int2 = @cur_value,
28657
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28658
f_charbig = '#SINGLE#';
28660
# check single-1 success: 1
28661
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28663
SET f_int1 = @cur_value , f_int2 = @cur_value,
28664
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28665
f_charbig = '#SINGLE#';
28667
# check single-2 success: 1
28668
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28669
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28670
UPDATE t1 SET f_int1 = @cur_value2
28671
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28673
# check single-3 success: 1
28674
SET @cur_value1= -1;
28675
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28676
UPDATE t1 SET f_int1 = @cur_value1
28677
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28679
# check single-4 success: 1
28680
SELECT MAX(f_int1) INTO @cur_value FROM t1;
28681
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28683
# check single-5 success: 1
28684
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28686
# check single-6 success: 1
28687
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28689
# check single-7 success: 1
28690
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28691
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28692
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28693
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28694
f_charbig = '#NULL#';
28696
SET f_int1 = NULL , f_int2 = -@max_row,
28697
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28698
f_charbig = '#NULL#';
28699
# check null success: 1
28701
# check null-1 success: 1
28702
UPDATE t1 SET f_int1 = -@max_row
28703
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28704
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28706
# check null-2 success: 1
28707
UPDATE t1 SET f_int1 = NULL
28708
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28709
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28711
# check null-3 success: 1
28713
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28714
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28716
# check null-4 success: 1
28718
WHERE f_int1 = 0 AND f_int2 = 0
28719
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28720
AND f_charbig = '#NULL#';
28722
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28723
SELECT f_int1, f_int1, '', '', 'was inserted'
28724
FROM t0_template source_tab
28725
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28727
# check transactions-1 success: 1
28730
# check transactions-2 success: 1
28733
# check transactions-3 success: 1
28734
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28738
# check transactions-4 success: 1
28739
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28740
SELECT f_int1, f_int1, '', '', 'was inserted'
28741
FROM t0_template source_tab
28742
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28744
# check transactions-5 success: 1
28747
Warning 1196 Some non-transactional changed tables couldn't be rolled back
28749
# check transactions-6 success: 1
28750
# INFO: Storage engine used for t1 seems to be not transactional.
28753
# check transactions-7 success: 1
28754
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28756
SET @@session.sql_mode = 'traditional';
28757
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28758
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28759
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28760
'', '', 'was inserted' FROM t0_template
28761
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28762
ERROR 22012: Division by 0
28765
# check transactions-8 success: 1
28766
# INFO: Storage engine used for t1 seems to be unable to revert
28767
# changes made by the failing statement.
28768
SET @@session.sql_mode = '';
28770
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28772
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28774
# check special-1 success: 1
28775
UPDATE t1 SET f_charbig = '';
28777
# check special-2 success: 1
28778
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28779
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28780
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28781
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28782
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28783
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28784
'just inserted' FROM t0_template
28785
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28786
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28788
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28789
f_charbig = 'updated by trigger'
28790
WHERE f_int1 = new.f_int1;
28792
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28793
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28794
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28796
# check trigger-1 success: 1
28797
DROP TRIGGER trg_1;
28798
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28799
f_int2 = CAST(f_char1 AS SIGNED INT),
28800
f_charbig = 'just inserted'
28801
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28803
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28804
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28805
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28806
'just inserted' FROM t0_template
28807
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28808
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28810
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28811
f_charbig = 'updated by trigger'
28812
WHERE f_int1 = new.f_int1;
28814
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28815
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28816
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28818
# check trigger-2 success: 1
28819
DROP TRIGGER trg_1;
28820
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28821
f_int2 = CAST(f_char1 AS SIGNED INT),
28822
f_charbig = 'just inserted'
28823
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28825
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28826
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28827
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28828
'just inserted' FROM t0_template
28829
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28830
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28832
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28833
f_charbig = 'updated by trigger'
28834
WHERE f_int1 = new.f_int1;
28836
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28837
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28839
# check trigger-3 success: 1
28840
DROP TRIGGER trg_1;
28841
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28842
f_int2 = CAST(f_char1 AS SIGNED INT),
28843
f_charbig = 'just inserted'
28844
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28846
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28847
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28848
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28849
'just inserted' FROM t0_template
28850
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28851
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28853
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28854
f_charbig = 'updated by trigger'
28855
WHERE f_int1 = - old.f_int1;
28857
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28858
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28860
# check trigger-4 success: 1
28861
DROP TRIGGER trg_1;
28862
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28863
f_int2 = CAST(f_char1 AS SIGNED INT),
28864
f_charbig = 'just inserted'
28865
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28867
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28868
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28869
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28870
'just inserted' FROM t0_template
28871
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28872
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28874
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28875
f_charbig = 'updated by trigger'
28876
WHERE f_int1 = new.f_int1;
28878
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28879
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28881
# check trigger-5 success: 1
28882
DROP TRIGGER trg_1;
28883
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28884
f_int2 = CAST(f_char1 AS SIGNED INT),
28885
f_charbig = 'just inserted'
28886
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28888
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28889
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28890
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28891
'just inserted' FROM t0_template
28892
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28893
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28895
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28896
f_charbig = 'updated by trigger'
28897
WHERE f_int1 = - old.f_int1;
28899
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28900
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28902
# check trigger-6 success: 1
28903
DROP TRIGGER trg_1;
28904
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28905
f_int2 = CAST(f_char1 AS SIGNED INT),
28906
f_charbig = 'just inserted'
28907
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28909
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28910
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28911
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28912
'just inserted' FROM t0_template
28913
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28914
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28916
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28917
f_charbig = 'updated by trigger'
28918
WHERE f_int1 = - old.f_int1;
28921
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28923
# check trigger-7 success: 1
28924
DROP TRIGGER trg_1;
28925
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28926
f_int2 = CAST(f_char1 AS SIGNED INT),
28927
f_charbig = 'just inserted'
28928
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28930
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28931
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28932
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28933
'just inserted' FROM t0_template
28934
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28935
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28937
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28938
f_charbig = 'updated by trigger'
28939
WHERE f_int1 = - old.f_int1;
28942
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28944
# check trigger-8 success: 1
28945
DROP TRIGGER trg_1;
28946
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28947
f_int2 = CAST(f_char1 AS SIGNED INT),
28948
f_charbig = 'just inserted'
28949
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28951
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28953
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28954
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28956
SET new.f_int1 = old.f_int1 + @max_row,
28957
new.f_int2 = old.f_int2 - @max_row,
28958
new.f_charbig = '####updated per update trigger####';
28961
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28962
f_charbig = '####updated per update statement itself####';
28964
# check trigger-9 success: 1
28965
DROP TRIGGER trg_2;
28966
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28967
f_int2 = CAST(f_char1 AS SIGNED INT),
28968
f_charbig = CONCAT('===',f_char1,'===');
28969
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28971
SET new.f_int1 = new.f_int1 + @max_row,
28972
new.f_int2 = new.f_int2 - @max_row,
28973
new.f_charbig = '####updated per update trigger####';
28976
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28977
f_charbig = '####updated per update statement itself####';
28979
# check trigger-10 success: 1
28980
DROP TRIGGER trg_2;
28981
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28982
f_int2 = CAST(f_char1 AS SIGNED INT),
28983
f_charbig = CONCAT('===',f_char1,'===');
28984
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28986
SET new.f_int1 = @my_max1 + @counter,
28987
new.f_int2 = @my_min2 - @counter,
28988
new.f_charbig = '####updated per insert trigger####';
28989
SET @counter = @counter + 1;
28992
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28993
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28994
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28995
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28996
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28998
DROP TRIGGER trg_3;
29000
# check trigger-11 success: 1
29002
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29003
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29004
AND f_charbig = '####updated per insert trigger####';
29005
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29007
SET new.f_int1 = @my_max1 + @counter,
29008
new.f_int2 = @my_min2 - @counter,
29009
new.f_charbig = '####updated per insert trigger####';
29010
SET @counter = @counter + 1;
29013
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29014
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29015
SELECT CAST(f_int1 AS CHAR),
29016
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29017
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29019
DROP TRIGGER trg_3;
29021
# check trigger-12 success: 1
29023
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29024
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29025
AND f_charbig = '####updated per insert trigger####';
29027
Table Op Msg_type Msg_text
29028
test.t1 analyze note The storage engine for the table doesn't support analyze
29029
CHECK TABLE t1 EXTENDED;
29030
Table Op Msg_type Msg_text
29031
test.t1 check note The storage engine for the table doesn't support check
29032
CHECKSUM TABLE t1 EXTENDED;
29034
test.t1 <some_value>
29036
Table Op Msg_type Msg_text
29037
test.t1 optimize note The storage engine for the table doesn't support optimize
29038
# check layout success: 1
29039
REPAIR TABLE t1 EXTENDED;
29040
Table Op Msg_type Msg_text
29041
test.t1 repair note The storage engine for the table doesn't support repair
29042
# check layout success: 1
29045
# check TRUNCATE success: 1
29046
# check layout success: 1
29047
# End usability test (inc/partition_check.inc)
29054
f_charbig VARCHAR(1000)
29055
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
29057
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
29058
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29059
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29060
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29061
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
29062
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29063
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29064
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29065
# Start usability test (inc/partition_check.inc)
29067
SHOW CREATE TABLE t1;
29069
t1 CREATE TABLE `t1` (
29070
`f_int1` int(11) DEFAULT NULL,
29071
`f_int2` int(11) DEFAULT NULL,
29072
`f_char1` char(20) DEFAULT NULL,
29073
`f_char2` char(20) DEFAULT NULL,
29074
`f_charbig` varchar(1000) DEFAULT NULL
29075
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
29078
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYD
29079
$MYSQLTEST_VARDIR/master-data/test/t1#P#p0.MYI
29080
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYD
29081
$MYSQLTEST_VARDIR/master-data/test/t1#P#p1.MYI
29082
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYD
29083
$MYSQLTEST_VARDIR/master-data/test/t1#P#p2.MYI
29084
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYD
29085
$MYSQLTEST_VARDIR/master-data/test/t1#P#p3.MYI
29086
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYD
29087
$MYSQLTEST_VARDIR/master-data/test/t1#P#p4.MYI
29088
$MYSQLTEST_VARDIR/master-data/test/t1.frm
29089
$MYSQLTEST_VARDIR/master-data/test/t1.par
29091
# check prerequisites-1 success: 1
29092
# check COUNT(*) success: 1
29093
# check MIN/MAX(f_int1) success: 1
29094
# check MIN/MAX(f_int2) success: 1
29095
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29096
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29097
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29098
WHERE f_int1 IN (2,3);
29099
# check prerequisites-3 success: 1
29100
DELETE FROM t1 WHERE f_charbig = 'delete me';
29101
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
29102
# check read via f_int1 success: 1
29103
# check read via f_int2 success: 1
29105
# check multiple-1 success: 1
29106
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29108
# check multiple-2 success: 1
29109
INSERT INTO t1 SELECT * FROM t0_template
29110
WHERE MOD(f_int1,3) = 0;
29112
# check multiple-3 success: 1
29113
UPDATE t1 SET f_int1 = f_int1 + @max_row
29114
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29115
AND @max_row_div2 + @max_row_div4;
29117
# check multiple-4 success: 1
29119
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29120
AND @max_row_div2 + @max_row_div4 + @max_row;
29122
# check multiple-5 success: 1
29123
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29125
SET f_int1 = @cur_value , f_int2 = @cur_value,
29126
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29127
f_charbig = '#SINGLE#';
29129
# check single-1 success: 1
29130
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29132
SET f_int1 = @cur_value , f_int2 = @cur_value,
29133
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29134
f_charbig = '#SINGLE#';
29136
# check single-2 success: 1
29137
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29138
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29139
UPDATE t1 SET f_int1 = @cur_value2
29140
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29142
# check single-3 success: 1
29143
SET @cur_value1= -1;
29144
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29145
UPDATE t1 SET f_int1 = @cur_value1
29146
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29148
# check single-4 success: 1
29149
SELECT MAX(f_int1) INTO @cur_value FROM t1;
29150
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29152
# check single-5 success: 1
29153
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29155
# check single-6 success: 1
29156
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29158
# check single-7 success: 1
29159
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
29160
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29161
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29162
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29163
f_charbig = '#NULL#';
29165
SET f_int1 = NULL , f_int2 = -@max_row,
29166
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29167
f_charbig = '#NULL#';
29168
# check null success: 1
29170
# check null-1 success: 1
29171
UPDATE t1 SET f_int1 = -@max_row
29172
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29173
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29175
# check null-2 success: 1
29176
UPDATE t1 SET f_int1 = NULL
29177
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29178
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29180
# check null-3 success: 1
29182
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29183
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29185
# check null-4 success: 1
29187
WHERE f_int1 = 0 AND f_int2 = 0
29188
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29189
AND f_charbig = '#NULL#';
29191
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29192
SELECT f_int1, f_int1, '', '', 'was inserted'
29193
FROM t0_template source_tab
29194
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29196
# check transactions-1 success: 1
29199
# check transactions-2 success: 1
29202
# check transactions-3 success: 1
29203
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29207
# check transactions-4 success: 1
29208
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29209
SELECT f_int1, f_int1, '', '', 'was inserted'
29210
FROM t0_template source_tab
29211
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29213
# check transactions-5 success: 1
29216
Warning 1196 Some non-transactional changed tables couldn't be rolled back
29218
# check transactions-6 success: 1
29219
# INFO: Storage engine used for t1 seems to be not transactional.
29222
# check transactions-7 success: 1
29223
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29225
SET @@session.sql_mode = 'traditional';
29226
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29227
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29228
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29229
'', '', 'was inserted' FROM t0_template
29230
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29231
ERROR 22012: Division by 0
29234
# check transactions-8 success: 1
29235
# INFO: Storage engine used for t1 seems to be unable to revert
29236
# changes made by the failing statement.
29237
SET @@session.sql_mode = '';
29239
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29241
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29243
# check special-1 success: 1
29244
UPDATE t1 SET f_charbig = '';
29246
# check special-2 success: 1
29247
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29248
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29249
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29250
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29251
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29252
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29253
'just inserted' FROM t0_template
29254
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29255
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29257
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29258
f_charbig = 'updated by trigger'
29259
WHERE f_int1 = new.f_int1;
29261
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29262
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29263
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29265
# check trigger-1 success: 1
29266
DROP TRIGGER trg_1;
29267
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29268
f_int2 = CAST(f_char1 AS SIGNED INT),
29269
f_charbig = 'just inserted'
29270
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29272
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29273
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29274
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29275
'just inserted' FROM t0_template
29276
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29277
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29279
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29280
f_charbig = 'updated by trigger'
29281
WHERE f_int1 = new.f_int1;
29283
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29284
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29285
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29287
# check trigger-2 success: 1
29288
DROP TRIGGER trg_1;
29289
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29290
f_int2 = CAST(f_char1 AS SIGNED INT),
29291
f_charbig = 'just inserted'
29292
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29294
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29295
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29296
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29297
'just inserted' FROM t0_template
29298
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29299
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29301
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29302
f_charbig = 'updated by trigger'
29303
WHERE f_int1 = new.f_int1;
29305
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29306
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29308
# check trigger-3 success: 1
29309
DROP TRIGGER trg_1;
29310
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29311
f_int2 = CAST(f_char1 AS SIGNED INT),
29312
f_charbig = 'just inserted'
29313
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29315
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29316
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29317
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29318
'just inserted' FROM t0_template
29319
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29320
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29322
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29323
f_charbig = 'updated by trigger'
29324
WHERE f_int1 = - old.f_int1;
29326
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29327
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29329
# check trigger-4 success: 1
29330
DROP TRIGGER trg_1;
29331
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29332
f_int2 = CAST(f_char1 AS SIGNED INT),
29333
f_charbig = 'just inserted'
29334
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29336
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29337
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29338
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29339
'just inserted' FROM t0_template
29340
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29341
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29343
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29344
f_charbig = 'updated by trigger'
29345
WHERE f_int1 = new.f_int1;
29347
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29348
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29350
# check trigger-5 success: 1
29351
DROP TRIGGER trg_1;
29352
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29353
f_int2 = CAST(f_char1 AS SIGNED INT),
29354
f_charbig = 'just inserted'
29355
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29357
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29358
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29359
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29360
'just inserted' FROM t0_template
29361
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29362
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29364
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29365
f_charbig = 'updated by trigger'
29366
WHERE f_int1 = - old.f_int1;
29368
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29369
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29371
# check trigger-6 success: 1
29372
DROP TRIGGER trg_1;
29373
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29374
f_int2 = CAST(f_char1 AS SIGNED INT),
29375
f_charbig = 'just inserted'
29376
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29378
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29379
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29380
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29381
'just inserted' FROM t0_template
29382
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29383
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29385
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29386
f_charbig = 'updated by trigger'
29387
WHERE f_int1 = - old.f_int1;
29390
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29392
# check trigger-7 success: 1
29393
DROP TRIGGER trg_1;
29394
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29395
f_int2 = CAST(f_char1 AS SIGNED INT),
29396
f_charbig = 'just inserted'
29397
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29399
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29400
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29401
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29402
'just inserted' FROM t0_template
29403
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29404
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29406
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29407
f_charbig = 'updated by trigger'
29408
WHERE f_int1 = - old.f_int1;
29411
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29413
# check trigger-8 success: 1
29414
DROP TRIGGER trg_1;
29415
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29416
f_int2 = CAST(f_char1 AS SIGNED INT),
29417
f_charbig = 'just inserted'
29418
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29420
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29422
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29423
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29425
SET new.f_int1 = old.f_int1 + @max_row,
29426
new.f_int2 = old.f_int2 - @max_row,
29427
new.f_charbig = '####updated per update trigger####';
29430
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29431
f_charbig = '####updated per update statement itself####';
29433
# check trigger-9 success: 1
29434
DROP TRIGGER trg_2;
29435
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29436
f_int2 = CAST(f_char1 AS SIGNED INT),
29437
f_charbig = CONCAT('===',f_char1,'===');
29438
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29440
SET new.f_int1 = new.f_int1 + @max_row,
29441
new.f_int2 = new.f_int2 - @max_row,
29442
new.f_charbig = '####updated per update trigger####';
29445
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29446
f_charbig = '####updated per update statement itself####';
29448
# check trigger-10 success: 1
29449
DROP TRIGGER trg_2;
29450
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29451
f_int2 = CAST(f_char1 AS SIGNED INT),
29452
f_charbig = CONCAT('===',f_char1,'===');
29453
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29455
SET new.f_int1 = @my_max1 + @counter,
29456
new.f_int2 = @my_min2 - @counter,
29457
new.f_charbig = '####updated per insert trigger####';
29458
SET @counter = @counter + 1;
29461
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29462
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29463
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29464
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29465
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29467
DROP TRIGGER trg_3;
29469
# check trigger-11 success: 1
29471
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29472
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29473
AND f_charbig = '####updated per insert trigger####';
29474
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29476
SET new.f_int1 = @my_max1 + @counter,
29477
new.f_int2 = @my_min2 - @counter,
29478
new.f_charbig = '####updated per insert trigger####';
29479
SET @counter = @counter + 1;
29482
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29483
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29484
SELECT CAST(f_int1 AS CHAR),
29485
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29486
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29488
DROP TRIGGER trg_3;
29490
# check trigger-12 success: 1
29492
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29493
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29494
AND f_charbig = '####updated per insert trigger####';
29496
Table Op Msg_type Msg_text
29497
test.t1 analyze note The storage engine for the table doesn't support analyze
29498
CHECK TABLE t1 EXTENDED;
29499
Table Op Msg_type Msg_text
29500
test.t1 check note The storage engine for the table doesn't support check
29501
CHECKSUM TABLE t1 EXTENDED;
29503
test.t1 <some_value>
29505
Table Op Msg_type Msg_text
29506
test.t1 optimize note The storage engine for the table doesn't support optimize
29507
# check layout success: 1
29508
REPAIR TABLE t1 EXTENDED;
29509
Table Op Msg_type Msg_text
29510
test.t1 repair note The storage engine for the table doesn't support repair
29511
# check layout success: 1
29514
# check TRUNCATE success: 1
29515
# check layout success: 1
29516
# End usability test (inc/partition_check.inc)
29523
f_charbig VARCHAR(1000)
29524
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
29526
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
29527
(PARTITION part_3 VALUES IN (-3),
29528
PARTITION part_2 VALUES IN (-2),
29529
PARTITION part_1 VALUES IN (-1),
29530
PARTITION part_N VALUES IN (NULL),
29531
PARTITION part0 VALUES IN (0),
29532
PARTITION part1 VALUES IN (1),
29533
PARTITION part2 VALUES IN (2),
29534
PARTITION part3 VALUES IN (3));
29535
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29536
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29537
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29538
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
29539
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29540
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29541
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29542
# Start usability test (inc/partition_check.inc)
29544
SHOW CREATE TABLE t1;
29546
t1 CREATE TABLE `t1` (
29547
`f_int1` int(11) DEFAULT NULL,
29548
`f_int2` int(11) DEFAULT NULL,
29549
`f_char1` char(20) DEFAULT NULL,
29550
`f_char2` char(20) DEFAULT NULL,
29551
`f_charbig` varchar(1000) DEFAULT NULL
29552
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,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) */
29555
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYD
29556
$MYSQLTEST_VARDIR/master-data/test/t1#P#part0.MYI
29557
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYD
29558
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1.MYI
29559
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYD
29560
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2.MYI
29561
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYD
29562
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3.MYI
29563
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYD
29564
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_1.MYI
29565
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYD
29566
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_2.MYI
29567
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYD
29568
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_3.MYI
29569
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYD
29570
$MYSQLTEST_VARDIR/master-data/test/t1#P#part_N.MYI
29571
$MYSQLTEST_VARDIR/master-data/test/t1.frm
29572
$MYSQLTEST_VARDIR/master-data/test/t1.par
29574
# check prerequisites-1 success: 1
29575
# check COUNT(*) success: 1
29576
# check MIN/MAX(f_int1) success: 1
29577
# check MIN/MAX(f_int2) success: 1
29578
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29579
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29580
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29581
WHERE f_int1 IN (2,3);
29582
# check prerequisites-3 success: 1
29583
DELETE FROM t1 WHERE f_charbig = 'delete me';
29584
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
29585
# check read via f_int1 success: 1
29586
# check read via f_int2 success: 1
29588
# check multiple-1 success: 1
29589
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29591
# check multiple-2 success: 1
29592
INSERT INTO t1 SELECT * FROM t0_template
29593
WHERE MOD(f_int1,3) = 0;
29595
# check multiple-3 success: 1
29596
UPDATE t1 SET f_int1 = f_int1 + @max_row
29597
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29598
AND @max_row_div2 + @max_row_div4;
29600
# check multiple-4 success: 1
29602
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29603
AND @max_row_div2 + @max_row_div4 + @max_row;
29605
# check multiple-5 success: 1
29606
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29608
SET f_int1 = @cur_value , f_int2 = @cur_value,
29609
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29610
f_charbig = '#SINGLE#';
29612
# check single-1 success: 1
29613
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29615
SET f_int1 = @cur_value , f_int2 = @cur_value,
29616
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29617
f_charbig = '#SINGLE#';
29619
# check single-2 success: 1
29620
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29621
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29622
UPDATE t1 SET f_int1 = @cur_value2
29623
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29625
# check single-3 success: 1
29626
SET @cur_value1= -1;
29627
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29628
UPDATE t1 SET f_int1 = @cur_value1
29629
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29631
# check single-4 success: 1
29632
SELECT MAX(f_int1) INTO @cur_value FROM t1;
29633
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29635
# check single-5 success: 1
29636
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29638
# check single-6 success: 1
29639
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29641
# check single-7 success: 1
29642
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
29643
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29644
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29645
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29646
f_charbig = '#NULL#';
29648
SET f_int1 = NULL , f_int2 = -@max_row,
29649
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29650
f_charbig = '#NULL#';
29651
# check null success: 1
29653
# check null-1 success: 1
29654
UPDATE t1 SET f_int1 = -@max_row
29655
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29656
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29658
# check null-2 success: 1
29659
UPDATE t1 SET f_int1 = NULL
29660
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29661
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29663
# check null-3 success: 1
29665
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29666
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29668
# check null-4 success: 1
29670
WHERE f_int1 = 0 AND f_int2 = 0
29671
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29672
AND f_charbig = '#NULL#';
29674
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29675
SELECT f_int1, f_int1, '', '', 'was inserted'
29676
FROM t0_template source_tab
29677
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29679
# check transactions-1 success: 1
29682
# check transactions-2 success: 1
29685
# check transactions-3 success: 1
29686
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29690
# check transactions-4 success: 1
29691
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29692
SELECT f_int1, f_int1, '', '', 'was inserted'
29693
FROM t0_template source_tab
29694
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29696
# check transactions-5 success: 1
29699
Warning 1196 Some non-transactional changed tables couldn't be rolled back
29701
# check transactions-6 success: 1
29702
# INFO: Storage engine used for t1 seems to be not transactional.
29705
# check transactions-7 success: 1
29706
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29708
SET @@session.sql_mode = 'traditional';
29709
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29710
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29711
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29712
'', '', 'was inserted' FROM t0_template
29713
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29714
ERROR 22012: Division by 0
29717
# check transactions-8 success: 1
29718
# INFO: Storage engine used for t1 seems to be unable to revert
29719
# changes made by the failing statement.
29720
SET @@session.sql_mode = '';
29722
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29724
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29726
# check special-1 success: 1
29727
UPDATE t1 SET f_charbig = '';
29729
# check special-2 success: 1
29730
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29731
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29732
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29733
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29734
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29735
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29736
'just inserted' FROM t0_template
29737
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29738
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29740
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29741
f_charbig = 'updated by trigger'
29742
WHERE f_int1 = new.f_int1;
29744
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29745
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29746
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29748
# check trigger-1 success: 1
29749
DROP TRIGGER trg_1;
29750
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29751
f_int2 = CAST(f_char1 AS SIGNED INT),
29752
f_charbig = 'just inserted'
29753
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29755
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29756
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29757
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29758
'just inserted' FROM t0_template
29759
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29760
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29762
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29763
f_charbig = 'updated by trigger'
29764
WHERE f_int1 = new.f_int1;
29766
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29767
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29768
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29770
# check trigger-2 success: 1
29771
DROP TRIGGER trg_1;
29772
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29773
f_int2 = CAST(f_char1 AS SIGNED INT),
29774
f_charbig = 'just inserted'
29775
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29777
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29778
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29779
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29780
'just inserted' FROM t0_template
29781
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29782
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29784
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29785
f_charbig = 'updated by trigger'
29786
WHERE f_int1 = new.f_int1;
29788
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29789
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29791
# check trigger-3 success: 1
29792
DROP TRIGGER trg_1;
29793
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29794
f_int2 = CAST(f_char1 AS SIGNED INT),
29795
f_charbig = 'just inserted'
29796
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29798
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29799
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29800
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29801
'just inserted' FROM t0_template
29802
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29803
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29805
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29806
f_charbig = 'updated by trigger'
29807
WHERE f_int1 = - old.f_int1;
29809
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29810
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29812
# check trigger-4 success: 1
29813
DROP TRIGGER trg_1;
29814
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29815
f_int2 = CAST(f_char1 AS SIGNED INT),
29816
f_charbig = 'just inserted'
29817
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29819
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29820
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29821
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29822
'just inserted' FROM t0_template
29823
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29824
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29826
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29827
f_charbig = 'updated by trigger'
29828
WHERE f_int1 = new.f_int1;
29830
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29831
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29833
# check trigger-5 success: 1
29834
DROP TRIGGER trg_1;
29835
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29836
f_int2 = CAST(f_char1 AS SIGNED INT),
29837
f_charbig = 'just inserted'
29838
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29840
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29841
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29842
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29843
'just inserted' FROM t0_template
29844
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29845
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29847
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29848
f_charbig = 'updated by trigger'
29849
WHERE f_int1 = - old.f_int1;
29851
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29852
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29854
# check trigger-6 success: 1
29855
DROP TRIGGER trg_1;
29856
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29857
f_int2 = CAST(f_char1 AS SIGNED INT),
29858
f_charbig = 'just inserted'
29859
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29861
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29862
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29863
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29864
'just inserted' FROM t0_template
29865
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29866
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29868
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29869
f_charbig = 'updated by trigger'
29870
WHERE f_int1 = - old.f_int1;
29873
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29875
# check trigger-7 success: 1
29876
DROP TRIGGER trg_1;
29877
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29878
f_int2 = CAST(f_char1 AS SIGNED INT),
29879
f_charbig = 'just inserted'
29880
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29882
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29883
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29884
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29885
'just inserted' FROM t0_template
29886
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29887
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29889
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29890
f_charbig = 'updated by trigger'
29891
WHERE f_int1 = - old.f_int1;
29894
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29896
# check trigger-8 success: 1
29897
DROP TRIGGER trg_1;
29898
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29899
f_int2 = CAST(f_char1 AS SIGNED INT),
29900
f_charbig = 'just inserted'
29901
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29903
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29905
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29906
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29908
SET new.f_int1 = old.f_int1 + @max_row,
29909
new.f_int2 = old.f_int2 - @max_row,
29910
new.f_charbig = '####updated per update trigger####';
29913
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29914
f_charbig = '####updated per update statement itself####';
29916
# check trigger-9 success: 1
29917
DROP TRIGGER trg_2;
29918
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29919
f_int2 = CAST(f_char1 AS SIGNED INT),
29920
f_charbig = CONCAT('===',f_char1,'===');
29921
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29923
SET new.f_int1 = new.f_int1 + @max_row,
29924
new.f_int2 = new.f_int2 - @max_row,
29925
new.f_charbig = '####updated per update trigger####';
29928
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29929
f_charbig = '####updated per update statement itself####';
29931
# check trigger-10 success: 1
29932
DROP TRIGGER trg_2;
29933
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29934
f_int2 = CAST(f_char1 AS SIGNED INT),
29935
f_charbig = CONCAT('===',f_char1,'===');
29936
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29938
SET new.f_int1 = @my_max1 + @counter,
29939
new.f_int2 = @my_min2 - @counter,
29940
new.f_charbig = '####updated per insert trigger####';
29941
SET @counter = @counter + 1;
29944
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29945
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29946
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29947
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29948
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29950
DROP TRIGGER trg_3;
29952
# check trigger-11 success: 1
29954
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29955
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29956
AND f_charbig = '####updated per insert trigger####';
29957
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29959
SET new.f_int1 = @my_max1 + @counter,
29960
new.f_int2 = @my_min2 - @counter,
29961
new.f_charbig = '####updated per insert trigger####';
29962
SET @counter = @counter + 1;
29965
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29966
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29967
SELECT CAST(f_int1 AS CHAR),
29968
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29969
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29971
DROP TRIGGER trg_3;
29973
# check trigger-12 success: 1
29975
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29976
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29977
AND f_charbig = '####updated per insert trigger####';
29979
Table Op Msg_type Msg_text
29980
test.t1 analyze note The storage engine for the table doesn't support analyze
29981
CHECK TABLE t1 EXTENDED;
29982
Table Op Msg_type Msg_text
29983
test.t1 check note The storage engine for the table doesn't support check
29984
CHECKSUM TABLE t1 EXTENDED;
29986
test.t1 <some_value>
29988
Table Op Msg_type Msg_text
29989
test.t1 optimize note The storage engine for the table doesn't support optimize
29990
# check layout success: 1
29991
REPAIR TABLE t1 EXTENDED;
29992
Table Op Msg_type Msg_text
29993
test.t1 repair note The storage engine for the table doesn't support repair
29994
# check layout success: 1
29997
# check TRUNCATE success: 1
29998
# check layout success: 1
29999
# End usability test (inc/partition_check.inc)
30006
f_charbig VARCHAR(1000)
30007
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
30009
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
30010
(PARTITION parta VALUES LESS THAN (0),
30011
PARTITION partb VALUES LESS THAN (5),
30012
PARTITION partc VALUES LESS THAN (10),
30013
PARTITION partd VALUES LESS THAN (10 + 5),
30014
PARTITION parte VALUES LESS THAN (20),
30015
PARTITION partf VALUES LESS THAN (2147483646));
30016
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30017
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30018
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30019
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
30020
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30021
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30022
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30023
# Start usability test (inc/partition_check.inc)
30025
SHOW CREATE TABLE t1;
30027
t1 CREATE TABLE `t1` (
30028
`f_int1` int(11) DEFAULT NULL,
30029
`f_int2` int(11) DEFAULT NULL,
30030
`f_char1` char(20) DEFAULT NULL,
30031
`f_char2` char(20) DEFAULT NULL,
30032
`f_charbig` varchar(1000) DEFAULT NULL
30033
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 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 (15) ENGINE = MyISAM, PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
30036
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYD
30037
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta.MYI
30038
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYD
30039
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb.MYI
30040
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYD
30041
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc.MYI
30042
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYD
30043
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd.MYI
30044
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYD
30045
$MYSQLTEST_VARDIR/master-data/test/t1#P#parte.MYI
30046
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYD
30047
$MYSQLTEST_VARDIR/master-data/test/t1#P#partf.MYI
30048
$MYSQLTEST_VARDIR/master-data/test/t1.frm
30049
$MYSQLTEST_VARDIR/master-data/test/t1.par
30051
# check prerequisites-1 success: 1
30052
# check COUNT(*) success: 1
30053
# check MIN/MAX(f_int1) success: 1
30054
# check MIN/MAX(f_int2) success: 1
30055
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30056
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30057
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30058
WHERE f_int1 IN (2,3);
30059
# check prerequisites-3 success: 1
30060
DELETE FROM t1 WHERE f_charbig = 'delete me';
30061
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
30062
# check read via f_int1 success: 1
30063
# check read via f_int2 success: 1
30065
# check multiple-1 success: 1
30066
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30068
# check multiple-2 success: 1
30069
INSERT INTO t1 SELECT * FROM t0_template
30070
WHERE MOD(f_int1,3) = 0;
30072
# check multiple-3 success: 1
30073
UPDATE t1 SET f_int1 = f_int1 + @max_row
30074
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30075
AND @max_row_div2 + @max_row_div4;
30077
# check multiple-4 success: 1
30079
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30080
AND @max_row_div2 + @max_row_div4 + @max_row;
30082
# check multiple-5 success: 1
30083
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30085
SET f_int1 = @cur_value , f_int2 = @cur_value,
30086
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30087
f_charbig = '#SINGLE#';
30089
# check single-1 success: 1
30090
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30092
SET f_int1 = @cur_value , f_int2 = @cur_value,
30093
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30094
f_charbig = '#SINGLE#';
30096
# check single-2 success: 1
30097
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30098
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30099
UPDATE t1 SET f_int1 = @cur_value2
30100
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30102
# check single-3 success: 1
30103
SET @cur_value1= -1;
30104
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30105
UPDATE t1 SET f_int1 = @cur_value1
30106
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30108
# check single-4 success: 1
30109
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30110
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30112
# check single-5 success: 1
30113
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30115
# check single-6 success: 1
30116
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30117
ERROR HY000: Table has no partition for value 2147483647
30118
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30119
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30120
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30121
f_charbig = '#NULL#';
30123
SET f_int1 = NULL , f_int2 = -@max_row,
30124
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30125
f_charbig = '#NULL#';
30126
# check null success: 1
30128
# check null-1 success: 1
30129
UPDATE t1 SET f_int1 = -@max_row
30130
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30131
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30133
# check null-2 success: 1
30134
UPDATE t1 SET f_int1 = NULL
30135
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30136
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30138
# check null-3 success: 1
30140
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30141
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30143
# check null-4 success: 1
30145
WHERE f_int1 = 0 AND f_int2 = 0
30146
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30147
AND f_charbig = '#NULL#';
30149
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30150
SELECT f_int1, f_int1, '', '', 'was inserted'
30151
FROM t0_template source_tab
30152
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30154
# check transactions-1 success: 1
30157
# check transactions-2 success: 1
30160
# check transactions-3 success: 1
30161
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30165
# check transactions-4 success: 1
30166
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30167
SELECT f_int1, f_int1, '', '', 'was inserted'
30168
FROM t0_template source_tab
30169
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30171
# check transactions-5 success: 1
30174
Warning 1196 Some non-transactional changed tables couldn't be rolled back
30176
# check transactions-6 success: 1
30177
# INFO: Storage engine used for t1 seems to be not transactional.
30180
# check transactions-7 success: 1
30181
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30183
SET @@session.sql_mode = 'traditional';
30184
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30185
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30186
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30187
'', '', 'was inserted' FROM t0_template
30188
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30189
ERROR 22012: Division by 0
30192
# check transactions-8 success: 1
30193
# INFO: Storage engine used for t1 seems to be unable to revert
30194
# changes made by the failing statement.
30195
SET @@session.sql_mode = '';
30197
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30199
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30201
# check special-1 success: 1
30202
UPDATE t1 SET f_charbig = '';
30204
# check special-2 success: 1
30205
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30206
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30207
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30208
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30209
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30210
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30211
'just inserted' FROM t0_template
30212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30213
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30215
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30216
f_charbig = 'updated by trigger'
30217
WHERE f_int1 = new.f_int1;
30219
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30220
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30221
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30223
# check trigger-1 success: 1
30224
DROP TRIGGER trg_1;
30225
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30226
f_int2 = CAST(f_char1 AS SIGNED INT),
30227
f_charbig = 'just inserted'
30228
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30230
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30231
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30232
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30233
'just inserted' FROM t0_template
30234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30235
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30237
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30238
f_charbig = 'updated by trigger'
30239
WHERE f_int1 = new.f_int1;
30241
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30242
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30243
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30245
# check trigger-2 success: 1
30246
DROP TRIGGER trg_1;
30247
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30248
f_int2 = CAST(f_char1 AS SIGNED INT),
30249
f_charbig = 'just inserted'
30250
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30252
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30254
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30255
'just inserted' FROM t0_template
30256
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30257
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30259
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30260
f_charbig = 'updated by trigger'
30261
WHERE f_int1 = new.f_int1;
30263
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30264
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30266
# check trigger-3 success: 1
30267
DROP TRIGGER trg_1;
30268
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30269
f_int2 = CAST(f_char1 AS SIGNED INT),
30270
f_charbig = 'just inserted'
30271
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30273
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30274
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30275
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30276
'just inserted' FROM t0_template
30277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30278
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30280
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30281
f_charbig = 'updated by trigger'
30282
WHERE f_int1 = - old.f_int1;
30284
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30285
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30287
# check trigger-4 success: 1
30288
DROP TRIGGER trg_1;
30289
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30290
f_int2 = CAST(f_char1 AS SIGNED INT),
30291
f_charbig = 'just inserted'
30292
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30294
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30295
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30296
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30297
'just inserted' FROM t0_template
30298
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30299
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30301
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30302
f_charbig = 'updated by trigger'
30303
WHERE f_int1 = new.f_int1;
30305
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30306
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30308
# check trigger-5 success: 1
30309
DROP TRIGGER trg_1;
30310
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30311
f_int2 = CAST(f_char1 AS SIGNED INT),
30312
f_charbig = 'just inserted'
30313
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30315
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30316
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30317
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30318
'just inserted' FROM t0_template
30319
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30320
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30322
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30323
f_charbig = 'updated by trigger'
30324
WHERE f_int1 = - old.f_int1;
30326
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30327
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30329
# check trigger-6 success: 1
30330
DROP TRIGGER trg_1;
30331
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30332
f_int2 = CAST(f_char1 AS SIGNED INT),
30333
f_charbig = 'just inserted'
30334
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30336
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30337
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30338
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30339
'just inserted' FROM t0_template
30340
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30341
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30343
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30344
f_charbig = 'updated by trigger'
30345
WHERE f_int1 = - old.f_int1;
30348
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30350
# check trigger-7 success: 1
30351
DROP TRIGGER trg_1;
30352
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30353
f_int2 = CAST(f_char1 AS SIGNED INT),
30354
f_charbig = 'just inserted'
30355
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30357
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30358
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30359
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30360
'just inserted' FROM t0_template
30361
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30362
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30364
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30365
f_charbig = 'updated by trigger'
30366
WHERE f_int1 = - old.f_int1;
30369
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30371
# check trigger-8 success: 1
30372
DROP TRIGGER trg_1;
30373
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30374
f_int2 = CAST(f_char1 AS SIGNED INT),
30375
f_charbig = 'just inserted'
30376
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30378
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30381
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30383
SET new.f_int1 = old.f_int1 + @max_row,
30384
new.f_int2 = old.f_int2 - @max_row,
30385
new.f_charbig = '####updated per update trigger####';
30388
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30389
f_charbig = '####updated per update statement itself####';
30391
# check trigger-9 success: 1
30392
DROP TRIGGER trg_2;
30393
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30394
f_int2 = CAST(f_char1 AS SIGNED INT),
30395
f_charbig = CONCAT('===',f_char1,'===');
30396
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30398
SET new.f_int1 = new.f_int1 + @max_row,
30399
new.f_int2 = new.f_int2 - @max_row,
30400
new.f_charbig = '####updated per update trigger####';
30403
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30404
f_charbig = '####updated per update statement itself####';
30406
# check trigger-10 success: 1
30407
DROP TRIGGER trg_2;
30408
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30409
f_int2 = CAST(f_char1 AS SIGNED INT),
30410
f_charbig = CONCAT('===',f_char1,'===');
30411
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30413
SET new.f_int1 = @my_max1 + @counter,
30414
new.f_int2 = @my_min2 - @counter,
30415
new.f_charbig = '####updated per insert trigger####';
30416
SET @counter = @counter + 1;
30419
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30420
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30421
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30422
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30423
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30425
DROP TRIGGER trg_3;
30427
# check trigger-11 success: 1
30429
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30430
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30431
AND f_charbig = '####updated per insert trigger####';
30432
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30434
SET new.f_int1 = @my_max1 + @counter,
30435
new.f_int2 = @my_min2 - @counter,
30436
new.f_charbig = '####updated per insert trigger####';
30437
SET @counter = @counter + 1;
30440
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30441
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30442
SELECT CAST(f_int1 AS CHAR),
30443
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30444
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30446
DROP TRIGGER trg_3;
30448
# check trigger-12 success: 1
30450
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30451
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30452
AND f_charbig = '####updated per insert trigger####';
30454
Table Op Msg_type Msg_text
30455
test.t1 analyze note The storage engine for the table doesn't support analyze
30456
CHECK TABLE t1 EXTENDED;
30457
Table Op Msg_type Msg_text
30458
test.t1 check note The storage engine for the table doesn't support check
30459
CHECKSUM TABLE t1 EXTENDED;
30461
test.t1 <some_value>
30463
Table Op Msg_type Msg_text
30464
test.t1 optimize note The storage engine for the table doesn't support optimize
30465
# check layout success: 1
30466
REPAIR TABLE t1 EXTENDED;
30467
Table Op Msg_type Msg_text
30468
test.t1 repair note The storage engine for the table doesn't support repair
30469
# check layout success: 1
30472
# check TRUNCATE success: 1
30473
# check layout success: 1
30474
# End usability test (inc/partition_check.inc)
30481
f_charbig VARCHAR(1000)
30482
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
30484
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
30485
(PARTITION parta VALUES LESS THAN (0),
30486
PARTITION partb VALUES LESS THAN (5),
30487
PARTITION partc VALUES LESS THAN (10),
30488
PARTITION partd VALUES LESS THAN (2147483646));
30489
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30490
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30491
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30492
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
30493
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30494
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30495
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30496
# Start usability test (inc/partition_check.inc)
30498
SHOW CREATE TABLE t1;
30500
t1 CREATE TABLE `t1` (
30501
`f_int1` int(11) DEFAULT NULL,
30502
`f_int2` int(11) DEFAULT NULL,
30503
`f_char1` char(20) DEFAULT NULL,
30504
`f_char2` char(20) DEFAULT NULL,
30505
`f_charbig` varchar(1000) DEFAULT NULL
30506
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) 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) */
30509
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYD
30510
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp0.MYI
30511
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYD
30512
$MYSQLTEST_VARDIR/master-data/test/t1#P#parta#SP#partasp1.MYI
30513
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYD
30514
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp0.MYI
30515
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYD
30516
$MYSQLTEST_VARDIR/master-data/test/t1#P#partb#SP#partbsp1.MYI
30517
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYD
30518
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp0.MYI
30519
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYD
30520
$MYSQLTEST_VARDIR/master-data/test/t1#P#partc#SP#partcsp1.MYI
30521
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYD
30522
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp0.MYI
30523
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYD
30524
$MYSQLTEST_VARDIR/master-data/test/t1#P#partd#SP#partdsp1.MYI
30525
$MYSQLTEST_VARDIR/master-data/test/t1.frm
30526
$MYSQLTEST_VARDIR/master-data/test/t1.par
30528
# check prerequisites-1 success: 1
30529
# check COUNT(*) success: 1
30530
# check MIN/MAX(f_int1) success: 1
30531
# check MIN/MAX(f_int2) success: 1
30532
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30533
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30534
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30535
WHERE f_int1 IN (2,3);
30536
# check prerequisites-3 success: 1
30537
DELETE FROM t1 WHERE f_charbig = 'delete me';
30538
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
30539
# check read via f_int1 success: 1
30540
# check read via f_int2 success: 1
30542
# check multiple-1 success: 1
30543
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30545
# check multiple-2 success: 1
30546
INSERT INTO t1 SELECT * FROM t0_template
30547
WHERE MOD(f_int1,3) = 0;
30549
# check multiple-3 success: 1
30550
UPDATE t1 SET f_int1 = f_int1 + @max_row
30551
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30552
AND @max_row_div2 + @max_row_div4;
30554
# check multiple-4 success: 1
30556
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30557
AND @max_row_div2 + @max_row_div4 + @max_row;
30559
# check multiple-5 success: 1
30560
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30562
SET f_int1 = @cur_value , f_int2 = @cur_value,
30563
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30564
f_charbig = '#SINGLE#';
30566
# check single-1 success: 1
30567
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30569
SET f_int1 = @cur_value , f_int2 = @cur_value,
30570
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30571
f_charbig = '#SINGLE#';
30573
# check single-2 success: 1
30574
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30575
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30576
UPDATE t1 SET f_int1 = @cur_value2
30577
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30579
# check single-3 success: 1
30580
SET @cur_value1= -1;
30581
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30582
UPDATE t1 SET f_int1 = @cur_value1
30583
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30585
# check single-4 success: 1
30586
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30587
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30589
# check single-5 success: 1
30590
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30592
# check single-6 success: 1
30593
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30594
ERROR HY000: Table has no partition for value 2147483647
30595
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30596
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30597
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30598
f_charbig = '#NULL#';
30600
SET f_int1 = NULL , f_int2 = -@max_row,
30601
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30602
f_charbig = '#NULL#';
30603
# check null success: 1
30605
# check null-1 success: 1
30606
UPDATE t1 SET f_int1 = -@max_row
30607
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30608
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30610
# check null-2 success: 1
30611
UPDATE t1 SET f_int1 = NULL
30612
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30613
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30615
# check null-3 success: 1
30617
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30618
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30620
# check null-4 success: 1
30622
WHERE f_int1 = 0 AND f_int2 = 0
30623
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30624
AND f_charbig = '#NULL#';
30626
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30627
SELECT f_int1, f_int1, '', '', 'was inserted'
30628
FROM t0_template source_tab
30629
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30631
# check transactions-1 success: 1
30634
# check transactions-2 success: 1
30637
# check transactions-3 success: 1
30638
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30642
# check transactions-4 success: 1
30643
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30644
SELECT f_int1, f_int1, '', '', 'was inserted'
30645
FROM t0_template source_tab
30646
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30648
# check transactions-5 success: 1
30651
Warning 1196 Some non-transactional changed tables couldn't be rolled back
30653
# check transactions-6 success: 1
30654
# INFO: Storage engine used for t1 seems to be not transactional.
30657
# check transactions-7 success: 1
30658
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30660
SET @@session.sql_mode = 'traditional';
30661
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30662
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30663
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30664
'', '', 'was inserted' FROM t0_template
30665
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30666
ERROR 22012: Division by 0
30669
# check transactions-8 success: 1
30670
# INFO: Storage engine used for t1 seems to be unable to revert
30671
# changes made by the failing statement.
30672
SET @@session.sql_mode = '';
30674
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30676
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30678
# check special-1 success: 1
30679
UPDATE t1 SET f_charbig = '';
30681
# check special-2 success: 1
30682
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30683
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30684
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30685
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30686
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30687
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30688
'just inserted' FROM t0_template
30689
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30690
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30692
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30693
f_charbig = 'updated by trigger'
30694
WHERE f_int1 = new.f_int1;
30696
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30697
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30698
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30700
# check trigger-1 success: 1
30701
DROP TRIGGER trg_1;
30702
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30703
f_int2 = CAST(f_char1 AS SIGNED INT),
30704
f_charbig = 'just inserted'
30705
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30707
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30708
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30709
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30710
'just inserted' FROM t0_template
30711
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30712
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30714
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30715
f_charbig = 'updated by trigger'
30716
WHERE f_int1 = new.f_int1;
30718
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30719
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30720
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30722
# check trigger-2 success: 1
30723
DROP TRIGGER trg_1;
30724
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30725
f_int2 = CAST(f_char1 AS SIGNED INT),
30726
f_charbig = 'just inserted'
30727
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30729
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30730
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30731
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30732
'just inserted' FROM t0_template
30733
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30734
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30736
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30737
f_charbig = 'updated by trigger'
30738
WHERE f_int1 = new.f_int1;
30740
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30741
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30743
# check trigger-3 success: 1
30744
DROP TRIGGER trg_1;
30745
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30746
f_int2 = CAST(f_char1 AS SIGNED INT),
30747
f_charbig = 'just inserted'
30748
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30750
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30751
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30752
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30753
'just inserted' FROM t0_template
30754
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30755
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30757
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30758
f_charbig = 'updated by trigger'
30759
WHERE f_int1 = - old.f_int1;
30761
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30762
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30764
# check trigger-4 success: 1
30765
DROP TRIGGER trg_1;
30766
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30767
f_int2 = CAST(f_char1 AS SIGNED INT),
30768
f_charbig = 'just inserted'
30769
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30771
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30772
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30773
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30774
'just inserted' FROM t0_template
30775
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30776
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30778
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30779
f_charbig = 'updated by trigger'
30780
WHERE f_int1 = new.f_int1;
30782
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30783
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30785
# check trigger-5 success: 1
30786
DROP TRIGGER trg_1;
30787
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30788
f_int2 = CAST(f_char1 AS SIGNED INT),
30789
f_charbig = 'just inserted'
30790
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30792
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30793
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30794
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30795
'just inserted' FROM t0_template
30796
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30797
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30799
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30800
f_charbig = 'updated by trigger'
30801
WHERE f_int1 = - old.f_int1;
30803
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30804
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30806
# check trigger-6 success: 1
30807
DROP TRIGGER trg_1;
30808
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30809
f_int2 = CAST(f_char1 AS SIGNED INT),
30810
f_charbig = 'just inserted'
30811
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30813
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30814
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30815
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30816
'just inserted' FROM t0_template
30817
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30818
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30820
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30821
f_charbig = 'updated by trigger'
30822
WHERE f_int1 = - old.f_int1;
30825
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30827
# check trigger-7 success: 1
30828
DROP TRIGGER trg_1;
30829
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30830
f_int2 = CAST(f_char1 AS SIGNED INT),
30831
f_charbig = 'just inserted'
30832
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30834
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30835
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30836
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30837
'just inserted' FROM t0_template
30838
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30839
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30841
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30842
f_charbig = 'updated by trigger'
30843
WHERE f_int1 = - old.f_int1;
30846
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30848
# check trigger-8 success: 1
30849
DROP TRIGGER trg_1;
30850
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30851
f_int2 = CAST(f_char1 AS SIGNED INT),
30852
f_charbig = 'just inserted'
30853
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30855
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30857
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30858
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30860
SET new.f_int1 = old.f_int1 + @max_row,
30861
new.f_int2 = old.f_int2 - @max_row,
30862
new.f_charbig = '####updated per update trigger####';
30865
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30866
f_charbig = '####updated per update statement itself####';
30868
# check trigger-9 success: 1
30869
DROP TRIGGER trg_2;
30870
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30871
f_int2 = CAST(f_char1 AS SIGNED INT),
30872
f_charbig = CONCAT('===',f_char1,'===');
30873
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30875
SET new.f_int1 = new.f_int1 + @max_row,
30876
new.f_int2 = new.f_int2 - @max_row,
30877
new.f_charbig = '####updated per update trigger####';
30880
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30881
f_charbig = '####updated per update statement itself####';
30883
# check trigger-10 success: 1
30884
DROP TRIGGER trg_2;
30885
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30886
f_int2 = CAST(f_char1 AS SIGNED INT),
30887
f_charbig = CONCAT('===',f_char1,'===');
30888
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30890
SET new.f_int1 = @my_max1 + @counter,
30891
new.f_int2 = @my_min2 - @counter,
30892
new.f_charbig = '####updated per insert trigger####';
30893
SET @counter = @counter + 1;
30896
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30897
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30898
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30899
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30900
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30902
DROP TRIGGER trg_3;
30904
# check trigger-11 success: 1
30906
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30907
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30908
AND f_charbig = '####updated per insert trigger####';
30909
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30911
SET new.f_int1 = @my_max1 + @counter,
30912
new.f_int2 = @my_min2 - @counter,
30913
new.f_charbig = '####updated per insert trigger####';
30914
SET @counter = @counter + 1;
30917
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30918
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30919
SELECT CAST(f_int1 AS CHAR),
30920
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30921
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30923
DROP TRIGGER trg_3;
30925
# check trigger-12 success: 1
30927
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30928
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30929
AND f_charbig = '####updated per insert trigger####';
30931
Table Op Msg_type Msg_text
30932
test.t1 analyze note The storage engine for the table doesn't support analyze
30933
CHECK TABLE t1 EXTENDED;
30934
Table Op Msg_type Msg_text
30935
test.t1 check note The storage engine for the table doesn't support check
30936
CHECKSUM TABLE t1 EXTENDED;
30938
test.t1 <some_value>
30940
Table Op Msg_type Msg_text
30941
test.t1 optimize note The storage engine for the table doesn't support optimize
30942
# check layout success: 1
30943
REPAIR TABLE t1 EXTENDED;
30944
Table Op Msg_type Msg_text
30945
test.t1 repair note The storage engine for the table doesn't support repair
30946
# check layout success: 1
30949
# check TRUNCATE success: 1
30950
# check layout success: 1
30951
# End usability test (inc/partition_check.inc)
30958
f_charbig VARCHAR(1000)
30959
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
30961
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
30962
(PARTITION part1 VALUES LESS THAN (0)
30963
(SUBPARTITION subpart11, SUBPARTITION subpart12),
30964
PARTITION part2 VALUES LESS THAN (5)
30965
(SUBPARTITION subpart21, SUBPARTITION subpart22),
30966
PARTITION part3 VALUES LESS THAN (10)
30967
(SUBPARTITION subpart31, SUBPARTITION subpart32),
30968
PARTITION part4 VALUES LESS THAN (2147483646)
30969
(SUBPARTITION subpart41, SUBPARTITION subpart42));
30970
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30971
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30972
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30973
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
30974
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30975
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30976
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30977
# Start usability test (inc/partition_check.inc)
30979
SHOW CREATE TABLE t1;
30981
t1 CREATE TABLE `t1` (
30982
`f_int1` int(11) DEFAULT NULL,
30983
`f_int2` int(11) DEFAULT NULL,
30984
`f_char1` char(20) DEFAULT NULL,
30985
`f_char2` char(20) DEFAULT NULL,
30986
`f_charbig` varchar(1000) DEFAULT NULL
30987
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (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)) */
30990
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYD
30991
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart11.MYI
30992
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYD
30993
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#subpart12.MYI
30994
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYD
30995
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart21.MYI
30996
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYD
30997
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#subpart22.MYI
30998
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYD
30999
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart31.MYI
31000
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYD
31001
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#subpart32.MYI
31002
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYD
31003
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart41.MYI
31004
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYD
31005
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#subpart42.MYI
31006
$MYSQLTEST_VARDIR/master-data/test/t1.frm
31007
$MYSQLTEST_VARDIR/master-data/test/t1.par
31009
# check prerequisites-1 success: 1
31010
# check COUNT(*) success: 1
31011
# check MIN/MAX(f_int1) success: 1
31012
# check MIN/MAX(f_int2) success: 1
31013
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31014
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31015
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31016
WHERE f_int1 IN (2,3);
31017
# check prerequisites-3 success: 1
31018
DELETE FROM t1 WHERE f_charbig = 'delete me';
31019
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
31020
# check read via f_int1 success: 1
31021
# check read via f_int2 success: 1
31023
# check multiple-1 success: 1
31024
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31026
# check multiple-2 success: 1
31027
INSERT INTO t1 SELECT * FROM t0_template
31028
WHERE MOD(f_int1,3) = 0;
31030
# check multiple-3 success: 1
31031
UPDATE t1 SET f_int1 = f_int1 + @max_row
31032
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31033
AND @max_row_div2 + @max_row_div4;
31035
# check multiple-4 success: 1
31037
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31038
AND @max_row_div2 + @max_row_div4 + @max_row;
31040
# check multiple-5 success: 1
31041
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31043
SET f_int1 = @cur_value , f_int2 = @cur_value,
31044
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31045
f_charbig = '#SINGLE#';
31047
# check single-1 success: 1
31048
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31050
SET f_int1 = @cur_value , f_int2 = @cur_value,
31051
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31052
f_charbig = '#SINGLE#';
31054
# check single-2 success: 1
31055
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31056
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31057
UPDATE t1 SET f_int1 = @cur_value2
31058
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31060
# check single-3 success: 1
31061
SET @cur_value1= -1;
31062
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31063
UPDATE t1 SET f_int1 = @cur_value1
31064
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31066
# check single-4 success: 1
31067
SELECT MAX(f_int1) INTO @cur_value FROM t1;
31068
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31070
# check single-5 success: 1
31071
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31073
# check single-6 success: 1
31074
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31075
ERROR HY000: Table has no partition for value 2147483647
31076
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31077
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31078
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31079
f_charbig = '#NULL#';
31081
SET f_int1 = NULL , f_int2 = -@max_row,
31082
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31083
f_charbig = '#NULL#';
31084
# check null success: 1
31086
# check null-1 success: 1
31087
UPDATE t1 SET f_int1 = -@max_row
31088
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31089
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31091
# check null-2 success: 1
31092
UPDATE t1 SET f_int1 = NULL
31093
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31094
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31096
# check null-3 success: 1
31098
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31099
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31101
# check null-4 success: 1
31103
WHERE f_int1 = 0 AND f_int2 = 0
31104
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31105
AND f_charbig = '#NULL#';
31107
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31108
SELECT f_int1, f_int1, '', '', 'was inserted'
31109
FROM t0_template source_tab
31110
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31112
# check transactions-1 success: 1
31115
# check transactions-2 success: 1
31118
# check transactions-3 success: 1
31119
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31123
# check transactions-4 success: 1
31124
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31125
SELECT f_int1, f_int1, '', '', 'was inserted'
31126
FROM t0_template source_tab
31127
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31129
# check transactions-5 success: 1
31132
Warning 1196 Some non-transactional changed tables couldn't be rolled back
31134
# check transactions-6 success: 1
31135
# INFO: Storage engine used for t1 seems to be not transactional.
31138
# check transactions-7 success: 1
31139
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31141
SET @@session.sql_mode = 'traditional';
31142
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31143
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31144
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31145
'', '', 'was inserted' FROM t0_template
31146
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31147
ERROR 22012: Division by 0
31150
# check transactions-8 success: 1
31151
# INFO: Storage engine used for t1 seems to be unable to revert
31152
# changes made by the failing statement.
31153
SET @@session.sql_mode = '';
31155
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31157
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31159
# check special-1 success: 1
31160
UPDATE t1 SET f_charbig = '';
31162
# check special-2 success: 1
31163
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31164
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31165
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31166
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31167
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31168
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31169
'just inserted' FROM t0_template
31170
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31171
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31173
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31174
f_charbig = 'updated by trigger'
31175
WHERE f_int1 = new.f_int1;
31177
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31178
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31179
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31181
# check trigger-1 success: 1
31182
DROP TRIGGER trg_1;
31183
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31184
f_int2 = CAST(f_char1 AS SIGNED INT),
31185
f_charbig = 'just inserted'
31186
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31188
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31189
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31190
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31191
'just inserted' FROM t0_template
31192
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31193
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31195
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31196
f_charbig = 'updated by trigger'
31197
WHERE f_int1 = new.f_int1;
31199
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31200
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31201
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31203
# check trigger-2 success: 1
31204
DROP TRIGGER trg_1;
31205
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31206
f_int2 = CAST(f_char1 AS SIGNED INT),
31207
f_charbig = 'just inserted'
31208
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31210
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31211
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31212
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31213
'just inserted' FROM t0_template
31214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31215
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31217
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31218
f_charbig = 'updated by trigger'
31219
WHERE f_int1 = new.f_int1;
31221
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31222
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31224
# check trigger-3 success: 1
31225
DROP TRIGGER trg_1;
31226
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31227
f_int2 = CAST(f_char1 AS SIGNED INT),
31228
f_charbig = 'just inserted'
31229
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31231
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31232
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31233
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31234
'just inserted' FROM t0_template
31235
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31236
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31238
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31239
f_charbig = 'updated by trigger'
31240
WHERE f_int1 = - old.f_int1;
31242
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31243
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31245
# check trigger-4 success: 1
31246
DROP TRIGGER trg_1;
31247
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31248
f_int2 = CAST(f_char1 AS SIGNED INT),
31249
f_charbig = 'just inserted'
31250
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31252
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31254
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31255
'just inserted' FROM t0_template
31256
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31257
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31259
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31260
f_charbig = 'updated by trigger'
31261
WHERE f_int1 = new.f_int1;
31263
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31264
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31266
# check trigger-5 success: 1
31267
DROP TRIGGER trg_1;
31268
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31269
f_int2 = CAST(f_char1 AS SIGNED INT),
31270
f_charbig = 'just inserted'
31271
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31273
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31274
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31275
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31276
'just inserted' FROM t0_template
31277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31278
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31280
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31281
f_charbig = 'updated by trigger'
31282
WHERE f_int1 = - old.f_int1;
31284
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31285
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31287
# check trigger-6 success: 1
31288
DROP TRIGGER trg_1;
31289
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31290
f_int2 = CAST(f_char1 AS SIGNED INT),
31291
f_charbig = 'just inserted'
31292
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31294
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31295
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31296
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31297
'just inserted' FROM t0_template
31298
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31299
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31301
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31302
f_charbig = 'updated by trigger'
31303
WHERE f_int1 = - old.f_int1;
31306
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31308
# check trigger-7 success: 1
31309
DROP TRIGGER trg_1;
31310
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31311
f_int2 = CAST(f_char1 AS SIGNED INT),
31312
f_charbig = 'just inserted'
31313
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31315
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31316
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31317
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31318
'just inserted' FROM t0_template
31319
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31320
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31322
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31323
f_charbig = 'updated by trigger'
31324
WHERE f_int1 = - old.f_int1;
31327
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31329
# check trigger-8 success: 1
31330
DROP TRIGGER trg_1;
31331
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31332
f_int2 = CAST(f_char1 AS SIGNED INT),
31333
f_charbig = 'just inserted'
31334
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31336
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31338
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31339
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31341
SET new.f_int1 = old.f_int1 + @max_row,
31342
new.f_int2 = old.f_int2 - @max_row,
31343
new.f_charbig = '####updated per update trigger####';
31346
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31347
f_charbig = '####updated per update statement itself####';
31349
# check trigger-9 success: 1
31350
DROP TRIGGER trg_2;
31351
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31352
f_int2 = CAST(f_char1 AS SIGNED INT),
31353
f_charbig = CONCAT('===',f_char1,'===');
31354
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31356
SET new.f_int1 = new.f_int1 + @max_row,
31357
new.f_int2 = new.f_int2 - @max_row,
31358
new.f_charbig = '####updated per update trigger####';
31361
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31362
f_charbig = '####updated per update statement itself####';
31364
# check trigger-10 success: 1
31365
DROP TRIGGER trg_2;
31366
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31367
f_int2 = CAST(f_char1 AS SIGNED INT),
31368
f_charbig = CONCAT('===',f_char1,'===');
31369
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31371
SET new.f_int1 = @my_max1 + @counter,
31372
new.f_int2 = @my_min2 - @counter,
31373
new.f_charbig = '####updated per insert trigger####';
31374
SET @counter = @counter + 1;
31377
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31378
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31379
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31380
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31381
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31383
DROP TRIGGER trg_3;
31385
# check trigger-11 success: 1
31387
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31388
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31389
AND f_charbig = '####updated per insert trigger####';
31390
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31392
SET new.f_int1 = @my_max1 + @counter,
31393
new.f_int2 = @my_min2 - @counter,
31394
new.f_charbig = '####updated per insert trigger####';
31395
SET @counter = @counter + 1;
31398
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31399
INSERT INTO t1 (f_char1, f_char2, f_charbig)
31400
SELECT CAST(f_int1 AS CHAR),
31401
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31402
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31404
DROP TRIGGER trg_3;
31406
# check trigger-12 success: 1
31408
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31409
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31410
AND f_charbig = '####updated per insert trigger####';
31412
Table Op Msg_type Msg_text
31413
test.t1 analyze note The storage engine for the table doesn't support analyze
31414
CHECK TABLE t1 EXTENDED;
31415
Table Op Msg_type Msg_text
31416
test.t1 check note The storage engine for the table doesn't support check
31417
CHECKSUM TABLE t1 EXTENDED;
31419
test.t1 <some_value>
31421
Table Op Msg_type Msg_text
31422
test.t1 optimize note The storage engine for the table doesn't support optimize
31423
# check layout success: 1
31424
REPAIR TABLE t1 EXTENDED;
31425
Table Op Msg_type Msg_text
31426
test.t1 repair note The storage engine for the table doesn't support repair
31427
# check layout success: 1
31430
# check TRUNCATE success: 1
31431
# check layout success: 1
31432
# End usability test (inc/partition_check.inc)
31439
f_charbig VARCHAR(1000)
31440
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
31442
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
31443
(PARTITION part1 VALUES IN (0)
31444
(SUBPARTITION sp11, SUBPARTITION sp12),
31445
PARTITION part2 VALUES IN (1)
31446
(SUBPARTITION sp21, SUBPARTITION sp22),
31447
PARTITION part3 VALUES IN (2)
31448
(SUBPARTITION sp31, SUBPARTITION sp32),
31449
PARTITION part4 VALUES IN (NULL)
31450
(SUBPARTITION sp41, SUBPARTITION sp42));
31451
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31452
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31453
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31454
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
31455
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31456
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31457
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31458
# Start usability test (inc/partition_check.inc)
31460
SHOW CREATE TABLE t1;
31462
t1 CREATE TABLE `t1` (
31463
`f_int1` int(11) DEFAULT NULL,
31464
`f_int2` int(11) DEFAULT NULL,
31465
`f_char1` char(20) DEFAULT NULL,
31466
`f_char2` char(20) DEFAULT NULL,
31467
`f_charbig` varchar(1000) DEFAULT NULL
31468
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = 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)) */
31471
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYD
31472
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp11.MYI
31473
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYD
31474
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#sp12.MYI
31475
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYD
31476
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp21.MYI
31477
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYD
31478
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#sp22.MYI
31479
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYD
31480
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp31.MYI
31481
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYD
31482
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#sp32.MYI
31483
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYD
31484
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp41.MYI
31485
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYD
31486
$MYSQLTEST_VARDIR/master-data/test/t1#P#part4#SP#sp42.MYI
31487
$MYSQLTEST_VARDIR/master-data/test/t1.frm
31488
$MYSQLTEST_VARDIR/master-data/test/t1.par
31490
# check prerequisites-1 success: 1
31491
# check COUNT(*) success: 1
31492
# check MIN/MAX(f_int1) success: 1
31493
# check MIN/MAX(f_int2) success: 1
31494
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31495
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31496
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31497
WHERE f_int1 IN (2,3);
31498
# check prerequisites-3 success: 1
31499
DELETE FROM t1 WHERE f_charbig = 'delete me';
31500
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
31501
# check read via f_int1 success: 1
31502
# check read via f_int2 success: 1
31504
# check multiple-1 success: 1
31505
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31507
# check multiple-2 success: 1
31508
INSERT INTO t1 SELECT * FROM t0_template
31509
WHERE MOD(f_int1,3) = 0;
31511
# check multiple-3 success: 1
31512
UPDATE t1 SET f_int1 = f_int1 + @max_row
31513
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31514
AND @max_row_div2 + @max_row_div4;
31516
# check multiple-4 success: 1
31518
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31519
AND @max_row_div2 + @max_row_div4 + @max_row;
31521
# check multiple-5 success: 1
31522
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31524
SET f_int1 = @cur_value , f_int2 = @cur_value,
31525
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31526
f_charbig = '#SINGLE#';
31528
# check single-1 success: 1
31529
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31531
SET f_int1 = @cur_value , f_int2 = @cur_value,
31532
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31533
f_charbig = '#SINGLE#';
31535
# check single-2 success: 1
31536
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31537
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31538
UPDATE t1 SET f_int1 = @cur_value2
31539
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31541
# check single-3 success: 1
31542
SET @cur_value1= -1;
31543
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31544
UPDATE t1 SET f_int1 = @cur_value1
31545
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31547
# check single-4 success: 1
31548
SELECT MAX(f_int1) INTO @cur_value FROM t1;
31549
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31551
# check single-5 success: 1
31552
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31554
# check single-6 success: 1
31555
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31557
# check single-7 success: 1
31558
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
31559
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31560
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31561
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31562
f_charbig = '#NULL#';
31564
SET f_int1 = NULL , f_int2 = -@max_row,
31565
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31566
f_charbig = '#NULL#';
31567
# check null success: 1
31569
# check null-1 success: 1
31570
UPDATE t1 SET f_int1 = -@max_row
31571
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31572
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31574
# check null-2 success: 1
31575
UPDATE t1 SET f_int1 = NULL
31576
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31577
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31579
# check null-3 success: 1
31581
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
31582
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
31584
# check null-4 success: 1
31586
WHERE f_int1 = 0 AND f_int2 = 0
31587
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31588
AND f_charbig = '#NULL#';
31590
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31591
SELECT f_int1, f_int1, '', '', 'was inserted'
31592
FROM t0_template source_tab
31593
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31595
# check transactions-1 success: 1
31598
# check transactions-2 success: 1
31601
# check transactions-3 success: 1
31602
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31606
# check transactions-4 success: 1
31607
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31608
SELECT f_int1, f_int1, '', '', 'was inserted'
31609
FROM t0_template source_tab
31610
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31612
# check transactions-5 success: 1
31615
Warning 1196 Some non-transactional changed tables couldn't be rolled back
31617
# check transactions-6 success: 1
31618
# INFO: Storage engine used for t1 seems to be not transactional.
31621
# check transactions-7 success: 1
31622
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31624
SET @@session.sql_mode = 'traditional';
31625
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31626
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31627
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31628
'', '', 'was inserted' FROM t0_template
31629
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31630
ERROR 22012: Division by 0
31633
# check transactions-8 success: 1
31634
# INFO: Storage engine used for t1 seems to be unable to revert
31635
# changes made by the failing statement.
31636
SET @@session.sql_mode = '';
31638
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31640
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31642
# check special-1 success: 1
31643
UPDATE t1 SET f_charbig = '';
31645
# check special-2 success: 1
31646
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31647
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31648
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31649
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31650
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31651
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31652
'just inserted' FROM t0_template
31653
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31654
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31656
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31657
f_charbig = 'updated by trigger'
31658
WHERE f_int1 = new.f_int1;
31660
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31661
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31662
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31664
# check trigger-1 success: 1
31665
DROP TRIGGER trg_1;
31666
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31667
f_int2 = CAST(f_char1 AS SIGNED INT),
31668
f_charbig = 'just inserted'
31669
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31671
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31672
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31673
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31674
'just inserted' FROM t0_template
31675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31676
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31678
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31679
f_charbig = 'updated by trigger'
31680
WHERE f_int1 = new.f_int1;
31682
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31683
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31684
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31686
# check trigger-2 success: 1
31687
DROP TRIGGER trg_1;
31688
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31689
f_int2 = CAST(f_char1 AS SIGNED INT),
31690
f_charbig = 'just inserted'
31691
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31693
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31694
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31695
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31696
'just inserted' FROM t0_template
31697
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31698
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31700
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31701
f_charbig = 'updated by trigger'
31702
WHERE f_int1 = new.f_int1;
31704
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31705
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31707
# check trigger-3 success: 1
31708
DROP TRIGGER trg_1;
31709
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31710
f_int2 = CAST(f_char1 AS SIGNED INT),
31711
f_charbig = 'just inserted'
31712
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31714
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31715
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31716
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31717
'just inserted' FROM t0_template
31718
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31719
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31721
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31722
f_charbig = 'updated by trigger'
31723
WHERE f_int1 = - old.f_int1;
31725
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31726
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31728
# check trigger-4 success: 1
31729
DROP TRIGGER trg_1;
31730
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31731
f_int2 = CAST(f_char1 AS SIGNED INT),
31732
f_charbig = 'just inserted'
31733
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31735
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31736
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31737
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31738
'just inserted' FROM t0_template
31739
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31740
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31742
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31743
f_charbig = 'updated by trigger'
31744
WHERE f_int1 = new.f_int1;
31746
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31747
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31749
# check trigger-5 success: 1
31750
DROP TRIGGER trg_1;
31751
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31752
f_int2 = CAST(f_char1 AS SIGNED INT),
31753
f_charbig = 'just inserted'
31754
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31756
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31757
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31758
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31759
'just inserted' FROM t0_template
31760
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31761
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31763
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31764
f_charbig = 'updated by trigger'
31765
WHERE f_int1 = - old.f_int1;
31767
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31768
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31770
# check trigger-6 success: 1
31771
DROP TRIGGER trg_1;
31772
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31773
f_int2 = CAST(f_char1 AS SIGNED INT),
31774
f_charbig = 'just inserted'
31775
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31777
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31778
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31779
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31780
'just inserted' FROM t0_template
31781
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31782
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31784
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31785
f_charbig = 'updated by trigger'
31786
WHERE f_int1 = - old.f_int1;
31789
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31791
# check trigger-7 success: 1
31792
DROP TRIGGER trg_1;
31793
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31794
f_int2 = CAST(f_char1 AS SIGNED INT),
31795
f_charbig = 'just inserted'
31796
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31798
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31799
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31800
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31801
'just inserted' FROM t0_template
31802
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31803
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31805
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31806
f_charbig = 'updated by trigger'
31807
WHERE f_int1 = - old.f_int1;
31810
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31812
# check trigger-8 success: 1
31813
DROP TRIGGER trg_1;
31814
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31815
f_int2 = CAST(f_char1 AS SIGNED INT),
31816
f_charbig = 'just inserted'
31817
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31819
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31821
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31822
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31824
SET new.f_int1 = old.f_int1 + @max_row,
31825
new.f_int2 = old.f_int2 - @max_row,
31826
new.f_charbig = '####updated per update trigger####';
31829
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31830
f_charbig = '####updated per update statement itself####';
31832
# check trigger-9 success: 1
31833
DROP TRIGGER trg_2;
31834
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31835
f_int2 = CAST(f_char1 AS SIGNED INT),
31836
f_charbig = CONCAT('===',f_char1,'===');
31837
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31839
SET new.f_int1 = new.f_int1 + @max_row,
31840
new.f_int2 = new.f_int2 - @max_row,
31841
new.f_charbig = '####updated per update trigger####';
31844
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31845
f_charbig = '####updated per update statement itself####';
31847
# check trigger-10 success: 1
31848
DROP TRIGGER trg_2;
31849
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31850
f_int2 = CAST(f_char1 AS SIGNED INT),
31851
f_charbig = CONCAT('===',f_char1,'===');
31852
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31854
SET new.f_int1 = @my_max1 + @counter,
31855
new.f_int2 = @my_min2 - @counter,
31856
new.f_charbig = '####updated per insert trigger####';
31857
SET @counter = @counter + 1;
31860
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31861
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31862
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31863
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31864
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31866
DROP TRIGGER trg_3;
31868
# check trigger-11 success: 1
31870
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31871
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31872
AND f_charbig = '####updated per insert trigger####';
31873
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31875
SET new.f_int1 = @my_max1 + @counter,
31876
new.f_int2 = @my_min2 - @counter,
31877
new.f_charbig = '####updated per insert trigger####';
31878
SET @counter = @counter + 1;
31881
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31882
INSERT INTO t1 (f_char1, f_char2, f_charbig)
31883
SELECT CAST(f_int1 AS CHAR),
31884
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31885
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31887
DROP TRIGGER trg_3;
31889
# check trigger-12 success: 1
31891
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31892
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31893
AND f_charbig = '####updated per insert trigger####';
31895
Table Op Msg_type Msg_text
31896
test.t1 analyze note The storage engine for the table doesn't support analyze
31897
CHECK TABLE t1 EXTENDED;
31898
Table Op Msg_type Msg_text
31899
test.t1 check note The storage engine for the table doesn't support check
31900
CHECKSUM TABLE t1 EXTENDED;
31902
test.t1 <some_value>
31904
Table Op Msg_type Msg_text
31905
test.t1 optimize note The storage engine for the table doesn't support optimize
31906
# check layout success: 1
31907
REPAIR TABLE t1 EXTENDED;
31908
Table Op Msg_type Msg_text
31909
test.t1 repair note The storage engine for the table doesn't support repair
31910
# check layout success: 1
31913
# check TRUNCATE success: 1
31914
# check layout success: 1
31915
# End usability test (inc/partition_check.inc)
31922
f_charbig VARCHAR(1000)
31923
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
31925
PARTITION BY LIST(ABS(MOD(f_int1,2)))
31926
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
31927
(PARTITION part1 VALUES IN (0),
31928
PARTITION part2 VALUES IN (1),
31929
PARTITION part3 VALUES IN (NULL));
31930
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31931
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31932
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31933
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
31934
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31935
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31936
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31937
# Start usability test (inc/partition_check.inc)
31939
SHOW CREATE TABLE t1;
31941
t1 CREATE TABLE `t1` (
31942
`f_int1` int(11) DEFAULT NULL,
31943
`f_int2` int(11) DEFAULT NULL,
31944
`f_char1` char(20) DEFAULT NULL,
31945
`f_char2` char(20) DEFAULT NULL,
31946
`f_charbig` varchar(1000) DEFAULT NULL
31947
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = MyISAM, PARTITION part2 VALUES IN (1) ENGINE = MyISAM, PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
31950
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYD
31951
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp0.MYI
31952
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYD
31953
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp1.MYI
31954
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYD
31955
$MYSQLTEST_VARDIR/master-data/test/t1#P#part1#SP#part1sp2.MYI
31956
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYD
31957
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp0.MYI
31958
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYD
31959
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp1.MYI
31960
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYD
31961
$MYSQLTEST_VARDIR/master-data/test/t1#P#part2#SP#part2sp2.MYI
31962
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYD
31963
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp0.MYI
31964
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYD
31965
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp1.MYI
31966
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYD
31967
$MYSQLTEST_VARDIR/master-data/test/t1#P#part3#SP#part3sp2.MYI
31968
$MYSQLTEST_VARDIR/master-data/test/t1.frm
31969
$MYSQLTEST_VARDIR/master-data/test/t1.par
31971
# check prerequisites-1 success: 1
31972
# check COUNT(*) success: 1
31973
# check MIN/MAX(f_int1) success: 1
31974
# check MIN/MAX(f_int2) success: 1
31975
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31976
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31977
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31978
WHERE f_int1 IN (2,3);
31979
# check prerequisites-3 success: 1
31980
DELETE FROM t1 WHERE f_charbig = 'delete me';
31981
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
31982
# check read via f_int1 success: 1
31983
# check read via f_int2 success: 1
31985
# check multiple-1 success: 1
31986
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31988
# check multiple-2 success: 1
31989
INSERT INTO t1 SELECT * FROM t0_template
31990
WHERE MOD(f_int1,3) = 0;
31992
# check multiple-3 success: 1
31993
UPDATE t1 SET f_int1 = f_int1 + @max_row
31994
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31995
AND @max_row_div2 + @max_row_div4;
31997
# check multiple-4 success: 1
31999
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32000
AND @max_row_div2 + @max_row_div4 + @max_row;
32002
# check multiple-5 success: 1
32003
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32005
SET f_int1 = @cur_value , f_int2 = @cur_value,
32006
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32007
f_charbig = '#SINGLE#';
32009
# check single-1 success: 1
32010
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32012
SET f_int1 = @cur_value , f_int2 = @cur_value,
32013
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32014
f_charbig = '#SINGLE#';
32016
# check single-2 success: 1
32017
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32018
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32019
UPDATE t1 SET f_int1 = @cur_value2
32020
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32022
# check single-3 success: 1
32023
SET @cur_value1= -1;
32024
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32025
UPDATE t1 SET f_int1 = @cur_value1
32026
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32028
# check single-4 success: 1
32029
SELECT MAX(f_int1) INTO @cur_value FROM t1;
32030
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32032
# check single-5 success: 1
32033
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32035
# check single-6 success: 1
32036
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32038
# check single-7 success: 1
32039
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32040
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32041
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32042
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32043
f_charbig = '#NULL#';
32045
SET f_int1 = NULL , f_int2 = -@max_row,
32046
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32047
f_charbig = '#NULL#';
32048
# check null success: 1
32050
# check null-1 success: 1
32051
UPDATE t1 SET f_int1 = -@max_row
32052
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32053
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32055
# check null-2 success: 1
32056
UPDATE t1 SET f_int1 = NULL
32057
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32058
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32060
# check null-3 success: 1
32062
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32063
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32065
# check null-4 success: 1
32067
WHERE f_int1 = 0 AND f_int2 = 0
32068
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32069
AND f_charbig = '#NULL#';
32071
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32072
SELECT f_int1, f_int1, '', '', 'was inserted'
32073
FROM t0_template source_tab
32074
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32076
# check transactions-1 success: 1
32079
# check transactions-2 success: 1
32082
# check transactions-3 success: 1
32083
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32087
# check transactions-4 success: 1
32088
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32089
SELECT f_int1, f_int1, '', '', 'was inserted'
32090
FROM t0_template source_tab
32091
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32093
# check transactions-5 success: 1
32096
Warning 1196 Some non-transactional changed tables couldn't be rolled back
32098
# check transactions-6 success: 1
32099
# INFO: Storage engine used for t1 seems to be not transactional.
32102
# check transactions-7 success: 1
32103
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32105
SET @@session.sql_mode = 'traditional';
32106
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32107
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32108
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32109
'', '', 'was inserted' FROM t0_template
32110
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32111
ERROR 22012: Division by 0
32114
# check transactions-8 success: 1
32115
# INFO: Storage engine used for t1 seems to be unable to revert
32116
# changes made by the failing statement.
32117
SET @@session.sql_mode = '';
32119
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32121
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32123
# check special-1 success: 1
32124
UPDATE t1 SET f_charbig = '';
32126
# check special-2 success: 1
32127
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32128
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32129
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32130
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32131
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32132
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32133
'just inserted' FROM t0_template
32134
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32135
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
32137
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32138
f_charbig = 'updated by trigger'
32139
WHERE f_int1 = new.f_int1;
32141
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32142
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32143
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32145
# check trigger-1 success: 1
32146
DROP TRIGGER trg_1;
32147
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32148
f_int2 = CAST(f_char1 AS SIGNED INT),
32149
f_charbig = 'just inserted'
32150
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32152
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32153
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32154
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32155
'just inserted' FROM t0_template
32156
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32157
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
32159
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32160
f_charbig = 'updated by trigger'
32161
WHERE f_int1 = new.f_int1;
32163
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32164
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32165
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32167
# check trigger-2 success: 1
32168
DROP TRIGGER trg_1;
32169
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32170
f_int2 = CAST(f_char1 AS SIGNED INT),
32171
f_charbig = 'just inserted'
32172
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32174
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32175
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32176
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32177
'just inserted' FROM t0_template
32178
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32179
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32181
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32182
f_charbig = 'updated by trigger'
32183
WHERE f_int1 = new.f_int1;
32185
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32186
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32188
# check trigger-3 success: 1
32189
DROP TRIGGER trg_1;
32190
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32191
f_int2 = CAST(f_char1 AS SIGNED INT),
32192
f_charbig = 'just inserted'
32193
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32195
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32196
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32197
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32198
'just inserted' FROM t0_template
32199
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32200
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32202
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32203
f_charbig = 'updated by trigger'
32204
WHERE f_int1 = - old.f_int1;
32206
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32207
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32209
# check trigger-4 success: 1
32210
DROP TRIGGER trg_1;
32211
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32212
f_int2 = CAST(f_char1 AS SIGNED INT),
32213
f_charbig = 'just inserted'
32214
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32216
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32217
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32218
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32219
'just inserted' FROM t0_template
32220
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32221
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32223
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32224
f_charbig = 'updated by trigger'
32225
WHERE f_int1 = new.f_int1;
32227
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32228
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32230
# check trigger-5 success: 1
32231
DROP TRIGGER trg_1;
32232
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32233
f_int2 = CAST(f_char1 AS SIGNED INT),
32234
f_charbig = 'just inserted'
32235
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32237
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32238
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32239
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32240
'just inserted' FROM t0_template
32241
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32242
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32244
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32245
f_charbig = 'updated by trigger'
32246
WHERE f_int1 = - old.f_int1;
32248
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32249
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32251
# check trigger-6 success: 1
32252
DROP TRIGGER trg_1;
32253
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32254
f_int2 = CAST(f_char1 AS SIGNED INT),
32255
f_charbig = 'just inserted'
32256
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32258
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32259
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32260
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32261
'just inserted' FROM t0_template
32262
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32263
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32265
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32266
f_charbig = 'updated by trigger'
32267
WHERE f_int1 = - old.f_int1;
32270
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32272
# check trigger-7 success: 1
32273
DROP TRIGGER trg_1;
32274
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32275
f_int2 = CAST(f_char1 AS SIGNED INT),
32276
f_charbig = 'just inserted'
32277
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32279
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32280
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32281
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32282
'just inserted' FROM t0_template
32283
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32284
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32286
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32287
f_charbig = 'updated by trigger'
32288
WHERE f_int1 = - old.f_int1;
32291
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32293
# check trigger-8 success: 1
32294
DROP TRIGGER trg_1;
32295
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32296
f_int2 = CAST(f_char1 AS SIGNED INT),
32297
f_charbig = 'just inserted'
32298
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32300
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32302
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32303
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32305
SET new.f_int1 = old.f_int1 + @max_row,
32306
new.f_int2 = old.f_int2 - @max_row,
32307
new.f_charbig = '####updated per update trigger####';
32310
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32311
f_charbig = '####updated per update statement itself####';
32313
# check trigger-9 success: 1
32314
DROP TRIGGER trg_2;
32315
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32316
f_int2 = CAST(f_char1 AS SIGNED INT),
32317
f_charbig = CONCAT('===',f_char1,'===');
32318
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32320
SET new.f_int1 = new.f_int1 + @max_row,
32321
new.f_int2 = new.f_int2 - @max_row,
32322
new.f_charbig = '####updated per update trigger####';
32325
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32326
f_charbig = '####updated per update statement itself####';
32328
# check trigger-10 success: 1
32329
DROP TRIGGER trg_2;
32330
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32331
f_int2 = CAST(f_char1 AS SIGNED INT),
32332
f_charbig = CONCAT('===',f_char1,'===');
32333
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32335
SET new.f_int1 = @my_max1 + @counter,
32336
new.f_int2 = @my_min2 - @counter,
32337
new.f_charbig = '####updated per insert trigger####';
32338
SET @counter = @counter + 1;
32341
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32342
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32343
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32344
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32345
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32347
DROP TRIGGER trg_3;
32349
# check trigger-11 success: 1
32351
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32352
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32353
AND f_charbig = '####updated per insert trigger####';
32354
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32356
SET new.f_int1 = @my_max1 + @counter,
32357
new.f_int2 = @my_min2 - @counter,
32358
new.f_charbig = '####updated per insert trigger####';
32359
SET @counter = @counter + 1;
32362
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32363
INSERT INTO t1 (f_char1, f_char2, f_charbig)
32364
SELECT CAST(f_int1 AS CHAR),
32365
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32366
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32368
DROP TRIGGER trg_3;
32370
# check trigger-12 success: 1
32372
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32373
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32374
AND f_charbig = '####updated per insert trigger####';
32376
Table Op Msg_type Msg_text
32377
test.t1 analyze note The storage engine for the table doesn't support analyze
32378
CHECK TABLE t1 EXTENDED;
32379
Table Op Msg_type Msg_text
32380
test.t1 check note The storage engine for the table doesn't support check
32381
CHECKSUM TABLE t1 EXTENDED;
32383
test.t1 <some_value>
32385
Table Op Msg_type Msg_text
32386
test.t1 optimize note The storage engine for the table doesn't support optimize
32387
# check layout success: 1
32388
REPAIR TABLE t1 EXTENDED;
32389
Table Op Msg_type Msg_text
32390
test.t1 repair note The storage engine for the table doesn't support repair
32391
# check layout success: 1
32394
# check TRUNCATE success: 1
32395
# check layout success: 1
32396
# End usability test (inc/partition_check.inc)
32398
DROP VIEW IF EXISTS v1;
32399
DROP TABLE IF EXISTS t1;
32400
DROP TABLE IF EXISTS t0_aux;
32401
DROP TABLE IF EXISTS t0_definition;
32402
DROP TABLE IF EXISTS t0_template;