2
SET @@session.default_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
# Check partitioning methods on just created tables
43
# The tables should be defined without/with PRIMARY KEY and
45
# Every test round has to check
46
# PARTITION BY HASH/KEY/LIST/RANGE
47
# PARTITION BY RANGE/LIST ... SUBPARTITION BY HASH/KEY ...
48
#========================================================================
49
#------------------------------------------------------------------------
50
# 1 Tables without PRIMARY KEY or UNIQUE INDEXes
51
#------------------------------------------------------------------------
52
# 1.1 The partitioning function contains one column.
53
DROP TABLE IF EXISTS t1;
59
f_charbig VARCHAR(1000)
62
PARTITION BY HASH(f_int1) PARTITIONS 2;
63
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
64
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
65
# Start usability test (inc/partition_check.inc)
69
t1 CREATE TABLE `t1` (
70
`f_int1` int(11) DEFAULT NULL,
71
`f_int2` int(11) DEFAULT NULL,
72
`f_char1` char(20) DEFAULT NULL,
73
`f_char2` char(20) DEFAULT NULL,
74
`f_charbig` varchar(1000) DEFAULT NULL
75
) ENGINE=MyISAM DEFAULT CHARSET=latin1
76
/*!50100 PARTITION BY HASH (f_int1)
87
# check prerequisites-1 success: 1
88
# check COUNT(*) success: 1
89
# check MIN/MAX(f_int1) success: 1
90
# check MIN/MAX(f_int2) success: 1
91
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
92
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
93
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
94
WHERE f_int1 IN (2,3);
95
# check prerequisites-3 success: 1
96
DELETE FROM t1 WHERE f_charbig = 'delete me';
97
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
98
# check read via f_int1 success: 1
99
# check read via f_int2 success: 1
101
# check multiple-1 success: 1
102
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
104
# check multiple-2 success: 1
105
INSERT INTO t1 SELECT * FROM t0_template
106
WHERE MOD(f_int1,3) = 0;
108
# check multiple-3 success: 1
109
UPDATE t1 SET f_int1 = f_int1 + @max_row
110
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
111
AND @max_row_div2 + @max_row_div4;
113
# check multiple-4 success: 1
115
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
116
AND @max_row_div2 + @max_row_div4 + @max_row;
118
# check multiple-5 success: 1
119
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
121
SET f_int1 = @cur_value , f_int2 = @cur_value,
122
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
123
f_charbig = '#SINGLE#';
125
# check single-1 success: 1
126
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
128
SET f_int1 = @cur_value , f_int2 = @cur_value,
129
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
130
f_charbig = '#SINGLE#';
132
# check single-2 success: 1
133
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
134
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
135
UPDATE t1 SET f_int1 = @cur_value2
136
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
138
# check single-3 success: 1
140
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
141
UPDATE t1 SET f_int1 = @cur_value1
142
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
144
# check single-4 success: 1
145
SELECT MAX(f_int1) INTO @cur_value FROM t1;
146
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
148
# check single-5 success: 1
149
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
151
# check single-6 success: 1
152
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
154
# check single-7 success: 1
155
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
156
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
157
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
158
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
159
f_charbig = '#NULL#';
161
SET f_int1 = NULL , f_int2 = -@max_row,
162
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
163
f_charbig = '#NULL#';
164
# check null success: 1
166
# check null-1 success: 1
167
UPDATE t1 SET f_int1 = -@max_row
168
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
169
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
171
# check null-2 success: 1
172
UPDATE t1 SET f_int1 = NULL
173
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
174
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
176
# check null-3 success: 1
178
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
179
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
181
# check null-4 success: 1
183
WHERE f_int1 = 0 AND f_int2 = 0
184
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
185
AND f_charbig = '#NULL#';
187
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
188
SELECT f_int1, f_int1, '', '', 'was inserted'
189
FROM t0_template source_tab
190
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
192
# check transactions-1 success: 1
195
# check transactions-2 success: 1
198
# check transactions-3 success: 1
199
DELETE FROM t1 WHERE f_charbig = 'was inserted';
203
# check transactions-4 success: 1
204
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
205
SELECT f_int1, f_int1, '', '', 'was inserted'
206
FROM t0_template source_tab
207
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
209
# check transactions-5 success: 1
212
Warning 1196 Some non-transactional changed tables couldn't be rolled back
214
# check transactions-6 success: 1
215
# INFO: Storage engine used for t1 seems to be not transactional.
218
# check transactions-7 success: 1
219
DELETE FROM t1 WHERE f_charbig = 'was inserted';
221
SET @@session.sql_mode = 'traditional';
222
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
223
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
224
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
225
'', '', 'was inserted' FROM t0_template
226
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
227
ERROR 22012: Division by 0
230
# check transactions-8 success: 1
231
# INFO: Storage engine used for t1 seems to be unable to revert
232
# changes made by the failing statement.
233
SET @@session.sql_mode = '';
235
DELETE FROM t1 WHERE f_charbig = 'was inserted';
237
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
239
# check special-1 success: 1
240
UPDATE t1 SET f_charbig = '';
242
# check special-2 success: 1
243
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
244
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
245
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
246
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
247
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
248
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
249
'just inserted' FROM t0_template
250
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
251
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
253
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
254
f_charbig = 'updated by trigger'
255
WHERE f_int1 = new.f_int1;
257
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
258
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
259
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
261
# check trigger-1 success: 1
263
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
264
f_int2 = CAST(f_char1 AS SIGNED INT),
265
f_charbig = 'just inserted'
266
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
268
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
269
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
270
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
271
'just inserted' FROM t0_template
272
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
273
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
275
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
276
f_charbig = 'updated by trigger'
277
WHERE f_int1 = new.f_int1;
279
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
280
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
281
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
283
# check trigger-2 success: 1
285
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
286
f_int2 = CAST(f_char1 AS SIGNED INT),
287
f_charbig = 'just inserted'
288
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
290
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
291
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
292
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
293
'just inserted' FROM t0_template
294
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
295
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
297
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
298
f_charbig = 'updated by trigger'
299
WHERE f_int1 = new.f_int1;
301
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
302
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
304
# check trigger-3 success: 1
306
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
307
f_int2 = CAST(f_char1 AS SIGNED INT),
308
f_charbig = 'just inserted'
309
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
311
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
312
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
313
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
314
'just inserted' FROM t0_template
315
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
316
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
318
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
319
f_charbig = 'updated by trigger'
320
WHERE f_int1 = - old.f_int1;
322
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
323
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
325
# check trigger-4 success: 1
327
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
328
f_int2 = CAST(f_char1 AS SIGNED INT),
329
f_charbig = 'just inserted'
330
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
332
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
333
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
334
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
335
'just inserted' FROM t0_template
336
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
337
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
339
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
340
f_charbig = 'updated by trigger'
341
WHERE f_int1 = new.f_int1;
343
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
344
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
346
# check trigger-5 success: 1
348
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
349
f_int2 = CAST(f_char1 AS SIGNED INT),
350
f_charbig = 'just inserted'
351
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
353
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
354
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
355
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
356
'just inserted' FROM t0_template
357
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
358
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
360
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
361
f_charbig = 'updated by trigger'
362
WHERE f_int1 = - old.f_int1;
364
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
365
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
367
# check trigger-6 success: 1
369
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
370
f_int2 = CAST(f_char1 AS SIGNED INT),
371
f_charbig = 'just inserted'
372
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
374
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
375
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
376
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
377
'just inserted' FROM t0_template
378
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
379
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
381
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
382
f_charbig = 'updated by trigger'
383
WHERE f_int1 = - old.f_int1;
386
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
388
# check trigger-7 success: 1
390
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
391
f_int2 = CAST(f_char1 AS SIGNED INT),
392
f_charbig = 'just inserted'
393
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
395
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
396
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
397
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
398
'just inserted' FROM t0_template
399
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
400
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
402
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
403
f_charbig = 'updated by trigger'
404
WHERE f_int1 = - old.f_int1;
407
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
409
# check trigger-8 success: 1
411
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
412
f_int2 = CAST(f_char1 AS SIGNED INT),
413
f_charbig = 'just inserted'
414
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
416
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
418
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
419
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
421
SET new.f_int1 = old.f_int1 + @max_row,
422
new.f_int2 = old.f_int2 - @max_row,
423
new.f_charbig = '####updated per update trigger####';
426
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
427
f_charbig = '####updated per update statement itself####';
429
# check trigger-9 success: 1
431
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
432
f_int2 = CAST(f_char1 AS SIGNED INT),
433
f_charbig = CONCAT('===',f_char1,'===');
434
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
436
SET new.f_int1 = new.f_int1 + @max_row,
437
new.f_int2 = new.f_int2 - @max_row,
438
new.f_charbig = '####updated per update trigger####';
441
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
442
f_charbig = '####updated per update statement itself####';
444
# check trigger-10 success: 1
446
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
447
f_int2 = CAST(f_char1 AS SIGNED INT),
448
f_charbig = CONCAT('===',f_char1,'===');
449
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
451
SET new.f_int1 = @my_max1 + @counter,
452
new.f_int2 = @my_min2 - @counter,
453
new.f_charbig = '####updated per insert trigger####';
454
SET @counter = @counter + 1;
457
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
458
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
459
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
460
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
461
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
465
# check trigger-11 success: 1
467
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
468
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
469
AND f_charbig = '####updated per insert trigger####';
470
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
472
SET new.f_int1 = @my_max1 + @counter,
473
new.f_int2 = @my_min2 - @counter,
474
new.f_charbig = '####updated per insert trigger####';
475
SET @counter = @counter + 1;
478
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
479
INSERT INTO t1 (f_char1, f_char2, f_charbig)
480
SELECT CAST(f_int1 AS CHAR),
481
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
482
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
486
# check trigger-12 success: 1
488
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
489
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
490
AND f_charbig = '####updated per insert trigger####';
492
Table Op Msg_type Msg_text
493
test.t1 analyze status OK
494
CHECK TABLE t1 EXTENDED;
495
Table Op Msg_type Msg_text
496
test.t1 check status OK
497
CHECKSUM TABLE t1 EXTENDED;
501
Table Op Msg_type Msg_text
502
test.t1 optimize status OK
503
# check layout success: 1
504
REPAIR TABLE t1 EXTENDED;
505
Table Op Msg_type Msg_text
506
test.t1 repair status OK
507
# check layout success: 1
510
# check TRUNCATE success: 1
511
# check layout success: 1
512
# End usability test (inc/partition_check.inc)
519
f_charbig VARCHAR(1000)
522
PARTITION BY KEY(f_int1) PARTITIONS 5;
523
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
524
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
525
# Start usability test (inc/partition_check.inc)
527
SHOW CREATE TABLE t1;
529
t1 CREATE TABLE `t1` (
530
`f_int1` int(11) DEFAULT NULL,
531
`f_int2` int(11) DEFAULT NULL,
532
`f_char1` char(20) DEFAULT NULL,
533
`f_char2` char(20) DEFAULT NULL,
534
`f_charbig` varchar(1000) DEFAULT NULL
535
) ENGINE=MyISAM DEFAULT CHARSET=latin1
536
/*!50100 PARTITION BY KEY (f_int1)
553
# check prerequisites-1 success: 1
554
# check COUNT(*) success: 1
555
# check MIN/MAX(f_int1) success: 1
556
# check MIN/MAX(f_int2) success: 1
557
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
558
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
559
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
560
WHERE f_int1 IN (2,3);
561
# check prerequisites-3 success: 1
562
DELETE FROM t1 WHERE f_charbig = 'delete me';
563
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
564
# check read via f_int1 success: 1
565
# check read via f_int2 success: 1
567
# check multiple-1 success: 1
568
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
570
# check multiple-2 success: 1
571
INSERT INTO t1 SELECT * FROM t0_template
572
WHERE MOD(f_int1,3) = 0;
574
# check multiple-3 success: 1
575
UPDATE t1 SET f_int1 = f_int1 + @max_row
576
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
577
AND @max_row_div2 + @max_row_div4;
579
# check multiple-4 success: 1
581
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
582
AND @max_row_div2 + @max_row_div4 + @max_row;
584
# check multiple-5 success: 1
585
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
587
SET f_int1 = @cur_value , f_int2 = @cur_value,
588
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
589
f_charbig = '#SINGLE#';
591
# check single-1 success: 1
592
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
594
SET f_int1 = @cur_value , f_int2 = @cur_value,
595
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
596
f_charbig = '#SINGLE#';
598
# check single-2 success: 1
599
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
600
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
601
UPDATE t1 SET f_int1 = @cur_value2
602
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
604
# check single-3 success: 1
606
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
607
UPDATE t1 SET f_int1 = @cur_value1
608
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
610
# check single-4 success: 1
611
SELECT MAX(f_int1) INTO @cur_value FROM t1;
612
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
614
# check single-5 success: 1
615
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
617
# check single-6 success: 1
618
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
620
# check single-7 success: 1
621
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
622
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
623
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
624
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
625
f_charbig = '#NULL#';
627
SET f_int1 = NULL , f_int2 = -@max_row,
628
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
629
f_charbig = '#NULL#';
630
# check null success: 1
632
# check null-1 success: 1
633
UPDATE t1 SET f_int1 = -@max_row
634
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
635
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
637
# check null-2 success: 1
638
UPDATE t1 SET f_int1 = NULL
639
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
640
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
642
# check null-3 success: 1
644
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
645
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
647
# check null-4 success: 1
649
WHERE f_int1 = 0 AND f_int2 = 0
650
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
651
AND f_charbig = '#NULL#';
653
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
654
SELECT f_int1, f_int1, '', '', 'was inserted'
655
FROM t0_template source_tab
656
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
658
# check transactions-1 success: 1
661
# check transactions-2 success: 1
664
# check transactions-3 success: 1
665
DELETE FROM t1 WHERE f_charbig = 'was inserted';
669
# check transactions-4 success: 1
670
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
671
SELECT f_int1, f_int1, '', '', 'was inserted'
672
FROM t0_template source_tab
673
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
675
# check transactions-5 success: 1
678
Warning 1196 Some non-transactional changed tables couldn't be rolled back
680
# check transactions-6 success: 1
681
# INFO: Storage engine used for t1 seems to be not transactional.
684
# check transactions-7 success: 1
685
DELETE FROM t1 WHERE f_charbig = 'was inserted';
687
SET @@session.sql_mode = 'traditional';
688
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
689
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
690
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
691
'', '', 'was inserted' FROM t0_template
692
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
693
ERROR 22012: Division by 0
696
# check transactions-8 success: 1
697
# INFO: Storage engine used for t1 seems to be unable to revert
698
# changes made by the failing statement.
699
SET @@session.sql_mode = '';
701
DELETE FROM t1 WHERE f_charbig = 'was inserted';
703
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
705
# check special-1 success: 1
706
UPDATE t1 SET f_charbig = '';
708
# check special-2 success: 1
709
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
710
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
711
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
712
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
713
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
714
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
715
'just inserted' FROM t0_template
716
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
717
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
719
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
720
f_charbig = 'updated by trigger'
721
WHERE f_int1 = new.f_int1;
723
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
724
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
725
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
727
# check trigger-1 success: 1
729
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
730
f_int2 = CAST(f_char1 AS SIGNED INT),
731
f_charbig = 'just inserted'
732
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
734
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
735
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
736
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
737
'just inserted' FROM t0_template
738
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
739
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
741
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
742
f_charbig = 'updated by trigger'
743
WHERE f_int1 = new.f_int1;
745
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
746
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
747
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
749
# check trigger-2 success: 1
751
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
752
f_int2 = CAST(f_char1 AS SIGNED INT),
753
f_charbig = 'just inserted'
754
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
756
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
757
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
758
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
759
'just inserted' FROM t0_template
760
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
761
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
763
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
764
f_charbig = 'updated by trigger'
765
WHERE f_int1 = new.f_int1;
767
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
768
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
770
# check trigger-3 success: 1
772
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
773
f_int2 = CAST(f_char1 AS SIGNED INT),
774
f_charbig = 'just inserted'
775
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
777
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
778
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
779
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
780
'just inserted' FROM t0_template
781
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
782
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
784
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
785
f_charbig = 'updated by trigger'
786
WHERE f_int1 = - old.f_int1;
788
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
789
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
791
# check trigger-4 success: 1
793
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
794
f_int2 = CAST(f_char1 AS SIGNED INT),
795
f_charbig = 'just inserted'
796
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
798
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
799
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
800
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
801
'just inserted' FROM t0_template
802
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
803
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
805
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
806
f_charbig = 'updated by trigger'
807
WHERE f_int1 = new.f_int1;
809
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
810
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
812
# check trigger-5 success: 1
814
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
815
f_int2 = CAST(f_char1 AS SIGNED INT),
816
f_charbig = 'just inserted'
817
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
819
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
820
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
821
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
822
'just inserted' FROM t0_template
823
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
824
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
826
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
827
f_charbig = 'updated by trigger'
828
WHERE f_int1 = - old.f_int1;
830
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
831
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
833
# check trigger-6 success: 1
835
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
836
f_int2 = CAST(f_char1 AS SIGNED INT),
837
f_charbig = 'just inserted'
838
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
840
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
841
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
842
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
843
'just inserted' FROM t0_template
844
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
845
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
847
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
848
f_charbig = 'updated by trigger'
849
WHERE f_int1 = - old.f_int1;
852
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
854
# check trigger-7 success: 1
856
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
857
f_int2 = CAST(f_char1 AS SIGNED INT),
858
f_charbig = 'just inserted'
859
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
861
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
862
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
863
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
864
'just inserted' FROM t0_template
865
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
866
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
868
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
869
f_charbig = 'updated by trigger'
870
WHERE f_int1 = - old.f_int1;
873
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
875
# check trigger-8 success: 1
877
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
878
f_int2 = CAST(f_char1 AS SIGNED INT),
879
f_charbig = 'just inserted'
880
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
882
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
884
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
885
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
887
SET new.f_int1 = old.f_int1 + @max_row,
888
new.f_int2 = old.f_int2 - @max_row,
889
new.f_charbig = '####updated per update trigger####';
892
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
893
f_charbig = '####updated per update statement itself####';
895
# check trigger-9 success: 1
897
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
898
f_int2 = CAST(f_char1 AS SIGNED INT),
899
f_charbig = CONCAT('===',f_char1,'===');
900
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
902
SET new.f_int1 = new.f_int1 + @max_row,
903
new.f_int2 = new.f_int2 - @max_row,
904
new.f_charbig = '####updated per update trigger####';
907
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
908
f_charbig = '####updated per update statement itself####';
910
# check trigger-10 success: 1
912
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
913
f_int2 = CAST(f_char1 AS SIGNED INT),
914
f_charbig = CONCAT('===',f_char1,'===');
915
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
917
SET new.f_int1 = @my_max1 + @counter,
918
new.f_int2 = @my_min2 - @counter,
919
new.f_charbig = '####updated per insert trigger####';
920
SET @counter = @counter + 1;
923
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
924
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
925
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
926
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
927
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
931
# check trigger-11 success: 1
933
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
934
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
935
AND f_charbig = '####updated per insert trigger####';
936
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
938
SET new.f_int1 = @my_max1 + @counter,
939
new.f_int2 = @my_min2 - @counter,
940
new.f_charbig = '####updated per insert trigger####';
941
SET @counter = @counter + 1;
944
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
945
INSERT INTO t1 (f_char1, f_char2, f_charbig)
946
SELECT CAST(f_int1 AS CHAR),
947
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
948
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
952
# check trigger-12 success: 1
954
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
955
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
956
AND f_charbig = '####updated per insert trigger####';
958
Table Op Msg_type Msg_text
959
test.t1 analyze status OK
960
CHECK TABLE t1 EXTENDED;
961
Table Op Msg_type Msg_text
962
test.t1 check status OK
963
CHECKSUM TABLE t1 EXTENDED;
967
Table Op Msg_type Msg_text
968
test.t1 optimize status OK
969
# check layout success: 1
970
REPAIR TABLE t1 EXTENDED;
971
Table Op Msg_type Msg_text
972
test.t1 repair status OK
973
# check layout success: 1
976
# check TRUNCATE success: 1
977
# check layout success: 1
978
# End usability test (inc/partition_check.inc)
985
f_charbig VARCHAR(1000)
988
PARTITION BY LIST(MOD(f_int1,4))
989
(PARTITION part_3 VALUES IN (-3),
990
PARTITION part_2 VALUES IN (-2),
991
PARTITION part_1 VALUES IN (-1),
992
PARTITION part_N VALUES IN (NULL),
993
PARTITION part0 VALUES IN (0),
994
PARTITION part1 VALUES IN (1),
995
PARTITION part2 VALUES IN (2),
996
PARTITION part3 VALUES IN (3));
997
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
998
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
999
# Start usability test (inc/partition_check.inc)
1001
SHOW CREATE TABLE t1;
1003
t1 CREATE TABLE `t1` (
1004
`f_int1` int(11) DEFAULT NULL,
1005
`f_int2` int(11) DEFAULT NULL,
1006
`f_char1` char(20) DEFAULT NULL,
1007
`f_char2` char(20) DEFAULT NULL,
1008
`f_charbig` varchar(1000) DEFAULT NULL
1009
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1010
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
1011
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
1012
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
1013
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
1014
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
1015
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
1016
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
1017
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
1018
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
1040
# check prerequisites-1 success: 1
1041
# check COUNT(*) success: 1
1042
# check MIN/MAX(f_int1) success: 1
1043
# check MIN/MAX(f_int2) success: 1
1044
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1045
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1046
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1047
WHERE f_int1 IN (2,3);
1048
# check prerequisites-3 success: 1
1049
DELETE FROM t1 WHERE f_charbig = 'delete me';
1050
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1051
# check read via f_int1 success: 1
1052
# check read via f_int2 success: 1
1054
# check multiple-1 success: 1
1055
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1057
# check multiple-2 success: 1
1058
INSERT INTO t1 SELECT * FROM t0_template
1059
WHERE MOD(f_int1,3) = 0;
1061
# check multiple-3 success: 1
1062
UPDATE t1 SET f_int1 = f_int1 + @max_row
1063
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1064
AND @max_row_div2 + @max_row_div4;
1066
# check multiple-4 success: 1
1068
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1069
AND @max_row_div2 + @max_row_div4 + @max_row;
1071
# check multiple-5 success: 1
1072
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1074
SET f_int1 = @cur_value , f_int2 = @cur_value,
1075
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1076
f_charbig = '#SINGLE#';
1078
# check single-1 success: 1
1079
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1081
SET f_int1 = @cur_value , f_int2 = @cur_value,
1082
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1083
f_charbig = '#SINGLE#';
1085
# check single-2 success: 1
1086
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1087
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1088
UPDATE t1 SET f_int1 = @cur_value2
1089
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1091
# check single-3 success: 1
1092
SET @cur_value1= -1;
1093
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1094
UPDATE t1 SET f_int1 = @cur_value1
1095
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1097
# check single-4 success: 1
1098
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1099
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1101
# check single-5 success: 1
1102
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1104
# check single-6 success: 1
1105
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1107
# check single-7 success: 1
1108
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1109
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1110
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1111
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1112
f_charbig = '#NULL#';
1114
SET f_int1 = NULL , f_int2 = -@max_row,
1115
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1116
f_charbig = '#NULL#';
1117
# check null success: 1
1119
# check null-1 success: 1
1120
UPDATE t1 SET f_int1 = -@max_row
1121
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1122
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1124
# check null-2 success: 1
1125
UPDATE t1 SET f_int1 = NULL
1126
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1127
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1129
# check null-3 success: 1
1131
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1132
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1134
# check null-4 success: 1
1136
WHERE f_int1 = 0 AND f_int2 = 0
1137
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1138
AND f_charbig = '#NULL#';
1140
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1141
SELECT f_int1, f_int1, '', '', 'was inserted'
1142
FROM t0_template source_tab
1143
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1145
# check transactions-1 success: 1
1148
# check transactions-2 success: 1
1151
# check transactions-3 success: 1
1152
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1156
# check transactions-4 success: 1
1157
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1158
SELECT f_int1, f_int1, '', '', 'was inserted'
1159
FROM t0_template source_tab
1160
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1162
# check transactions-5 success: 1
1165
Warning 1196 Some non-transactional changed tables couldn't be rolled back
1167
# check transactions-6 success: 1
1168
# INFO: Storage engine used for t1 seems to be not transactional.
1171
# check transactions-7 success: 1
1172
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1174
SET @@session.sql_mode = 'traditional';
1175
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1176
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1177
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1178
'', '', 'was inserted' FROM t0_template
1179
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1180
ERROR 22012: Division by 0
1183
# check transactions-8 success: 1
1184
# INFO: Storage engine used for t1 seems to be unable to revert
1185
# changes made by the failing statement.
1186
SET @@session.sql_mode = '';
1188
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1190
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1192
# check special-1 success: 1
1193
UPDATE t1 SET f_charbig = '';
1195
# check special-2 success: 1
1196
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1197
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1198
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1199
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1200
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1201
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1202
'just inserted' FROM t0_template
1203
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1204
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1206
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1207
f_charbig = 'updated by trigger'
1208
WHERE f_int1 = new.f_int1;
1210
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1211
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1214
# check trigger-1 success: 1
1216
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1217
f_int2 = CAST(f_char1 AS SIGNED INT),
1218
f_charbig = 'just inserted'
1219
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1221
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1222
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1223
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1224
'just inserted' FROM t0_template
1225
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1226
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1228
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1229
f_charbig = 'updated by trigger'
1230
WHERE f_int1 = new.f_int1;
1232
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1233
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1236
# check trigger-2 success: 1
1238
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1239
f_int2 = CAST(f_char1 AS SIGNED INT),
1240
f_charbig = 'just inserted'
1241
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1243
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1244
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1245
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1246
'just inserted' FROM t0_template
1247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1248
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1250
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1251
f_charbig = 'updated by trigger'
1252
WHERE f_int1 = new.f_int1;
1254
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1255
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1257
# check trigger-3 success: 1
1259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1260
f_int2 = CAST(f_char1 AS SIGNED INT),
1261
f_charbig = 'just inserted'
1262
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1264
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1265
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1266
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1267
'just inserted' FROM t0_template
1268
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1269
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1271
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1272
f_charbig = 'updated by trigger'
1273
WHERE f_int1 = - old.f_int1;
1275
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1276
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1278
# check trigger-4 success: 1
1280
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1281
f_int2 = CAST(f_char1 AS SIGNED INT),
1282
f_charbig = 'just inserted'
1283
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1285
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1286
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1287
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1288
'just inserted' FROM t0_template
1289
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1290
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1292
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1293
f_charbig = 'updated by trigger'
1294
WHERE f_int1 = new.f_int1;
1296
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1297
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1299
# check trigger-5 success: 1
1301
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1302
f_int2 = CAST(f_char1 AS SIGNED INT),
1303
f_charbig = 'just inserted'
1304
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1306
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1307
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1308
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1309
'just inserted' FROM t0_template
1310
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1311
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1313
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1314
f_charbig = 'updated by trigger'
1315
WHERE f_int1 = - old.f_int1;
1317
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1318
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1320
# check trigger-6 success: 1
1322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1323
f_int2 = CAST(f_char1 AS SIGNED INT),
1324
f_charbig = 'just inserted'
1325
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1327
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1328
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1329
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1330
'just inserted' FROM t0_template
1331
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1332
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1334
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1335
f_charbig = 'updated by trigger'
1336
WHERE f_int1 = - old.f_int1;
1339
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1341
# check trigger-7 success: 1
1343
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1344
f_int2 = CAST(f_char1 AS SIGNED INT),
1345
f_charbig = 'just inserted'
1346
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1348
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1349
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1350
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1351
'just inserted' FROM t0_template
1352
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1353
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1355
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1356
f_charbig = 'updated by trigger'
1357
WHERE f_int1 = - old.f_int1;
1360
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1362
# check trigger-8 success: 1
1364
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1365
f_int2 = CAST(f_char1 AS SIGNED INT),
1366
f_charbig = 'just inserted'
1367
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1369
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1371
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1372
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1374
SET new.f_int1 = old.f_int1 + @max_row,
1375
new.f_int2 = old.f_int2 - @max_row,
1376
new.f_charbig = '####updated per update trigger####';
1379
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1380
f_charbig = '####updated per update statement itself####';
1382
# check trigger-9 success: 1
1384
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1385
f_int2 = CAST(f_char1 AS SIGNED INT),
1386
f_charbig = CONCAT('===',f_char1,'===');
1387
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1389
SET new.f_int1 = new.f_int1 + @max_row,
1390
new.f_int2 = new.f_int2 - @max_row,
1391
new.f_charbig = '####updated per update trigger####';
1394
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1395
f_charbig = '####updated per update statement itself####';
1397
# check trigger-10 success: 1
1399
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1400
f_int2 = CAST(f_char1 AS SIGNED INT),
1401
f_charbig = CONCAT('===',f_char1,'===');
1402
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1404
SET new.f_int1 = @my_max1 + @counter,
1405
new.f_int2 = @my_min2 - @counter,
1406
new.f_charbig = '####updated per insert trigger####';
1407
SET @counter = @counter + 1;
1410
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1411
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1412
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1413
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1414
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1418
# check trigger-11 success: 1
1420
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1421
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1422
AND f_charbig = '####updated per insert trigger####';
1423
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1425
SET new.f_int1 = @my_max1 + @counter,
1426
new.f_int2 = @my_min2 - @counter,
1427
new.f_charbig = '####updated per insert trigger####';
1428
SET @counter = @counter + 1;
1431
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1432
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1433
SELECT CAST(f_int1 AS CHAR),
1434
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1435
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1439
# check trigger-12 success: 1
1441
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1442
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1443
AND f_charbig = '####updated per insert trigger####';
1445
Table Op Msg_type Msg_text
1446
test.t1 analyze status OK
1447
CHECK TABLE t1 EXTENDED;
1448
Table Op Msg_type Msg_text
1449
test.t1 check status OK
1450
CHECKSUM TABLE t1 EXTENDED;
1452
test.t1 <some_value>
1454
Table Op Msg_type Msg_text
1455
test.t1 optimize status OK
1456
# check layout success: 1
1457
REPAIR TABLE t1 EXTENDED;
1458
Table Op Msg_type Msg_text
1459
test.t1 repair status OK
1460
# check layout success: 1
1463
# check TRUNCATE success: 1
1464
# check layout success: 1
1465
# End usability test (inc/partition_check.inc)
1472
f_charbig VARCHAR(1000)
1475
PARTITION BY RANGE(f_int1)
1476
(PARTITION parta VALUES LESS THAN (0),
1477
PARTITION partb VALUES LESS THAN (5),
1478
PARTITION partc VALUES LESS THAN (10),
1479
PARTITION partd VALUES LESS THAN (10 + 5),
1480
PARTITION parte VALUES LESS THAN (20),
1481
PARTITION partf VALUES LESS THAN (2147483646));
1482
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1483
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
1484
# Start usability test (inc/partition_check.inc)
1486
SHOW CREATE TABLE t1;
1488
t1 CREATE TABLE `t1` (
1489
`f_int1` int(11) DEFAULT NULL,
1490
`f_int2` int(11) DEFAULT NULL,
1491
`f_char1` char(20) DEFAULT NULL,
1492
`f_char2` char(20) DEFAULT NULL,
1493
`f_charbig` varchar(1000) DEFAULT NULL
1494
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1495
/*!50100 PARTITION BY RANGE (f_int1)
1496
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
1497
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
1498
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
1499
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
1500
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
1501
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
1519
# check prerequisites-1 success: 1
1520
# check COUNT(*) success: 1
1521
# check MIN/MAX(f_int1) success: 1
1522
# check MIN/MAX(f_int2) success: 1
1523
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1524
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1525
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1526
WHERE f_int1 IN (2,3);
1527
# check prerequisites-3 success: 1
1528
DELETE FROM t1 WHERE f_charbig = 'delete me';
1529
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1530
# check read via f_int1 success: 1
1531
# check read via f_int2 success: 1
1533
# check multiple-1 success: 1
1534
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1536
# check multiple-2 success: 1
1537
INSERT INTO t1 SELECT * FROM t0_template
1538
WHERE MOD(f_int1,3) = 0;
1540
# check multiple-3 success: 1
1541
UPDATE t1 SET f_int1 = f_int1 + @max_row
1542
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1543
AND @max_row_div2 + @max_row_div4;
1545
# check multiple-4 success: 1
1547
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1548
AND @max_row_div2 + @max_row_div4 + @max_row;
1550
# check multiple-5 success: 1
1551
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1553
SET f_int1 = @cur_value , f_int2 = @cur_value,
1554
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1555
f_charbig = '#SINGLE#';
1557
# check single-1 success: 1
1558
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1560
SET f_int1 = @cur_value , f_int2 = @cur_value,
1561
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1562
f_charbig = '#SINGLE#';
1564
# check single-2 success: 1
1565
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1566
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1567
UPDATE t1 SET f_int1 = @cur_value2
1568
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1570
# check single-3 success: 1
1571
SET @cur_value1= -1;
1572
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1573
UPDATE t1 SET f_int1 = @cur_value1
1574
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1576
# check single-4 success: 1
1577
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1578
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1580
# check single-5 success: 1
1581
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1583
# check single-6 success: 1
1584
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1585
ERROR HY000: Table has no partition for value 2147483647
1586
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1587
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1588
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1589
f_charbig = '#NULL#';
1591
SET f_int1 = NULL , f_int2 = -@max_row,
1592
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1593
f_charbig = '#NULL#';
1594
# check null success: 1
1596
# check null-1 success: 1
1597
UPDATE t1 SET f_int1 = -@max_row
1598
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1599
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1601
# check null-2 success: 1
1602
UPDATE t1 SET f_int1 = NULL
1603
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1604
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1606
# check null-3 success: 1
1608
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1609
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1611
# check null-4 success: 1
1613
WHERE f_int1 = 0 AND f_int2 = 0
1614
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1615
AND f_charbig = '#NULL#';
1617
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1618
SELECT f_int1, f_int1, '', '', 'was inserted'
1619
FROM t0_template source_tab
1620
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1622
# check transactions-1 success: 1
1625
# check transactions-2 success: 1
1628
# check transactions-3 success: 1
1629
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1633
# check transactions-4 success: 1
1634
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1635
SELECT f_int1, f_int1, '', '', 'was inserted'
1636
FROM t0_template source_tab
1637
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1639
# check transactions-5 success: 1
1642
Warning 1196 Some non-transactional changed tables couldn't be rolled back
1644
# check transactions-6 success: 1
1645
# INFO: Storage engine used for t1 seems to be not transactional.
1648
# check transactions-7 success: 1
1649
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1651
SET @@session.sql_mode = 'traditional';
1652
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1653
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1654
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1655
'', '', 'was inserted' FROM t0_template
1656
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1657
ERROR 22012: Division by 0
1660
# check transactions-8 success: 1
1661
# INFO: Storage engine used for t1 seems to be unable to revert
1662
# changes made by the failing statement.
1663
SET @@session.sql_mode = '';
1665
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1667
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1669
# check special-1 success: 1
1670
UPDATE t1 SET f_charbig = '';
1672
# check special-2 success: 1
1673
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1674
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1675
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1676
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1677
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1678
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1679
'just inserted' FROM t0_template
1680
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1681
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1683
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1684
f_charbig = 'updated by trigger'
1685
WHERE f_int1 = new.f_int1;
1687
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1688
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1689
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1691
# check trigger-1 success: 1
1693
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1694
f_int2 = CAST(f_char1 AS SIGNED INT),
1695
f_charbig = 'just inserted'
1696
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1698
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1699
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1700
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1701
'just inserted' FROM t0_template
1702
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1703
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1705
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1706
f_charbig = 'updated by trigger'
1707
WHERE f_int1 = new.f_int1;
1709
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1710
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1711
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1713
# check trigger-2 success: 1
1715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1716
f_int2 = CAST(f_char1 AS SIGNED INT),
1717
f_charbig = 'just inserted'
1718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1723
'just inserted' FROM t0_template
1724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1725
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1728
f_charbig = 'updated by trigger'
1729
WHERE f_int1 = new.f_int1;
1731
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1734
# check trigger-3 success: 1
1736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1737
f_int2 = CAST(f_char1 AS SIGNED INT),
1738
f_charbig = 'just inserted'
1739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1742
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1743
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1744
'just inserted' FROM t0_template
1745
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1746
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1748
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1749
f_charbig = 'updated by trigger'
1750
WHERE f_int1 = - old.f_int1;
1752
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1753
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1755
# check trigger-4 success: 1
1757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1758
f_int2 = CAST(f_char1 AS SIGNED INT),
1759
f_charbig = 'just inserted'
1760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1765
'just inserted' FROM t0_template
1766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1767
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1770
f_charbig = 'updated by trigger'
1771
WHERE f_int1 = new.f_int1;
1773
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1774
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1776
# check trigger-5 success: 1
1778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1779
f_int2 = CAST(f_char1 AS SIGNED INT),
1780
f_charbig = 'just inserted'
1781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1783
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1785
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1786
'just inserted' FROM t0_template
1787
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1788
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1790
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1791
f_charbig = 'updated by trigger'
1792
WHERE f_int1 = - old.f_int1;
1794
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1795
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1797
# check trigger-6 success: 1
1799
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1800
f_int2 = CAST(f_char1 AS SIGNED INT),
1801
f_charbig = 'just inserted'
1802
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1804
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1805
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1806
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1807
'just inserted' FROM t0_template
1808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1809
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1811
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1812
f_charbig = 'updated by trigger'
1813
WHERE f_int1 = - old.f_int1;
1816
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1818
# check trigger-7 success: 1
1820
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1821
f_int2 = CAST(f_char1 AS SIGNED INT),
1822
f_charbig = 'just inserted'
1823
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1825
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1826
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1827
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1828
'just inserted' FROM t0_template
1829
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1830
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1832
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1833
f_charbig = 'updated by trigger'
1834
WHERE f_int1 = - old.f_int1;
1837
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1839
# check trigger-8 success: 1
1841
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1842
f_int2 = CAST(f_char1 AS SIGNED INT),
1843
f_charbig = 'just inserted'
1844
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1846
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1848
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1849
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1851
SET new.f_int1 = old.f_int1 + @max_row,
1852
new.f_int2 = old.f_int2 - @max_row,
1853
new.f_charbig = '####updated per update trigger####';
1856
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1857
f_charbig = '####updated per update statement itself####';
1859
# check trigger-9 success: 1
1861
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1862
f_int2 = CAST(f_char1 AS SIGNED INT),
1863
f_charbig = CONCAT('===',f_char1,'===');
1864
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1866
SET new.f_int1 = new.f_int1 + @max_row,
1867
new.f_int2 = new.f_int2 - @max_row,
1868
new.f_charbig = '####updated per update trigger####';
1871
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1872
f_charbig = '####updated per update statement itself####';
1874
# check trigger-10 success: 1
1876
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1877
f_int2 = CAST(f_char1 AS SIGNED INT),
1878
f_charbig = CONCAT('===',f_char1,'===');
1879
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1881
SET new.f_int1 = @my_max1 + @counter,
1882
new.f_int2 = @my_min2 - @counter,
1883
new.f_charbig = '####updated per insert trigger####';
1884
SET @counter = @counter + 1;
1887
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1888
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1889
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1890
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1891
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1895
# check trigger-11 success: 1
1897
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1898
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1899
AND f_charbig = '####updated per insert trigger####';
1900
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1902
SET new.f_int1 = @my_max1 + @counter,
1903
new.f_int2 = @my_min2 - @counter,
1904
new.f_charbig = '####updated per insert trigger####';
1905
SET @counter = @counter + 1;
1908
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1909
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1910
SELECT CAST(f_int1 AS CHAR),
1911
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1912
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1916
# check trigger-12 success: 1
1918
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1919
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1920
AND f_charbig = '####updated per insert trigger####';
1922
Table Op Msg_type Msg_text
1923
test.t1 analyze status OK
1924
CHECK TABLE t1 EXTENDED;
1925
Table Op Msg_type Msg_text
1926
test.t1 check status OK
1927
CHECKSUM TABLE t1 EXTENDED;
1929
test.t1 <some_value>
1931
Table Op Msg_type Msg_text
1932
test.t1 optimize status OK
1933
# check layout success: 1
1934
REPAIR TABLE t1 EXTENDED;
1935
Table Op Msg_type Msg_text
1936
test.t1 repair status OK
1937
# check layout success: 1
1940
# check TRUNCATE success: 1
1941
# check layout success: 1
1942
# End usability test (inc/partition_check.inc)
1949
f_charbig VARCHAR(1000)
1952
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
1953
(PARTITION parta VALUES LESS THAN (0),
1954
PARTITION partb VALUES LESS THAN (5),
1955
PARTITION partc VALUES LESS THAN (10),
1956
PARTITION partd VALUES LESS THAN (2147483646));
1957
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1958
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
1959
# Start usability test (inc/partition_check.inc)
1961
SHOW CREATE TABLE t1;
1963
t1 CREATE TABLE `t1` (
1964
`f_int1` int(11) DEFAULT NULL,
1965
`f_int2` int(11) DEFAULT NULL,
1966
`f_char1` char(20) DEFAULT NULL,
1967
`f_char2` char(20) DEFAULT NULL,
1968
`f_charbig` varchar(1000) DEFAULT NULL
1969
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1970
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
1971
SUBPARTITION BY HASH (f_int1)
1973
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
1974
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
1975
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
1976
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
1979
t1#P#parta#SP#partasp0.MYD
1980
t1#P#parta#SP#partasp0.MYI
1981
t1#P#parta#SP#partasp1.MYD
1982
t1#P#parta#SP#partasp1.MYI
1983
t1#P#partb#SP#partbsp0.MYD
1984
t1#P#partb#SP#partbsp0.MYI
1985
t1#P#partb#SP#partbsp1.MYD
1986
t1#P#partb#SP#partbsp1.MYI
1987
t1#P#partc#SP#partcsp0.MYD
1988
t1#P#partc#SP#partcsp0.MYI
1989
t1#P#partc#SP#partcsp1.MYD
1990
t1#P#partc#SP#partcsp1.MYI
1991
t1#P#partd#SP#partdsp0.MYD
1992
t1#P#partd#SP#partdsp0.MYI
1993
t1#P#partd#SP#partdsp1.MYD
1994
t1#P#partd#SP#partdsp1.MYI
1998
# check prerequisites-1 success: 1
1999
# check COUNT(*) success: 1
2000
# check MIN/MAX(f_int1) success: 1
2001
# check MIN/MAX(f_int2) success: 1
2002
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2003
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2004
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2005
WHERE f_int1 IN (2,3);
2006
# check prerequisites-3 success: 1
2007
DELETE FROM t1 WHERE f_charbig = 'delete me';
2008
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2009
# check read via f_int1 success: 1
2010
# check read via f_int2 success: 1
2012
# check multiple-1 success: 1
2013
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2015
# check multiple-2 success: 1
2016
INSERT INTO t1 SELECT * FROM t0_template
2017
WHERE MOD(f_int1,3) = 0;
2019
# check multiple-3 success: 1
2020
UPDATE t1 SET f_int1 = f_int1 + @max_row
2021
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2022
AND @max_row_div2 + @max_row_div4;
2024
# check multiple-4 success: 1
2026
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2027
AND @max_row_div2 + @max_row_div4 + @max_row;
2029
# check multiple-5 success: 1
2030
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2032
SET f_int1 = @cur_value , f_int2 = @cur_value,
2033
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2034
f_charbig = '#SINGLE#';
2036
# check single-1 success: 1
2037
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2039
SET f_int1 = @cur_value , f_int2 = @cur_value,
2040
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2041
f_charbig = '#SINGLE#';
2043
# check single-2 success: 1
2044
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2045
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2046
UPDATE t1 SET f_int1 = @cur_value2
2047
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2049
# check single-3 success: 1
2050
SET @cur_value1= -1;
2051
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2052
UPDATE t1 SET f_int1 = @cur_value1
2053
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2055
# check single-4 success: 1
2056
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2057
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2059
# check single-5 success: 1
2060
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2062
# check single-6 success: 1
2063
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2065
# check single-7 success: 1
2066
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2067
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2068
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2069
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2070
f_charbig = '#NULL#';
2072
SET f_int1 = NULL , f_int2 = -@max_row,
2073
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2074
f_charbig = '#NULL#';
2075
# check null success: 1
2077
# check null-1 success: 1
2078
UPDATE t1 SET f_int1 = -@max_row
2079
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2080
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2082
# check null-2 success: 1
2083
UPDATE t1 SET f_int1 = NULL
2084
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2085
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2087
# check null-3 success: 1
2089
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2090
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2092
# check null-4 success: 1
2094
WHERE f_int1 = 0 AND f_int2 = 0
2095
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2096
AND f_charbig = '#NULL#';
2098
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2099
SELECT f_int1, f_int1, '', '', 'was inserted'
2100
FROM t0_template source_tab
2101
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2103
# check transactions-1 success: 1
2106
# check transactions-2 success: 1
2109
# check transactions-3 success: 1
2110
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2114
# check transactions-4 success: 1
2115
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2116
SELECT f_int1, f_int1, '', '', 'was inserted'
2117
FROM t0_template source_tab
2118
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2120
# check transactions-5 success: 1
2123
Warning 1196 Some non-transactional changed tables couldn't be rolled back
2125
# check transactions-6 success: 1
2126
# INFO: Storage engine used for t1 seems to be not transactional.
2129
# check transactions-7 success: 1
2130
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2132
SET @@session.sql_mode = 'traditional';
2133
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2134
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2135
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2136
'', '', 'was inserted' FROM t0_template
2137
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2138
ERROR 22012: Division by 0
2141
# check transactions-8 success: 1
2142
# INFO: Storage engine used for t1 seems to be unable to revert
2143
# changes made by the failing statement.
2144
SET @@session.sql_mode = '';
2146
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2148
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2150
# check special-1 success: 1
2151
UPDATE t1 SET f_charbig = '';
2153
# check special-2 success: 1
2154
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2155
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2156
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2157
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2158
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2159
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2160
'just inserted' FROM t0_template
2161
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2162
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2164
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2165
f_charbig = 'updated by trigger'
2166
WHERE f_int1 = new.f_int1;
2168
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2169
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2170
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2172
# check trigger-1 success: 1
2174
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2175
f_int2 = CAST(f_char1 AS SIGNED INT),
2176
f_charbig = 'just inserted'
2177
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2179
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2180
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2181
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2182
'just inserted' FROM t0_template
2183
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2184
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2186
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2187
f_charbig = 'updated by trigger'
2188
WHERE f_int1 = new.f_int1;
2190
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2191
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2192
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2194
# check trigger-2 success: 1
2196
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2197
f_int2 = CAST(f_char1 AS SIGNED INT),
2198
f_charbig = 'just inserted'
2199
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2201
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2202
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2203
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2204
'just inserted' FROM t0_template
2205
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2206
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2208
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2209
f_charbig = 'updated by trigger'
2210
WHERE f_int1 = new.f_int1;
2212
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2213
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2215
# check trigger-3 success: 1
2217
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2218
f_int2 = CAST(f_char1 AS SIGNED INT),
2219
f_charbig = 'just inserted'
2220
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2222
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2223
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2224
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2225
'just inserted' FROM t0_template
2226
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2227
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2229
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2230
f_charbig = 'updated by trigger'
2231
WHERE f_int1 = - old.f_int1;
2233
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2234
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2236
# check trigger-4 success: 1
2238
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2239
f_int2 = CAST(f_char1 AS SIGNED INT),
2240
f_charbig = 'just inserted'
2241
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2243
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2244
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2245
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2246
'just inserted' FROM t0_template
2247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2248
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2250
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2251
f_charbig = 'updated by trigger'
2252
WHERE f_int1 = new.f_int1;
2254
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2255
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2257
# check trigger-5 success: 1
2259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2260
f_int2 = CAST(f_char1 AS SIGNED INT),
2261
f_charbig = 'just inserted'
2262
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2264
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2265
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2266
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2267
'just inserted' FROM t0_template
2268
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2269
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2271
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2272
f_charbig = 'updated by trigger'
2273
WHERE f_int1 = - old.f_int1;
2275
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2276
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2278
# check trigger-6 success: 1
2280
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2281
f_int2 = CAST(f_char1 AS SIGNED INT),
2282
f_charbig = 'just inserted'
2283
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2285
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2286
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2287
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2288
'just inserted' FROM t0_template
2289
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2290
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2292
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2293
f_charbig = 'updated by trigger'
2294
WHERE f_int1 = - old.f_int1;
2297
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2299
# check trigger-7 success: 1
2301
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2302
f_int2 = CAST(f_char1 AS SIGNED INT),
2303
f_charbig = 'just inserted'
2304
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2306
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2307
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2308
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2309
'just inserted' FROM t0_template
2310
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2311
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2313
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2314
f_charbig = 'updated by trigger'
2315
WHERE f_int1 = - old.f_int1;
2318
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2320
# check trigger-8 success: 1
2322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2323
f_int2 = CAST(f_char1 AS SIGNED INT),
2324
f_charbig = 'just inserted'
2325
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2327
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2329
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2330
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2332
SET new.f_int1 = old.f_int1 + @max_row,
2333
new.f_int2 = old.f_int2 - @max_row,
2334
new.f_charbig = '####updated per update trigger####';
2337
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2338
f_charbig = '####updated per update statement itself####';
2340
# check trigger-9 success: 1
2342
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2343
f_int2 = CAST(f_char1 AS SIGNED INT),
2344
f_charbig = CONCAT('===',f_char1,'===');
2345
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2347
SET new.f_int1 = new.f_int1 + @max_row,
2348
new.f_int2 = new.f_int2 - @max_row,
2349
new.f_charbig = '####updated per update trigger####';
2352
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2353
f_charbig = '####updated per update statement itself####';
2355
# check trigger-10 success: 1
2357
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2358
f_int2 = CAST(f_char1 AS SIGNED INT),
2359
f_charbig = CONCAT('===',f_char1,'===');
2360
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2362
SET new.f_int1 = @my_max1 + @counter,
2363
new.f_int2 = @my_min2 - @counter,
2364
new.f_charbig = '####updated per insert trigger####';
2365
SET @counter = @counter + 1;
2368
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2369
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2370
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2371
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2372
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2376
# check trigger-11 success: 1
2378
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2379
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2380
AND f_charbig = '####updated per insert trigger####';
2381
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2383
SET new.f_int1 = @my_max1 + @counter,
2384
new.f_int2 = @my_min2 - @counter,
2385
new.f_charbig = '####updated per insert trigger####';
2386
SET @counter = @counter + 1;
2389
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2390
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2391
SELECT CAST(f_int1 AS CHAR),
2392
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2393
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2397
# check trigger-12 success: 1
2399
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2400
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2401
AND f_charbig = '####updated per insert trigger####';
2403
Table Op Msg_type Msg_text
2404
test.t1 analyze status OK
2405
CHECK TABLE t1 EXTENDED;
2406
Table Op Msg_type Msg_text
2407
test.t1 check status OK
2408
CHECKSUM TABLE t1 EXTENDED;
2410
test.t1 <some_value>
2412
Table Op Msg_type Msg_text
2413
test.t1 optimize status OK
2414
# check layout success: 1
2415
REPAIR TABLE t1 EXTENDED;
2416
Table Op Msg_type Msg_text
2417
test.t1 repair status OK
2418
# check layout success: 1
2421
# check TRUNCATE success: 1
2422
# check layout success: 1
2423
# End usability test (inc/partition_check.inc)
2430
f_charbig VARCHAR(1000)
2433
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
2434
(PARTITION part1 VALUES LESS THAN (0)
2435
(SUBPARTITION subpart11, SUBPARTITION subpart12),
2436
PARTITION part2 VALUES LESS THAN (5)
2437
(SUBPARTITION subpart21, SUBPARTITION subpart22),
2438
PARTITION part3 VALUES LESS THAN (10)
2439
(SUBPARTITION subpart31, SUBPARTITION subpart32),
2440
PARTITION part4 VALUES LESS THAN (2147483646)
2441
(SUBPARTITION subpart41, SUBPARTITION subpart42));
2442
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2443
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
2444
# Start usability test (inc/partition_check.inc)
2446
SHOW CREATE TABLE t1;
2448
t1 CREATE TABLE `t1` (
2449
`f_int1` int(11) DEFAULT NULL,
2450
`f_int2` int(11) DEFAULT NULL,
2451
`f_char1` char(20) DEFAULT NULL,
2452
`f_char2` char(20) DEFAULT NULL,
2453
`f_charbig` varchar(1000) DEFAULT NULL
2454
) ENGINE=MyISAM DEFAULT CHARSET=latin1
2455
/*!50100 PARTITION BY RANGE (f_int1)
2456
SUBPARTITION BY KEY (f_int1)
2457
(PARTITION part1 VALUES LESS THAN (0)
2458
(SUBPARTITION subpart11 ENGINE = MyISAM,
2459
SUBPARTITION subpart12 ENGINE = MyISAM),
2460
PARTITION part2 VALUES LESS THAN (5)
2461
(SUBPARTITION subpart21 ENGINE = MyISAM,
2462
SUBPARTITION subpart22 ENGINE = MyISAM),
2463
PARTITION part3 VALUES LESS THAN (10)
2464
(SUBPARTITION subpart31 ENGINE = MyISAM,
2465
SUBPARTITION subpart32 ENGINE = MyISAM),
2466
PARTITION part4 VALUES LESS THAN (2147483646)
2467
(SUBPARTITION subpart41 ENGINE = MyISAM,
2468
SUBPARTITION subpart42 ENGINE = MyISAM)) */
2471
t1#P#part1#SP#subpart11.MYD
2472
t1#P#part1#SP#subpart11.MYI
2473
t1#P#part1#SP#subpart12.MYD
2474
t1#P#part1#SP#subpart12.MYI
2475
t1#P#part2#SP#subpart21.MYD
2476
t1#P#part2#SP#subpart21.MYI
2477
t1#P#part2#SP#subpart22.MYD
2478
t1#P#part2#SP#subpart22.MYI
2479
t1#P#part3#SP#subpart31.MYD
2480
t1#P#part3#SP#subpart31.MYI
2481
t1#P#part3#SP#subpart32.MYD
2482
t1#P#part3#SP#subpart32.MYI
2483
t1#P#part4#SP#subpart41.MYD
2484
t1#P#part4#SP#subpart41.MYI
2485
t1#P#part4#SP#subpart42.MYD
2486
t1#P#part4#SP#subpart42.MYI
2490
# check prerequisites-1 success: 1
2491
# check COUNT(*) success: 1
2492
# check MIN/MAX(f_int1) success: 1
2493
# check MIN/MAX(f_int2) success: 1
2494
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2495
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2496
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2497
WHERE f_int1 IN (2,3);
2498
# check prerequisites-3 success: 1
2499
DELETE FROM t1 WHERE f_charbig = 'delete me';
2500
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2501
# check read via f_int1 success: 1
2502
# check read via f_int2 success: 1
2504
# check multiple-1 success: 1
2505
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2507
# check multiple-2 success: 1
2508
INSERT INTO t1 SELECT * FROM t0_template
2509
WHERE MOD(f_int1,3) = 0;
2511
# check multiple-3 success: 1
2512
UPDATE t1 SET f_int1 = f_int1 + @max_row
2513
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2514
AND @max_row_div2 + @max_row_div4;
2516
# check multiple-4 success: 1
2518
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2519
AND @max_row_div2 + @max_row_div4 + @max_row;
2521
# check multiple-5 success: 1
2522
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2524
SET f_int1 = @cur_value , f_int2 = @cur_value,
2525
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2526
f_charbig = '#SINGLE#';
2528
# check single-1 success: 1
2529
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2531
SET f_int1 = @cur_value , f_int2 = @cur_value,
2532
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2533
f_charbig = '#SINGLE#';
2535
# check single-2 success: 1
2536
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2537
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2538
UPDATE t1 SET f_int1 = @cur_value2
2539
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2541
# check single-3 success: 1
2542
SET @cur_value1= -1;
2543
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2544
UPDATE t1 SET f_int1 = @cur_value1
2545
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2547
# check single-4 success: 1
2548
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2549
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2551
# check single-5 success: 1
2552
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2554
# check single-6 success: 1
2555
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2556
ERROR HY000: Table has no partition for value 2147483647
2557
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2558
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2559
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2560
f_charbig = '#NULL#';
2562
SET f_int1 = NULL , f_int2 = -@max_row,
2563
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2564
f_charbig = '#NULL#';
2565
# check null success: 1
2567
# check null-1 success: 1
2568
UPDATE t1 SET f_int1 = -@max_row
2569
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2570
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2572
# check null-2 success: 1
2573
UPDATE t1 SET f_int1 = NULL
2574
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2575
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2577
# check null-3 success: 1
2579
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2580
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2582
# check null-4 success: 1
2584
WHERE f_int1 = 0 AND f_int2 = 0
2585
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2586
AND f_charbig = '#NULL#';
2588
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2589
SELECT f_int1, f_int1, '', '', 'was inserted'
2590
FROM t0_template source_tab
2591
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2593
# check transactions-1 success: 1
2596
# check transactions-2 success: 1
2599
# check transactions-3 success: 1
2600
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2604
# check transactions-4 success: 1
2605
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2606
SELECT f_int1, f_int1, '', '', 'was inserted'
2607
FROM t0_template source_tab
2608
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2610
# check transactions-5 success: 1
2613
Warning 1196 Some non-transactional changed tables couldn't be rolled back
2615
# check transactions-6 success: 1
2616
# INFO: Storage engine used for t1 seems to be not transactional.
2619
# check transactions-7 success: 1
2620
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2622
SET @@session.sql_mode = 'traditional';
2623
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2624
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2625
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2626
'', '', 'was inserted' FROM t0_template
2627
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2628
ERROR 22012: Division by 0
2631
# check transactions-8 success: 1
2632
# INFO: Storage engine used for t1 seems to be unable to revert
2633
# changes made by the failing statement.
2634
SET @@session.sql_mode = '';
2636
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2638
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2640
# check special-1 success: 1
2641
UPDATE t1 SET f_charbig = '';
2643
# check special-2 success: 1
2644
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2645
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2646
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2647
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2648
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2649
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2650
'just inserted' FROM t0_template
2651
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2652
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2654
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2655
f_charbig = 'updated by trigger'
2656
WHERE f_int1 = new.f_int1;
2658
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2659
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2660
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2662
# check trigger-1 success: 1
2664
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2665
f_int2 = CAST(f_char1 AS SIGNED INT),
2666
f_charbig = 'just inserted'
2667
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2669
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2670
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2671
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2672
'just inserted' FROM t0_template
2673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2674
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2676
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2677
f_charbig = 'updated by trigger'
2678
WHERE f_int1 = new.f_int1;
2680
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2681
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2682
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2684
# check trigger-2 success: 1
2686
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2687
f_int2 = CAST(f_char1 AS SIGNED INT),
2688
f_charbig = 'just inserted'
2689
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2691
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2692
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2693
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2694
'just inserted' FROM t0_template
2695
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2696
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2698
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2699
f_charbig = 'updated by trigger'
2700
WHERE f_int1 = new.f_int1;
2702
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2703
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2705
# check trigger-3 success: 1
2707
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2708
f_int2 = CAST(f_char1 AS SIGNED INT),
2709
f_charbig = 'just inserted'
2710
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2712
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2713
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2714
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2715
'just inserted' FROM t0_template
2716
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2717
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2719
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2720
f_charbig = 'updated by trigger'
2721
WHERE f_int1 = - old.f_int1;
2723
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2724
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2726
# check trigger-4 success: 1
2728
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2729
f_int2 = CAST(f_char1 AS SIGNED INT),
2730
f_charbig = 'just inserted'
2731
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2733
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2734
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2735
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2736
'just inserted' FROM t0_template
2737
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2738
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2740
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2741
f_charbig = 'updated by trigger'
2742
WHERE f_int1 = new.f_int1;
2744
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2745
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2747
# check trigger-5 success: 1
2749
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2750
f_int2 = CAST(f_char1 AS SIGNED INT),
2751
f_charbig = 'just inserted'
2752
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2754
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2755
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2756
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2757
'just inserted' FROM t0_template
2758
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2759
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2761
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2762
f_charbig = 'updated by trigger'
2763
WHERE f_int1 = - old.f_int1;
2765
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2766
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2768
# check trigger-6 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 = 'just inserted'
2773
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2775
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2776
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2777
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2778
'just inserted' FROM t0_template
2779
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2780
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2782
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2783
f_charbig = 'updated by trigger'
2784
WHERE f_int1 = - old.f_int1;
2787
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2789
# check trigger-7 success: 1
2791
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2792
f_int2 = CAST(f_char1 AS SIGNED INT),
2793
f_charbig = 'just inserted'
2794
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2796
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2797
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2798
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2799
'just inserted' FROM t0_template
2800
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2801
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2803
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2804
f_charbig = 'updated by trigger'
2805
WHERE f_int1 = - old.f_int1;
2808
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2810
# check trigger-8 success: 1
2812
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2813
f_int2 = CAST(f_char1 AS SIGNED INT),
2814
f_charbig = 'just inserted'
2815
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2817
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2819
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2820
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2822
SET new.f_int1 = old.f_int1 + @max_row,
2823
new.f_int2 = old.f_int2 - @max_row,
2824
new.f_charbig = '####updated per update trigger####';
2827
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2828
f_charbig = '####updated per update statement itself####';
2830
# check trigger-9 success: 1
2832
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2833
f_int2 = CAST(f_char1 AS SIGNED INT),
2834
f_charbig = CONCAT('===',f_char1,'===');
2835
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2837
SET new.f_int1 = new.f_int1 + @max_row,
2838
new.f_int2 = new.f_int2 - @max_row,
2839
new.f_charbig = '####updated per update trigger####';
2842
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2843
f_charbig = '####updated per update statement itself####';
2845
# check trigger-10 success: 1
2847
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2848
f_int2 = CAST(f_char1 AS SIGNED INT),
2849
f_charbig = CONCAT('===',f_char1,'===');
2850
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2852
SET new.f_int1 = @my_max1 + @counter,
2853
new.f_int2 = @my_min2 - @counter,
2854
new.f_charbig = '####updated per insert trigger####';
2855
SET @counter = @counter + 1;
2858
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2859
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2860
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2861
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2862
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2866
# check trigger-11 success: 1
2868
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2869
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2870
AND f_charbig = '####updated per insert trigger####';
2871
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2873
SET new.f_int1 = @my_max1 + @counter,
2874
new.f_int2 = @my_min2 - @counter,
2875
new.f_charbig = '####updated per insert trigger####';
2876
SET @counter = @counter + 1;
2879
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2880
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2881
SELECT CAST(f_int1 AS CHAR),
2882
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2883
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2887
# check trigger-12 success: 1
2889
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2890
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2891
AND f_charbig = '####updated per insert trigger####';
2893
Table Op Msg_type Msg_text
2894
test.t1 analyze status OK
2895
CHECK TABLE t1 EXTENDED;
2896
Table Op Msg_type Msg_text
2897
test.t1 check status OK
2898
CHECKSUM TABLE t1 EXTENDED;
2900
test.t1 <some_value>
2902
Table Op Msg_type Msg_text
2903
test.t1 optimize status OK
2904
# check layout success: 1
2905
REPAIR TABLE t1 EXTENDED;
2906
Table Op Msg_type Msg_text
2907
test.t1 repair status OK
2908
# check layout success: 1
2911
# check TRUNCATE success: 1
2912
# check layout success: 1
2913
# End usability test (inc/partition_check.inc)
2920
f_charbig VARCHAR(1000)
2923
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
2924
(PARTITION part1 VALUES IN (0)
2927
PARTITION part2 VALUES IN (1)
2930
PARTITION part3 VALUES IN (2)
2933
PARTITION part4 VALUES IN (NULL)
2935
SUBPARTITION sp42));
2936
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2937
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
2938
# Start usability test (inc/partition_check.inc)
2940
SHOW CREATE TABLE t1;
2942
t1 CREATE TABLE `t1` (
2943
`f_int1` int(11) DEFAULT NULL,
2944
`f_int2` int(11) DEFAULT NULL,
2945
`f_char1` char(20) DEFAULT NULL,
2946
`f_char2` char(20) DEFAULT NULL,
2947
`f_charbig` varchar(1000) DEFAULT NULL
2948
) ENGINE=MyISAM DEFAULT CHARSET=latin1
2949
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
2950
SUBPARTITION BY HASH (f_int1 + 1)
2951
(PARTITION part1 VALUES IN (0)
2952
(SUBPARTITION sp11 ENGINE = MyISAM,
2953
SUBPARTITION sp12 ENGINE = MyISAM),
2954
PARTITION part2 VALUES IN (1)
2955
(SUBPARTITION sp21 ENGINE = MyISAM,
2956
SUBPARTITION sp22 ENGINE = MyISAM),
2957
PARTITION part3 VALUES IN (2)
2958
(SUBPARTITION sp31 ENGINE = MyISAM,
2959
SUBPARTITION sp32 ENGINE = MyISAM),
2960
PARTITION part4 VALUES IN (NULL)
2961
(SUBPARTITION sp41 ENGINE = MyISAM,
2962
SUBPARTITION sp42 ENGINE = MyISAM)) */
2965
t1#P#part1#SP#sp11.MYD
2966
t1#P#part1#SP#sp11.MYI
2967
t1#P#part1#SP#sp12.MYD
2968
t1#P#part1#SP#sp12.MYI
2969
t1#P#part2#SP#sp21.MYD
2970
t1#P#part2#SP#sp21.MYI
2971
t1#P#part2#SP#sp22.MYD
2972
t1#P#part2#SP#sp22.MYI
2973
t1#P#part3#SP#sp31.MYD
2974
t1#P#part3#SP#sp31.MYI
2975
t1#P#part3#SP#sp32.MYD
2976
t1#P#part3#SP#sp32.MYI
2977
t1#P#part4#SP#sp41.MYD
2978
t1#P#part4#SP#sp41.MYI
2979
t1#P#part4#SP#sp42.MYD
2980
t1#P#part4#SP#sp42.MYI
2984
# check prerequisites-1 success: 1
2985
# check COUNT(*) success: 1
2986
# check MIN/MAX(f_int1) success: 1
2987
# check MIN/MAX(f_int2) success: 1
2988
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2989
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2990
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2991
WHERE f_int1 IN (2,3);
2992
# check prerequisites-3 success: 1
2993
DELETE FROM t1 WHERE f_charbig = 'delete me';
2994
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2995
# check read via f_int1 success: 1
2996
# check read via f_int2 success: 1
2998
# check multiple-1 success: 1
2999
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3001
# check multiple-2 success: 1
3002
INSERT INTO t1 SELECT * FROM t0_template
3003
WHERE MOD(f_int1,3) = 0;
3005
# check multiple-3 success: 1
3006
UPDATE t1 SET f_int1 = f_int1 + @max_row
3007
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3008
AND @max_row_div2 + @max_row_div4;
3010
# check multiple-4 success: 1
3012
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3013
AND @max_row_div2 + @max_row_div4 + @max_row;
3015
# check multiple-5 success: 1
3016
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3018
SET f_int1 = @cur_value , f_int2 = @cur_value,
3019
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3020
f_charbig = '#SINGLE#';
3022
# check single-1 success: 1
3023
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3025
SET f_int1 = @cur_value , f_int2 = @cur_value,
3026
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3027
f_charbig = '#SINGLE#';
3029
# check single-2 success: 1
3030
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3031
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3032
UPDATE t1 SET f_int1 = @cur_value2
3033
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3035
# check single-3 success: 1
3036
SET @cur_value1= -1;
3037
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3038
UPDATE t1 SET f_int1 = @cur_value1
3039
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3041
# check single-4 success: 1
3042
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3043
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3045
# check single-5 success: 1
3046
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3048
# check single-6 success: 1
3049
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3051
# check single-7 success: 1
3052
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3053
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3054
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3055
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3056
f_charbig = '#NULL#';
3058
SET f_int1 = NULL , f_int2 = -@max_row,
3059
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3060
f_charbig = '#NULL#';
3061
# check null success: 1
3063
# check null-1 success: 1
3064
UPDATE t1 SET f_int1 = -@max_row
3065
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3066
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3068
# check null-2 success: 1
3069
UPDATE t1 SET f_int1 = NULL
3070
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3071
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3073
# check null-3 success: 1
3075
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3076
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3078
# check null-4 success: 1
3080
WHERE f_int1 = 0 AND f_int2 = 0
3081
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3082
AND f_charbig = '#NULL#';
3084
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3085
SELECT f_int1, f_int1, '', '', 'was inserted'
3086
FROM t0_template source_tab
3087
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3089
# check transactions-1 success: 1
3092
# check transactions-2 success: 1
3095
# check transactions-3 success: 1
3096
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3100
# check transactions-4 success: 1
3101
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3102
SELECT f_int1, f_int1, '', '', 'was inserted'
3103
FROM t0_template source_tab
3104
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3106
# check transactions-5 success: 1
3109
Warning 1196 Some non-transactional changed tables couldn't be rolled back
3111
# check transactions-6 success: 1
3112
# INFO: Storage engine used for t1 seems to be not transactional.
3115
# check transactions-7 success: 1
3116
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3118
SET @@session.sql_mode = 'traditional';
3119
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3120
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3121
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3122
'', '', 'was inserted' FROM t0_template
3123
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3124
ERROR 22012: Division by 0
3127
# check transactions-8 success: 1
3128
# INFO: Storage engine used for t1 seems to be unable to revert
3129
# changes made by the failing statement.
3130
SET @@session.sql_mode = '';
3132
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3134
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3136
# check special-1 success: 1
3137
UPDATE t1 SET f_charbig = '';
3139
# check special-2 success: 1
3140
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3141
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3142
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3143
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3144
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3145
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3146
'just inserted' FROM t0_template
3147
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3148
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3150
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3151
f_charbig = 'updated by trigger'
3152
WHERE f_int1 = new.f_int1;
3154
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3155
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3156
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3158
# check trigger-1 success: 1
3160
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3161
f_int2 = CAST(f_char1 AS SIGNED INT),
3162
f_charbig = 'just inserted'
3163
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3165
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3166
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3167
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3168
'just inserted' FROM t0_template
3169
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3170
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3172
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3173
f_charbig = 'updated by trigger'
3174
WHERE f_int1 = new.f_int1;
3176
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3177
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3178
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3180
# check trigger-2 success: 1
3182
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3183
f_int2 = CAST(f_char1 AS SIGNED INT),
3184
f_charbig = 'just inserted'
3185
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3187
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3188
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3189
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3190
'just inserted' FROM t0_template
3191
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3192
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3194
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3195
f_charbig = 'updated by trigger'
3196
WHERE f_int1 = new.f_int1;
3198
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3199
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3201
# check trigger-3 success: 1
3203
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3204
f_int2 = CAST(f_char1 AS SIGNED INT),
3205
f_charbig = 'just inserted'
3206
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3208
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3209
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3210
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3211
'just inserted' FROM t0_template
3212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3213
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3215
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3216
f_charbig = 'updated by trigger'
3217
WHERE f_int1 = - old.f_int1;
3219
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3220
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3222
# check trigger-4 success: 1
3224
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3225
f_int2 = CAST(f_char1 AS SIGNED INT),
3226
f_charbig = 'just inserted'
3227
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3229
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3230
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3231
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3232
'just inserted' FROM t0_template
3233
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3234
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3236
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3237
f_charbig = 'updated by trigger'
3238
WHERE f_int1 = new.f_int1;
3240
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3241
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3243
# check trigger-5 success: 1
3245
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3246
f_int2 = CAST(f_char1 AS SIGNED INT),
3247
f_charbig = 'just inserted'
3248
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3250
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3251
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3252
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3253
'just inserted' FROM t0_template
3254
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3255
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3257
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3258
f_charbig = 'updated by trigger'
3259
WHERE f_int1 = - old.f_int1;
3261
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3262
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3264
# check trigger-6 success: 1
3266
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3267
f_int2 = CAST(f_char1 AS SIGNED INT),
3268
f_charbig = 'just inserted'
3269
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3271
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3272
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3273
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3274
'just inserted' FROM t0_template
3275
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3276
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3278
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3279
f_charbig = 'updated by trigger'
3280
WHERE f_int1 = - old.f_int1;
3283
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3285
# check trigger-7 success: 1
3287
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3288
f_int2 = CAST(f_char1 AS SIGNED INT),
3289
f_charbig = 'just inserted'
3290
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3292
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3293
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3294
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3295
'just inserted' FROM t0_template
3296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3297
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3299
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3300
f_charbig = 'updated by trigger'
3301
WHERE f_int1 = - old.f_int1;
3304
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3306
# check trigger-8 success: 1
3308
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3309
f_int2 = CAST(f_char1 AS SIGNED INT),
3310
f_charbig = 'just inserted'
3311
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3313
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3315
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3316
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3318
SET new.f_int1 = old.f_int1 + @max_row,
3319
new.f_int2 = old.f_int2 - @max_row,
3320
new.f_charbig = '####updated per update trigger####';
3323
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3324
f_charbig = '####updated per update statement itself####';
3326
# check trigger-9 success: 1
3328
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3329
f_int2 = CAST(f_char1 AS SIGNED INT),
3330
f_charbig = CONCAT('===',f_char1,'===');
3331
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3333
SET new.f_int1 = new.f_int1 + @max_row,
3334
new.f_int2 = new.f_int2 - @max_row,
3335
new.f_charbig = '####updated per update trigger####';
3338
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3339
f_charbig = '####updated per update statement itself####';
3341
# check trigger-10 success: 1
3343
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3344
f_int2 = CAST(f_char1 AS SIGNED INT),
3345
f_charbig = CONCAT('===',f_char1,'===');
3346
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3348
SET new.f_int1 = @my_max1 + @counter,
3349
new.f_int2 = @my_min2 - @counter,
3350
new.f_charbig = '####updated per insert trigger####';
3351
SET @counter = @counter + 1;
3354
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3355
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3356
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3357
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3358
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3362
# check trigger-11 success: 1
3364
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3365
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3366
AND f_charbig = '####updated per insert trigger####';
3367
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3369
SET new.f_int1 = @my_max1 + @counter,
3370
new.f_int2 = @my_min2 - @counter,
3371
new.f_charbig = '####updated per insert trigger####';
3372
SET @counter = @counter + 1;
3375
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3376
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3377
SELECT CAST(f_int1 AS CHAR),
3378
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3379
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3383
# check trigger-12 success: 1
3385
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3386
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3387
AND f_charbig = '####updated per insert trigger####';
3389
Table Op Msg_type Msg_text
3390
test.t1 analyze status OK
3391
CHECK TABLE t1 EXTENDED;
3392
Table Op Msg_type Msg_text
3393
test.t1 check status OK
3394
CHECKSUM TABLE t1 EXTENDED;
3396
test.t1 <some_value>
3398
Table Op Msg_type Msg_text
3399
test.t1 optimize status OK
3400
# check layout success: 1
3401
REPAIR TABLE t1 EXTENDED;
3402
Table Op Msg_type Msg_text
3403
test.t1 repair status OK
3404
# check layout success: 1
3407
# check TRUNCATE success: 1
3408
# check layout success: 1
3409
# End usability test (inc/partition_check.inc)
3416
f_charbig VARCHAR(1000)
3419
PARTITION BY LIST(ABS(MOD(f_int1,2)))
3420
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
3421
(PARTITION part1 VALUES IN (0),
3422
PARTITION part2 VALUES IN (1),
3423
PARTITION part3 VALUES IN (NULL));
3424
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3425
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
3426
# Start usability test (inc/partition_check.inc)
3428
SHOW CREATE TABLE t1;
3430
t1 CREATE TABLE `t1` (
3431
`f_int1` int(11) DEFAULT NULL,
3432
`f_int2` int(11) DEFAULT NULL,
3433
`f_char1` char(20) DEFAULT NULL,
3434
`f_char2` char(20) DEFAULT NULL,
3435
`f_charbig` varchar(1000) DEFAULT NULL
3436
) ENGINE=MyISAM DEFAULT CHARSET=latin1
3437
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
3438
SUBPARTITION BY KEY (f_int1)
3440
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
3441
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
3442
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
3445
t1#P#part1#SP#part1sp0.MYD
3446
t1#P#part1#SP#part1sp0.MYI
3447
t1#P#part1#SP#part1sp1.MYD
3448
t1#P#part1#SP#part1sp1.MYI
3449
t1#P#part1#SP#part1sp2.MYD
3450
t1#P#part1#SP#part1sp2.MYI
3451
t1#P#part2#SP#part2sp0.MYD
3452
t1#P#part2#SP#part2sp0.MYI
3453
t1#P#part2#SP#part2sp1.MYD
3454
t1#P#part2#SP#part2sp1.MYI
3455
t1#P#part2#SP#part2sp2.MYD
3456
t1#P#part2#SP#part2sp2.MYI
3457
t1#P#part3#SP#part3sp0.MYD
3458
t1#P#part3#SP#part3sp0.MYI
3459
t1#P#part3#SP#part3sp1.MYD
3460
t1#P#part3#SP#part3sp1.MYI
3461
t1#P#part3#SP#part3sp2.MYD
3462
t1#P#part3#SP#part3sp2.MYI
3466
# check prerequisites-1 success: 1
3467
# check COUNT(*) success: 1
3468
# check MIN/MAX(f_int1) success: 1
3469
# check MIN/MAX(f_int2) success: 1
3470
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3471
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3472
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3473
WHERE f_int1 IN (2,3);
3474
# check prerequisites-3 success: 1
3475
DELETE FROM t1 WHERE f_charbig = 'delete me';
3476
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3477
# check read via f_int1 success: 1
3478
# check read via f_int2 success: 1
3480
# check multiple-1 success: 1
3481
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3483
# check multiple-2 success: 1
3484
INSERT INTO t1 SELECT * FROM t0_template
3485
WHERE MOD(f_int1,3) = 0;
3487
# check multiple-3 success: 1
3488
UPDATE t1 SET f_int1 = f_int1 + @max_row
3489
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3490
AND @max_row_div2 + @max_row_div4;
3492
# check multiple-4 success: 1
3494
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3495
AND @max_row_div2 + @max_row_div4 + @max_row;
3497
# check multiple-5 success: 1
3498
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3500
SET f_int1 = @cur_value , f_int2 = @cur_value,
3501
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3502
f_charbig = '#SINGLE#';
3504
# check single-1 success: 1
3505
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3507
SET f_int1 = @cur_value , f_int2 = @cur_value,
3508
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3509
f_charbig = '#SINGLE#';
3511
# check single-2 success: 1
3512
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3513
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3514
UPDATE t1 SET f_int1 = @cur_value2
3515
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3517
# check single-3 success: 1
3518
SET @cur_value1= -1;
3519
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3520
UPDATE t1 SET f_int1 = @cur_value1
3521
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3523
# check single-4 success: 1
3524
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3525
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3527
# check single-5 success: 1
3528
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3530
# check single-6 success: 1
3531
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3533
# check single-7 success: 1
3534
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3535
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3536
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3537
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3538
f_charbig = '#NULL#';
3540
SET f_int1 = NULL , f_int2 = -@max_row,
3541
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3542
f_charbig = '#NULL#';
3543
# check null success: 1
3545
# check null-1 success: 1
3546
UPDATE t1 SET f_int1 = -@max_row
3547
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3548
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3550
# check null-2 success: 1
3551
UPDATE t1 SET f_int1 = NULL
3552
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3553
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3555
# check null-3 success: 1
3557
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3558
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3560
# check null-4 success: 1
3562
WHERE f_int1 = 0 AND f_int2 = 0
3563
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3564
AND f_charbig = '#NULL#';
3566
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3567
SELECT f_int1, f_int1, '', '', 'was inserted'
3568
FROM t0_template source_tab
3569
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3571
# check transactions-1 success: 1
3574
# check transactions-2 success: 1
3577
# check transactions-3 success: 1
3578
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3582
# check transactions-4 success: 1
3583
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3584
SELECT f_int1, f_int1, '', '', 'was inserted'
3585
FROM t0_template source_tab
3586
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3588
# check transactions-5 success: 1
3591
Warning 1196 Some non-transactional changed tables couldn't be rolled back
3593
# check transactions-6 success: 1
3594
# INFO: Storage engine used for t1 seems to be not transactional.
3597
# check transactions-7 success: 1
3598
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3600
SET @@session.sql_mode = 'traditional';
3601
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3602
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3603
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3604
'', '', 'was inserted' FROM t0_template
3605
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3606
ERROR 22012: Division by 0
3609
# check transactions-8 success: 1
3610
# INFO: Storage engine used for t1 seems to be unable to revert
3611
# changes made by the failing statement.
3612
SET @@session.sql_mode = '';
3614
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3616
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3618
# check special-1 success: 1
3619
UPDATE t1 SET f_charbig = '';
3621
# check special-2 success: 1
3622
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3623
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3624
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3625
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3626
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3627
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3628
'just inserted' FROM t0_template
3629
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3630
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3632
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3633
f_charbig = 'updated by trigger'
3634
WHERE f_int1 = new.f_int1;
3636
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3637
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3638
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3640
# check trigger-1 success: 1
3642
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3643
f_int2 = CAST(f_char1 AS SIGNED INT),
3644
f_charbig = 'just inserted'
3645
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3647
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3648
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3649
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3650
'just inserted' FROM t0_template
3651
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3652
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3654
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3655
f_charbig = 'updated by trigger'
3656
WHERE f_int1 = new.f_int1;
3658
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3659
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3660
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3662
# check trigger-2 success: 1
3664
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3665
f_int2 = CAST(f_char1 AS SIGNED INT),
3666
f_charbig = 'just inserted'
3667
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3669
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3670
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3671
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3672
'just inserted' FROM t0_template
3673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3674
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3676
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3677
f_charbig = 'updated by trigger'
3678
WHERE f_int1 = new.f_int1;
3680
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3681
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3683
# check trigger-3 success: 1
3685
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3686
f_int2 = CAST(f_char1 AS SIGNED INT),
3687
f_charbig = 'just inserted'
3688
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3690
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3691
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3692
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3693
'just inserted' FROM t0_template
3694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3695
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3697
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3698
f_charbig = 'updated by trigger'
3699
WHERE f_int1 = - old.f_int1;
3701
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3702
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3704
# check trigger-4 success: 1
3706
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3707
f_int2 = CAST(f_char1 AS SIGNED INT),
3708
f_charbig = 'just inserted'
3709
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3711
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3712
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3713
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3714
'just inserted' FROM t0_template
3715
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3716
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3718
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3719
f_charbig = 'updated by trigger'
3720
WHERE f_int1 = new.f_int1;
3722
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3723
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3725
# check trigger-5 success: 1
3727
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3728
f_int2 = CAST(f_char1 AS SIGNED INT),
3729
f_charbig = 'just inserted'
3730
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3732
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3733
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3734
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3735
'just inserted' FROM t0_template
3736
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3737
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3739
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3740
f_charbig = 'updated by trigger'
3741
WHERE f_int1 = - old.f_int1;
3743
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3744
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3746
# check trigger-6 success: 1
3748
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3749
f_int2 = CAST(f_char1 AS SIGNED INT),
3750
f_charbig = 'just inserted'
3751
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3753
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3754
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3755
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3756
'just inserted' FROM t0_template
3757
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3758
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3760
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3761
f_charbig = 'updated by trigger'
3762
WHERE f_int1 = - old.f_int1;
3765
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3767
# check trigger-7 success: 1
3769
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3770
f_int2 = CAST(f_char1 AS SIGNED INT),
3771
f_charbig = 'just inserted'
3772
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3774
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3775
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3776
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3777
'just inserted' FROM t0_template
3778
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3779
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3781
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3782
f_charbig = 'updated by trigger'
3783
WHERE f_int1 = - old.f_int1;
3786
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3788
# check trigger-8 success: 1
3790
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3791
f_int2 = CAST(f_char1 AS SIGNED INT),
3792
f_charbig = 'just inserted'
3793
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3795
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3797
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3798
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3800
SET new.f_int1 = old.f_int1 + @max_row,
3801
new.f_int2 = old.f_int2 - @max_row,
3802
new.f_charbig = '####updated per update trigger####';
3805
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3806
f_charbig = '####updated per update statement itself####';
3808
# check trigger-9 success: 1
3810
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3811
f_int2 = CAST(f_char1 AS SIGNED INT),
3812
f_charbig = CONCAT('===',f_char1,'===');
3813
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3815
SET new.f_int1 = new.f_int1 + @max_row,
3816
new.f_int2 = new.f_int2 - @max_row,
3817
new.f_charbig = '####updated per update trigger####';
3820
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3821
f_charbig = '####updated per update statement itself####';
3823
# check trigger-10 success: 1
3825
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3826
f_int2 = CAST(f_char1 AS SIGNED INT),
3827
f_charbig = CONCAT('===',f_char1,'===');
3828
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3830
SET new.f_int1 = @my_max1 + @counter,
3831
new.f_int2 = @my_min2 - @counter,
3832
new.f_charbig = '####updated per insert trigger####';
3833
SET @counter = @counter + 1;
3836
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3837
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3838
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3839
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3840
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3844
# check trigger-11 success: 1
3846
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3847
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3848
AND f_charbig = '####updated per insert trigger####';
3849
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3851
SET new.f_int1 = @my_max1 + @counter,
3852
new.f_int2 = @my_min2 - @counter,
3853
new.f_charbig = '####updated per insert trigger####';
3854
SET @counter = @counter + 1;
3857
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3858
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3859
SELECT CAST(f_int1 AS CHAR),
3860
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3861
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3865
# check trigger-12 success: 1
3867
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3868
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3869
AND f_charbig = '####updated per insert trigger####';
3871
Table Op Msg_type Msg_text
3872
test.t1 analyze status OK
3873
CHECK TABLE t1 EXTENDED;
3874
Table Op Msg_type Msg_text
3875
test.t1 check status OK
3876
CHECKSUM TABLE t1 EXTENDED;
3878
test.t1 <some_value>
3880
Table Op Msg_type Msg_text
3881
test.t1 optimize status OK
3882
# check layout success: 1
3883
REPAIR TABLE t1 EXTENDED;
3884
Table Op Msg_type Msg_text
3885
test.t1 repair status OK
3886
# check layout success: 1
3889
# check TRUNCATE success: 1
3890
# check layout success: 1
3891
# End usability test (inc/partition_check.inc)
3893
# 1.2 The partitioning function contains two columns.
3894
DROP TABLE IF EXISTS t1;
3900
f_charbig VARCHAR(1000)
3903
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
3904
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3905
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
3906
# Start usability test (inc/partition_check.inc)
3908
SHOW CREATE TABLE t1;
3910
t1 CREATE TABLE `t1` (
3911
`f_int1` int(11) DEFAULT NULL,
3912
`f_int2` int(11) DEFAULT NULL,
3913
`f_char1` char(20) DEFAULT NULL,
3914
`f_char2` char(20) DEFAULT NULL,
3915
`f_charbig` varchar(1000) DEFAULT NULL
3916
) ENGINE=MyISAM DEFAULT CHARSET=latin1
3917
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
3928
# check prerequisites-1 success: 1
3929
# check COUNT(*) success: 1
3930
# check MIN/MAX(f_int1) success: 1
3931
# check MIN/MAX(f_int2) success: 1
3932
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3933
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3934
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3935
WHERE f_int1 IN (2,3);
3936
# check prerequisites-3 success: 1
3937
DELETE FROM t1 WHERE f_charbig = 'delete me';
3938
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3939
# check read via f_int1 success: 1
3940
# check read via f_int2 success: 1
3942
# check multiple-1 success: 1
3943
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3945
# check multiple-2 success: 1
3946
INSERT INTO t1 SELECT * FROM t0_template
3947
WHERE MOD(f_int1,3) = 0;
3949
# check multiple-3 success: 1
3950
UPDATE t1 SET f_int1 = f_int1 + @max_row
3951
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3952
AND @max_row_div2 + @max_row_div4;
3954
# check multiple-4 success: 1
3956
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3957
AND @max_row_div2 + @max_row_div4 + @max_row;
3959
# check multiple-5 success: 1
3960
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3962
SET f_int1 = @cur_value , f_int2 = @cur_value,
3963
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3964
f_charbig = '#SINGLE#';
3966
# check single-1 success: 1
3967
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3969
SET f_int1 = @cur_value , f_int2 = @cur_value,
3970
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3971
f_charbig = '#SINGLE#';
3973
# check single-2 success: 1
3974
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3975
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3976
UPDATE t1 SET f_int1 = @cur_value2
3977
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3979
# check single-3 success: 1
3980
SET @cur_value1= -1;
3981
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3982
UPDATE t1 SET f_int1 = @cur_value1
3983
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3985
# check single-4 success: 1
3986
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3987
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3989
# check single-5 success: 1
3990
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3992
# check single-6 success: 1
3993
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3995
# check single-7 success: 1
3996
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3997
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3998
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3999
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4000
f_charbig = '#NULL#';
4002
SET f_int1 = NULL , f_int2 = -@max_row,
4003
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4004
f_charbig = '#NULL#';
4005
# check null success: 1
4007
# check null-1 success: 1
4008
UPDATE t1 SET f_int1 = -@max_row
4009
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4010
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4012
# check null-2 success: 1
4013
UPDATE t1 SET f_int1 = NULL
4014
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4015
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4017
# check null-3 success: 1
4019
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4020
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4022
# check null-4 success: 1
4024
WHERE f_int1 = 0 AND f_int2 = 0
4025
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4026
AND f_charbig = '#NULL#';
4028
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4029
SELECT f_int1, f_int1, '', '', 'was inserted'
4030
FROM t0_template source_tab
4031
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4033
# check transactions-1 success: 1
4036
# check transactions-2 success: 1
4039
# check transactions-3 success: 1
4040
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4044
# check transactions-4 success: 1
4045
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4046
SELECT f_int1, f_int1, '', '', 'was inserted'
4047
FROM t0_template source_tab
4048
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4050
# check transactions-5 success: 1
4053
Warning 1196 Some non-transactional changed tables couldn't be rolled back
4055
# check transactions-6 success: 1
4056
# INFO: Storage engine used for t1 seems to be not transactional.
4059
# check transactions-7 success: 1
4060
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4062
SET @@session.sql_mode = 'traditional';
4063
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4064
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4065
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4066
'', '', 'was inserted' FROM t0_template
4067
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4068
ERROR 22012: Division by 0
4071
# check transactions-8 success: 1
4072
# INFO: Storage engine used for t1 seems to be unable to revert
4073
# changes made by the failing statement.
4074
SET @@session.sql_mode = '';
4076
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4078
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4080
# check special-1 success: 1
4081
UPDATE t1 SET f_charbig = '';
4083
# check special-2 success: 1
4084
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4085
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4086
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4088
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4089
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4090
'just inserted' FROM t0_template
4091
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4092
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4094
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4095
f_charbig = 'updated by trigger'
4096
WHERE f_int1 = new.f_int1;
4098
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4099
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4100
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4102
# check trigger-1 success: 1
4104
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4105
f_int2 = CAST(f_char1 AS SIGNED INT),
4106
f_charbig = 'just inserted'
4107
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4109
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4110
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4111
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4112
'just inserted' FROM t0_template
4113
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4114
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4116
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4117
f_charbig = 'updated by trigger'
4118
WHERE f_int1 = new.f_int1;
4120
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4121
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4122
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4124
# check trigger-2 success: 1
4126
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4127
f_int2 = CAST(f_char1 AS SIGNED INT),
4128
f_charbig = 'just inserted'
4129
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4131
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4132
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4133
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4134
'just inserted' FROM t0_template
4135
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4136
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4138
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4139
f_charbig = 'updated by trigger'
4140
WHERE f_int1 = new.f_int1;
4142
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4143
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4145
# check trigger-3 success: 1
4147
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4148
f_int2 = CAST(f_char1 AS SIGNED INT),
4149
f_charbig = 'just inserted'
4150
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4152
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4153
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4154
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4155
'just inserted' FROM t0_template
4156
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4157
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4159
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4160
f_charbig = 'updated by trigger'
4161
WHERE f_int1 = - old.f_int1;
4163
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4164
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4166
# check trigger-4 success: 1
4168
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4169
f_int2 = CAST(f_char1 AS SIGNED INT),
4170
f_charbig = 'just inserted'
4171
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4173
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4174
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4175
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4176
'just inserted' FROM t0_template
4177
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4178
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4180
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4181
f_charbig = 'updated by trigger'
4182
WHERE f_int1 = new.f_int1;
4184
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4185
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4187
# check trigger-5 success: 1
4189
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4190
f_int2 = CAST(f_char1 AS SIGNED INT),
4191
f_charbig = 'just inserted'
4192
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4194
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4195
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4196
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4197
'just inserted' FROM t0_template
4198
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4199
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4201
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4202
f_charbig = 'updated by trigger'
4203
WHERE f_int1 = - old.f_int1;
4205
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4206
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4208
# check trigger-6 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 DELETE 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 = - old.f_int1;
4227
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4229
# check trigger-7 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 AFTER DELETE 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;
4248
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4250
# check trigger-8 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;
4259
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4260
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4262
SET new.f_int1 = old.f_int1 + @max_row,
4263
new.f_int2 = old.f_int2 - @max_row,
4264
new.f_charbig = '####updated per update trigger####';
4267
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4268
f_charbig = '####updated per update statement itself####';
4270
# check trigger-9 success: 1
4272
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4273
f_int2 = CAST(f_char1 AS SIGNED INT),
4274
f_charbig = CONCAT('===',f_char1,'===');
4275
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4277
SET new.f_int1 = new.f_int1 + @max_row,
4278
new.f_int2 = new.f_int2 - @max_row,
4279
new.f_charbig = '####updated per update trigger####';
4282
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4283
f_charbig = '####updated per update statement itself####';
4285
# check trigger-10 success: 1
4287
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4288
f_int2 = CAST(f_char1 AS SIGNED INT),
4289
f_charbig = CONCAT('===',f_char1,'===');
4290
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4292
SET new.f_int1 = @my_max1 + @counter,
4293
new.f_int2 = @my_min2 - @counter,
4294
new.f_charbig = '####updated per insert trigger####';
4295
SET @counter = @counter + 1;
4298
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4299
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4300
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4301
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4302
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4306
# check trigger-11 success: 1
4308
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4309
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4310
AND f_charbig = '####updated per insert trigger####';
4311
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4313
SET new.f_int1 = @my_max1 + @counter,
4314
new.f_int2 = @my_min2 - @counter,
4315
new.f_charbig = '####updated per insert trigger####';
4316
SET @counter = @counter + 1;
4319
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4320
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4321
SELECT CAST(f_int1 AS CHAR),
4322
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4323
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4327
# check trigger-12 success: 1
4329
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4330
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4331
AND f_charbig = '####updated per insert trigger####';
4333
Table Op Msg_type Msg_text
4334
test.t1 analyze status OK
4335
CHECK TABLE t1 EXTENDED;
4336
Table Op Msg_type Msg_text
4337
test.t1 check status OK
4338
CHECKSUM TABLE t1 EXTENDED;
4340
test.t1 <some_value>
4342
Table Op Msg_type Msg_text
4343
test.t1 optimize status OK
4344
# check layout success: 1
4345
REPAIR TABLE t1 EXTENDED;
4346
Table Op Msg_type Msg_text
4347
test.t1 repair status OK
4348
# check layout success: 1
4351
# check TRUNCATE success: 1
4352
# check layout success: 1
4353
# End usability test (inc/partition_check.inc)
4360
f_charbig VARCHAR(1000)
4363
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
4364
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4365
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
4366
# Start usability test (inc/partition_check.inc)
4368
SHOW CREATE TABLE t1;
4370
t1 CREATE TABLE `t1` (
4371
`f_int1` int(11) DEFAULT NULL,
4372
`f_int2` int(11) DEFAULT NULL,
4373
`f_char1` char(20) DEFAULT NULL,
4374
`f_char2` char(20) DEFAULT NULL,
4375
`f_charbig` varchar(1000) DEFAULT NULL
4376
) ENGINE=MyISAM DEFAULT CHARSET=latin1
4377
/*!50100 PARTITION BY KEY (f_int1,f_int2)
4394
# check prerequisites-1 success: 1
4395
# check COUNT(*) success: 1
4396
# check MIN/MAX(f_int1) success: 1
4397
# check MIN/MAX(f_int2) success: 1
4398
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4399
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4400
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4401
WHERE f_int1 IN (2,3);
4402
# check prerequisites-3 success: 1
4403
DELETE FROM t1 WHERE f_charbig = 'delete me';
4404
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4405
# check read via f_int1 success: 1
4406
# check read via f_int2 success: 1
4408
# check multiple-1 success: 1
4409
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4411
# check multiple-2 success: 1
4412
INSERT INTO t1 SELECT * FROM t0_template
4413
WHERE MOD(f_int1,3) = 0;
4415
# check multiple-3 success: 1
4416
UPDATE t1 SET f_int1 = f_int1 + @max_row
4417
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4418
AND @max_row_div2 + @max_row_div4;
4420
# check multiple-4 success: 1
4422
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4423
AND @max_row_div2 + @max_row_div4 + @max_row;
4425
# check multiple-5 success: 1
4426
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4428
SET f_int1 = @cur_value , f_int2 = @cur_value,
4429
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4430
f_charbig = '#SINGLE#';
4432
# check single-1 success: 1
4433
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4435
SET f_int1 = @cur_value , f_int2 = @cur_value,
4436
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4437
f_charbig = '#SINGLE#';
4439
# check single-2 success: 1
4440
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4441
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4442
UPDATE t1 SET f_int1 = @cur_value2
4443
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4445
# check single-3 success: 1
4446
SET @cur_value1= -1;
4447
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4448
UPDATE t1 SET f_int1 = @cur_value1
4449
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4451
# check single-4 success: 1
4452
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4453
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4455
# check single-5 success: 1
4456
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4458
# check single-6 success: 1
4459
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4461
# check single-7 success: 1
4462
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4463
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4464
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4465
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4466
f_charbig = '#NULL#';
4468
SET f_int1 = NULL , f_int2 = -@max_row,
4469
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4470
f_charbig = '#NULL#';
4471
# check null success: 1
4473
# check null-1 success: 1
4474
UPDATE t1 SET f_int1 = -@max_row
4475
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4476
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4478
# check null-2 success: 1
4479
UPDATE t1 SET f_int1 = NULL
4480
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4481
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4483
# check null-3 success: 1
4485
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4486
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4488
# check null-4 success: 1
4490
WHERE f_int1 = 0 AND f_int2 = 0
4491
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4492
AND f_charbig = '#NULL#';
4494
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4495
SELECT f_int1, f_int1, '', '', 'was inserted'
4496
FROM t0_template source_tab
4497
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4499
# check transactions-1 success: 1
4502
# check transactions-2 success: 1
4505
# check transactions-3 success: 1
4506
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4510
# check transactions-4 success: 1
4511
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4512
SELECT f_int1, f_int1, '', '', 'was inserted'
4513
FROM t0_template source_tab
4514
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4516
# check transactions-5 success: 1
4519
Warning 1196 Some non-transactional changed tables couldn't be rolled back
4521
# check transactions-6 success: 1
4522
# INFO: Storage engine used for t1 seems to be not transactional.
4525
# check transactions-7 success: 1
4526
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4528
SET @@session.sql_mode = 'traditional';
4529
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4530
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4531
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4532
'', '', 'was inserted' FROM t0_template
4533
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4534
ERROR 22012: Division by 0
4537
# check transactions-8 success: 1
4538
# INFO: Storage engine used for t1 seems to be unable to revert
4539
# changes made by the failing statement.
4540
SET @@session.sql_mode = '';
4542
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4544
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4546
# check special-1 success: 1
4547
UPDATE t1 SET f_charbig = '';
4549
# check special-2 success: 1
4550
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4551
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4552
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4553
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4554
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4555
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4556
'just inserted' FROM t0_template
4557
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4558
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4560
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4561
f_charbig = 'updated by trigger'
4562
WHERE f_int1 = new.f_int1;
4564
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4565
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4566
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4568
# check trigger-1 success: 1
4570
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4571
f_int2 = CAST(f_char1 AS SIGNED INT),
4572
f_charbig = 'just inserted'
4573
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4575
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4576
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4577
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4578
'just inserted' FROM t0_template
4579
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4580
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4582
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4583
f_charbig = 'updated by trigger'
4584
WHERE f_int1 = new.f_int1;
4586
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4587
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4588
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4590
# check trigger-2 success: 1
4592
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4593
f_int2 = CAST(f_char1 AS SIGNED INT),
4594
f_charbig = 'just inserted'
4595
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4597
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4598
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4599
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4600
'just inserted' FROM t0_template
4601
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4602
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4604
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4605
f_charbig = 'updated by trigger'
4606
WHERE f_int1 = new.f_int1;
4608
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4609
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4611
# check trigger-3 success: 1
4613
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4614
f_int2 = CAST(f_char1 AS SIGNED INT),
4615
f_charbig = 'just inserted'
4616
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4618
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4619
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4620
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4621
'just inserted' FROM t0_template
4622
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4623
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4625
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4626
f_charbig = 'updated by trigger'
4627
WHERE f_int1 = - old.f_int1;
4629
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4630
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4632
# check trigger-4 success: 1
4634
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4635
f_int2 = CAST(f_char1 AS SIGNED INT),
4636
f_charbig = 'just inserted'
4637
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4639
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4640
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4641
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4642
'just inserted' FROM t0_template
4643
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4644
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4646
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4647
f_charbig = 'updated by trigger'
4648
WHERE f_int1 = new.f_int1;
4650
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4651
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4653
# check trigger-5 success: 1
4655
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4656
f_int2 = CAST(f_char1 AS SIGNED INT),
4657
f_charbig = 'just inserted'
4658
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4660
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4661
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4662
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4663
'just inserted' FROM t0_template
4664
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4665
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4667
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4668
f_charbig = 'updated by trigger'
4669
WHERE f_int1 = - old.f_int1;
4671
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4672
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4674
# check trigger-6 success: 1
4676
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4677
f_int2 = CAST(f_char1 AS SIGNED INT),
4678
f_charbig = 'just inserted'
4679
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4681
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4682
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4683
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4684
'just inserted' FROM t0_template
4685
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4686
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4688
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4689
f_charbig = 'updated by trigger'
4690
WHERE f_int1 = - old.f_int1;
4693
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4695
# check trigger-7 success: 1
4697
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4698
f_int2 = CAST(f_char1 AS SIGNED INT),
4699
f_charbig = 'just inserted'
4700
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4702
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4703
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4704
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4705
'just inserted' FROM t0_template
4706
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4707
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4709
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4710
f_charbig = 'updated by trigger'
4711
WHERE f_int1 = - old.f_int1;
4714
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4716
# check trigger-8 success: 1
4718
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4719
f_int2 = CAST(f_char1 AS SIGNED INT),
4720
f_charbig = 'just inserted'
4721
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4723
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4725
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4726
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4728
SET new.f_int1 = old.f_int1 + @max_row,
4729
new.f_int2 = old.f_int2 - @max_row,
4730
new.f_charbig = '####updated per update trigger####';
4733
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4734
f_charbig = '####updated per update statement itself####';
4736
# check trigger-9 success: 1
4738
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4739
f_int2 = CAST(f_char1 AS SIGNED INT),
4740
f_charbig = CONCAT('===',f_char1,'===');
4741
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4743
SET new.f_int1 = new.f_int1 + @max_row,
4744
new.f_int2 = new.f_int2 - @max_row,
4745
new.f_charbig = '####updated per update trigger####';
4748
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4749
f_charbig = '####updated per update statement itself####';
4751
# check trigger-10 success: 1
4753
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4754
f_int2 = CAST(f_char1 AS SIGNED INT),
4755
f_charbig = CONCAT('===',f_char1,'===');
4756
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4758
SET new.f_int1 = @my_max1 + @counter,
4759
new.f_int2 = @my_min2 - @counter,
4760
new.f_charbig = '####updated per insert trigger####';
4761
SET @counter = @counter + 1;
4764
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4765
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4766
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4767
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4768
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4772
# check trigger-11 success: 1
4774
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4775
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4776
AND f_charbig = '####updated per insert trigger####';
4777
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4779
SET new.f_int1 = @my_max1 + @counter,
4780
new.f_int2 = @my_min2 - @counter,
4781
new.f_charbig = '####updated per insert trigger####';
4782
SET @counter = @counter + 1;
4785
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4786
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4787
SELECT CAST(f_int1 AS CHAR),
4788
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4789
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4793
# check trigger-12 success: 1
4795
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4796
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4797
AND f_charbig = '####updated per insert trigger####';
4799
Table Op Msg_type Msg_text
4800
test.t1 analyze status OK
4801
CHECK TABLE t1 EXTENDED;
4802
Table Op Msg_type Msg_text
4803
test.t1 check status OK
4804
CHECKSUM TABLE t1 EXTENDED;
4806
test.t1 <some_value>
4808
Table Op Msg_type Msg_text
4809
test.t1 optimize status OK
4810
# check layout success: 1
4811
REPAIR TABLE t1 EXTENDED;
4812
Table Op Msg_type Msg_text
4813
test.t1 repair status OK
4814
# check layout success: 1
4817
# check TRUNCATE success: 1
4818
# check layout success: 1
4819
# End usability test (inc/partition_check.inc)
4826
f_charbig VARCHAR(1000)
4829
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
4830
(PARTITION part_3 VALUES IN (-3),
4831
PARTITION part_2 VALUES IN (-2),
4832
PARTITION part_1 VALUES IN (-1),
4833
PARTITION part_N VALUES IN (NULL),
4834
PARTITION part0 VALUES IN (0),
4835
PARTITION part1 VALUES IN (1),
4836
PARTITION part2 VALUES IN (2),
4837
PARTITION part3 VALUES IN (3));
4838
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4839
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
4840
# Start usability test (inc/partition_check.inc)
4842
SHOW CREATE TABLE t1;
4844
t1 CREATE TABLE `t1` (
4845
`f_int1` int(11) DEFAULT NULL,
4846
`f_int2` int(11) DEFAULT NULL,
4847
`f_char1` char(20) DEFAULT NULL,
4848
`f_char2` char(20) DEFAULT NULL,
4849
`f_charbig` varchar(1000) DEFAULT NULL
4850
) ENGINE=MyISAM DEFAULT CHARSET=latin1
4851
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
4852
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
4853
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
4854
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
4855
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
4856
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
4857
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
4858
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
4859
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
4881
# check prerequisites-1 success: 1
4882
# check COUNT(*) success: 1
4883
# check MIN/MAX(f_int1) success: 1
4884
# check MIN/MAX(f_int2) success: 1
4885
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4886
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4887
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4888
WHERE f_int1 IN (2,3);
4889
# check prerequisites-3 success: 1
4890
DELETE FROM t1 WHERE f_charbig = 'delete me';
4891
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4892
# check read via f_int1 success: 1
4893
# check read via f_int2 success: 1
4895
# check multiple-1 success: 1
4896
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4898
# check multiple-2 success: 1
4899
INSERT INTO t1 SELECT * FROM t0_template
4900
WHERE MOD(f_int1,3) = 0;
4902
# check multiple-3 success: 1
4903
UPDATE t1 SET f_int1 = f_int1 + @max_row
4904
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4905
AND @max_row_div2 + @max_row_div4;
4907
# check multiple-4 success: 1
4909
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4910
AND @max_row_div2 + @max_row_div4 + @max_row;
4912
# check multiple-5 success: 1
4913
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4915
SET f_int1 = @cur_value , f_int2 = @cur_value,
4916
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4917
f_charbig = '#SINGLE#';
4919
# check single-1 success: 1
4920
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4922
SET f_int1 = @cur_value , f_int2 = @cur_value,
4923
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4924
f_charbig = '#SINGLE#';
4926
# check single-2 success: 1
4927
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4928
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4929
UPDATE t1 SET f_int1 = @cur_value2
4930
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4932
# check single-3 success: 1
4933
SET @cur_value1= -1;
4934
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4935
UPDATE t1 SET f_int1 = @cur_value1
4936
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4938
# check single-4 success: 1
4939
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4940
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4942
# check single-5 success: 1
4943
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4945
# check single-6 success: 1
4946
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4948
# check single-7 success: 1
4949
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4950
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4951
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4952
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4953
f_charbig = '#NULL#';
4955
SET f_int1 = NULL , f_int2 = -@max_row,
4956
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4957
f_charbig = '#NULL#';
4958
# check null success: 1
4960
# check null-1 success: 1
4961
UPDATE t1 SET f_int1 = -@max_row
4962
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4963
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4965
# check null-2 success: 1
4966
UPDATE t1 SET f_int1 = NULL
4967
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4968
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4970
# check null-3 success: 1
4972
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4973
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4975
# check null-4 success: 1
4977
WHERE f_int1 = 0 AND f_int2 = 0
4978
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4979
AND f_charbig = '#NULL#';
4981
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4982
SELECT f_int1, f_int1, '', '', 'was inserted'
4983
FROM t0_template source_tab
4984
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4986
# check transactions-1 success: 1
4989
# check transactions-2 success: 1
4992
# check transactions-3 success: 1
4993
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4997
# check transactions-4 success: 1
4998
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4999
SELECT f_int1, f_int1, '', '', 'was inserted'
5000
FROM t0_template source_tab
5001
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5003
# check transactions-5 success: 1
5006
Warning 1196 Some non-transactional changed tables couldn't be rolled back
5008
# check transactions-6 success: 1
5009
# INFO: Storage engine used for t1 seems to be not transactional.
5012
# check transactions-7 success: 1
5013
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5015
SET @@session.sql_mode = 'traditional';
5016
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5017
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5018
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5019
'', '', 'was inserted' FROM t0_template
5020
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5021
ERROR 22012: Division by 0
5024
# check transactions-8 success: 1
5025
# INFO: Storage engine used for t1 seems to be unable to revert
5026
# changes made by the failing statement.
5027
SET @@session.sql_mode = '';
5029
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5031
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5033
# check special-1 success: 1
5034
UPDATE t1 SET f_charbig = '';
5036
# check special-2 success: 1
5037
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5038
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5039
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5040
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5041
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5042
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5043
'just inserted' FROM t0_template
5044
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5045
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5047
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5048
f_charbig = 'updated by trigger'
5049
WHERE f_int1 = new.f_int1;
5051
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5052
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5053
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5055
# check trigger-1 success: 1
5057
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5058
f_int2 = CAST(f_char1 AS SIGNED INT),
5059
f_charbig = 'just inserted'
5060
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5062
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5063
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5064
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5065
'just inserted' FROM t0_template
5066
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5067
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5069
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5070
f_charbig = 'updated by trigger'
5071
WHERE f_int1 = new.f_int1;
5073
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5074
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5075
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5077
# check trigger-2 success: 1
5079
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5080
f_int2 = CAST(f_char1 AS SIGNED INT),
5081
f_charbig = 'just inserted'
5082
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5084
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5085
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5086
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5087
'just inserted' FROM t0_template
5088
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5089
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5091
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5092
f_charbig = 'updated by trigger'
5093
WHERE f_int1 = new.f_int1;
5095
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5096
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5098
# check trigger-3 success: 1
5100
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5101
f_int2 = CAST(f_char1 AS SIGNED INT),
5102
f_charbig = 'just inserted'
5103
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5105
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5106
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5107
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5108
'just inserted' FROM t0_template
5109
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5110
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5112
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5113
f_charbig = 'updated by trigger'
5114
WHERE f_int1 = - old.f_int1;
5116
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5117
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5119
# check trigger-4 success: 1
5121
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5122
f_int2 = CAST(f_char1 AS SIGNED INT),
5123
f_charbig = 'just inserted'
5124
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5126
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5127
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5128
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5129
'just inserted' FROM t0_template
5130
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5131
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5133
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5134
f_charbig = 'updated by trigger'
5135
WHERE f_int1 = new.f_int1;
5137
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5138
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5140
# check trigger-5 success: 1
5142
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5143
f_int2 = CAST(f_char1 AS SIGNED INT),
5144
f_charbig = 'just inserted'
5145
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5147
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5148
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5149
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5150
'just inserted' FROM t0_template
5151
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5152
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5154
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5155
f_charbig = 'updated by trigger'
5156
WHERE f_int1 = - old.f_int1;
5158
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5159
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5161
# check trigger-6 success: 1
5163
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5164
f_int2 = CAST(f_char1 AS SIGNED INT),
5165
f_charbig = 'just inserted'
5166
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5168
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5169
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5170
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5171
'just inserted' FROM t0_template
5172
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5173
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5175
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5176
f_charbig = 'updated by trigger'
5177
WHERE f_int1 = - old.f_int1;
5180
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5182
# check trigger-7 success: 1
5184
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5185
f_int2 = CAST(f_char1 AS SIGNED INT),
5186
f_charbig = 'just inserted'
5187
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5189
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5190
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5191
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5192
'just inserted' FROM t0_template
5193
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5194
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5196
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5197
f_charbig = 'updated by trigger'
5198
WHERE f_int1 = - old.f_int1;
5201
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5203
# check trigger-8 success: 1
5205
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5206
f_int2 = CAST(f_char1 AS SIGNED INT),
5207
f_charbig = 'just inserted'
5208
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5210
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5213
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5215
SET new.f_int1 = old.f_int1 + @max_row,
5216
new.f_int2 = old.f_int2 - @max_row,
5217
new.f_charbig = '####updated per update trigger####';
5220
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5221
f_charbig = '####updated per update statement itself####';
5223
# check trigger-9 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 = CONCAT('===',f_char1,'===');
5228
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5230
SET new.f_int1 = new.f_int1 + @max_row,
5231
new.f_int2 = new.f_int2 - @max_row,
5232
new.f_charbig = '####updated per update trigger####';
5235
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5236
f_charbig = '####updated per update statement itself####';
5238
# check trigger-10 success: 1
5240
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5241
f_int2 = CAST(f_char1 AS SIGNED INT),
5242
f_charbig = CONCAT('===',f_char1,'===');
5243
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5245
SET new.f_int1 = @my_max1 + @counter,
5246
new.f_int2 = @my_min2 - @counter,
5247
new.f_charbig = '####updated per insert trigger####';
5248
SET @counter = @counter + 1;
5251
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5252
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5253
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5254
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5255
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5259
# check trigger-11 success: 1
5261
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5262
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5263
AND f_charbig = '####updated per insert trigger####';
5264
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5266
SET new.f_int1 = @my_max1 + @counter,
5267
new.f_int2 = @my_min2 - @counter,
5268
new.f_charbig = '####updated per insert trigger####';
5269
SET @counter = @counter + 1;
5272
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5273
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5274
SELECT CAST(f_int1 AS CHAR),
5275
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5276
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5280
# check trigger-12 success: 1
5282
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5283
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5284
AND f_charbig = '####updated per insert trigger####';
5286
Table Op Msg_type Msg_text
5287
test.t1 analyze status OK
5288
CHECK TABLE t1 EXTENDED;
5289
Table Op Msg_type Msg_text
5290
test.t1 check status OK
5291
CHECKSUM TABLE t1 EXTENDED;
5293
test.t1 <some_value>
5295
Table Op Msg_type Msg_text
5296
test.t1 optimize status OK
5297
# check layout success: 1
5298
REPAIR TABLE t1 EXTENDED;
5299
Table Op Msg_type Msg_text
5300
test.t1 repair status OK
5301
# check layout success: 1
5304
# check TRUNCATE success: 1
5305
# check layout success: 1
5306
# End usability test (inc/partition_check.inc)
5313
f_charbig VARCHAR(1000)
5316
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
5317
(PARTITION parta VALUES LESS THAN (0),
5318
PARTITION partb VALUES LESS THAN (5),
5319
PARTITION partc VALUES LESS THAN (10),
5320
PARTITION partd VALUES LESS THAN (10 + 5),
5321
PARTITION parte VALUES LESS THAN (20),
5322
PARTITION partf VALUES LESS THAN (2147483646));
5323
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5324
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
5325
# Start usability test (inc/partition_check.inc)
5327
SHOW CREATE TABLE t1;
5329
t1 CREATE TABLE `t1` (
5330
`f_int1` int(11) DEFAULT NULL,
5331
`f_int2` int(11) DEFAULT NULL,
5332
`f_char1` char(20) DEFAULT NULL,
5333
`f_char2` char(20) DEFAULT NULL,
5334
`f_charbig` varchar(1000) DEFAULT NULL
5335
) ENGINE=MyISAM DEFAULT CHARSET=latin1
5336
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
5337
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
5338
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
5339
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
5340
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
5341
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
5342
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
5360
# check prerequisites-1 success: 1
5361
# check COUNT(*) success: 1
5362
# check MIN/MAX(f_int1) success: 1
5363
# check MIN/MAX(f_int2) success: 1
5364
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5365
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5366
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5367
WHERE f_int1 IN (2,3);
5368
# check prerequisites-3 success: 1
5369
DELETE FROM t1 WHERE f_charbig = 'delete me';
5370
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5371
# check read via f_int1 success: 1
5372
# check read via f_int2 success: 1
5374
# check multiple-1 success: 1
5375
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5377
# check multiple-2 success: 1
5378
INSERT INTO t1 SELECT * FROM t0_template
5379
WHERE MOD(f_int1,3) = 0;
5381
# check multiple-3 success: 1
5382
UPDATE t1 SET f_int1 = f_int1 + @max_row
5383
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5384
AND @max_row_div2 + @max_row_div4;
5386
# check multiple-4 success: 1
5388
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5389
AND @max_row_div2 + @max_row_div4 + @max_row;
5391
# check multiple-5 success: 1
5392
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5394
SET f_int1 = @cur_value , f_int2 = @cur_value,
5395
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5396
f_charbig = '#SINGLE#';
5398
# check single-1 success: 1
5399
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5401
SET f_int1 = @cur_value , f_int2 = @cur_value,
5402
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5403
f_charbig = '#SINGLE#';
5405
# check single-2 success: 1
5406
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5407
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5408
UPDATE t1 SET f_int1 = @cur_value2
5409
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5411
# check single-3 success: 1
5412
SET @cur_value1= -1;
5413
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5414
UPDATE t1 SET f_int1 = @cur_value1
5415
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5417
# check single-4 success: 1
5418
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5419
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5421
# check single-5 success: 1
5422
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5424
# check single-6 success: 1
5425
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5426
ERROR HY000: Table has no partition for value 2147483647
5427
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5428
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5429
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5430
f_charbig = '#NULL#';
5432
SET f_int1 = NULL , f_int2 = -@max_row,
5433
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5434
f_charbig = '#NULL#';
5435
# check null success: 1
5437
# check null-1 success: 1
5438
UPDATE t1 SET f_int1 = -@max_row
5439
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5440
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5442
# check null-2 success: 1
5443
UPDATE t1 SET f_int1 = NULL
5444
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5445
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5447
# check null-3 success: 1
5449
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5450
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5452
# check null-4 success: 1
5454
WHERE f_int1 = 0 AND f_int2 = 0
5455
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5456
AND f_charbig = '#NULL#';
5458
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5459
SELECT f_int1, f_int1, '', '', 'was inserted'
5460
FROM t0_template source_tab
5461
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5463
# check transactions-1 success: 1
5466
# check transactions-2 success: 1
5469
# check transactions-3 success: 1
5470
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5474
# check transactions-4 success: 1
5475
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5476
SELECT f_int1, f_int1, '', '', 'was inserted'
5477
FROM t0_template source_tab
5478
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5480
# check transactions-5 success: 1
5483
Warning 1196 Some non-transactional changed tables couldn't be rolled back
5485
# check transactions-6 success: 1
5486
# INFO: Storage engine used for t1 seems to be not transactional.
5489
# check transactions-7 success: 1
5490
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5492
SET @@session.sql_mode = 'traditional';
5493
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5494
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5495
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5496
'', '', 'was inserted' FROM t0_template
5497
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5498
ERROR 22012: Division by 0
5501
# check transactions-8 success: 1
5502
# INFO: Storage engine used for t1 seems to be unable to revert
5503
# changes made by the failing statement.
5504
SET @@session.sql_mode = '';
5506
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5508
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5510
# check special-1 success: 1
5511
UPDATE t1 SET f_charbig = '';
5513
# check special-2 success: 1
5514
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5515
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5516
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5517
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5518
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5519
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5520
'just inserted' FROM t0_template
5521
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5522
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5524
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5525
f_charbig = 'updated by trigger'
5526
WHERE f_int1 = new.f_int1;
5528
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5529
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5530
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5532
# check trigger-1 success: 1
5534
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5535
f_int2 = CAST(f_char1 AS SIGNED INT),
5536
f_charbig = 'just inserted'
5537
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5539
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5540
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5541
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5542
'just inserted' FROM t0_template
5543
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5544
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5546
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5547
f_charbig = 'updated by trigger'
5548
WHERE f_int1 = new.f_int1;
5550
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5551
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5552
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5554
# check trigger-2 success: 1
5556
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5557
f_int2 = CAST(f_char1 AS SIGNED INT),
5558
f_charbig = 'just inserted'
5559
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5561
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5562
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5563
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5564
'just inserted' FROM t0_template
5565
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5566
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5568
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5569
f_charbig = 'updated by trigger'
5570
WHERE f_int1 = new.f_int1;
5572
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5573
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5575
# check trigger-3 success: 1
5577
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5578
f_int2 = CAST(f_char1 AS SIGNED INT),
5579
f_charbig = 'just inserted'
5580
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5582
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5583
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5584
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5585
'just inserted' FROM t0_template
5586
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5587
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5589
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5590
f_charbig = 'updated by trigger'
5591
WHERE f_int1 = - old.f_int1;
5593
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5594
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5596
# check trigger-4 success: 1
5598
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5599
f_int2 = CAST(f_char1 AS SIGNED INT),
5600
f_charbig = 'just inserted'
5601
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5603
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5604
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5605
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5606
'just inserted' FROM t0_template
5607
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5608
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5610
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5611
f_charbig = 'updated by trigger'
5612
WHERE f_int1 = new.f_int1;
5614
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5615
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5617
# check trigger-5 success: 1
5619
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5620
f_int2 = CAST(f_char1 AS SIGNED INT),
5621
f_charbig = 'just inserted'
5622
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5624
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5625
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5626
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5627
'just inserted' FROM t0_template
5628
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5629
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5631
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5632
f_charbig = 'updated by trigger'
5633
WHERE f_int1 = - old.f_int1;
5635
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5636
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5638
# check trigger-6 success: 1
5640
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5641
f_int2 = CAST(f_char1 AS SIGNED INT),
5642
f_charbig = 'just inserted'
5643
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5645
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5646
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5647
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5648
'just inserted' FROM t0_template
5649
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5650
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5652
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5653
f_charbig = 'updated by trigger'
5654
WHERE f_int1 = - old.f_int1;
5657
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5659
# check trigger-7 success: 1
5661
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5662
f_int2 = CAST(f_char1 AS SIGNED INT),
5663
f_charbig = 'just inserted'
5664
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5666
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5667
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5668
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5669
'just inserted' FROM t0_template
5670
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5671
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5673
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5674
f_charbig = 'updated by trigger'
5675
WHERE f_int1 = - old.f_int1;
5678
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5680
# check trigger-8 success: 1
5682
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5683
f_int2 = CAST(f_char1 AS SIGNED INT),
5684
f_charbig = 'just inserted'
5685
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5687
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5689
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5690
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5692
SET new.f_int1 = old.f_int1 + @max_row,
5693
new.f_int2 = old.f_int2 - @max_row,
5694
new.f_charbig = '####updated per update trigger####';
5697
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5698
f_charbig = '####updated per update statement itself####';
5700
# check trigger-9 success: 1
5702
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5703
f_int2 = CAST(f_char1 AS SIGNED INT),
5704
f_charbig = CONCAT('===',f_char1,'===');
5705
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5707
SET new.f_int1 = new.f_int1 + @max_row,
5708
new.f_int2 = new.f_int2 - @max_row,
5709
new.f_charbig = '####updated per update trigger####';
5712
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5713
f_charbig = '####updated per update statement itself####';
5715
# check trigger-10 success: 1
5717
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5718
f_int2 = CAST(f_char1 AS SIGNED INT),
5719
f_charbig = CONCAT('===',f_char1,'===');
5720
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5722
SET new.f_int1 = @my_max1 + @counter,
5723
new.f_int2 = @my_min2 - @counter,
5724
new.f_charbig = '####updated per insert trigger####';
5725
SET @counter = @counter + 1;
5728
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5729
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5730
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5731
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5732
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5736
# check trigger-11 success: 1
5738
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5739
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5740
AND f_charbig = '####updated per insert trigger####';
5741
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5743
SET new.f_int1 = @my_max1 + @counter,
5744
new.f_int2 = @my_min2 - @counter,
5745
new.f_charbig = '####updated per insert trigger####';
5746
SET @counter = @counter + 1;
5749
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5750
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5751
SELECT CAST(f_int1 AS CHAR),
5752
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5753
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5757
# check trigger-12 success: 1
5759
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5760
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5761
AND f_charbig = '####updated per insert trigger####';
5763
Table Op Msg_type Msg_text
5764
test.t1 analyze status OK
5765
CHECK TABLE t1 EXTENDED;
5766
Table Op Msg_type Msg_text
5767
test.t1 check status OK
5768
CHECKSUM TABLE t1 EXTENDED;
5770
test.t1 <some_value>
5772
Table Op Msg_type Msg_text
5773
test.t1 optimize status OK
5774
# check layout success: 1
5775
REPAIR TABLE t1 EXTENDED;
5776
Table Op Msg_type Msg_text
5777
test.t1 repair status OK
5778
# check layout success: 1
5781
# check TRUNCATE success: 1
5782
# check layout success: 1
5783
# End usability test (inc/partition_check.inc)
5790
f_charbig VARCHAR(1000)
5793
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
5794
(PARTITION parta VALUES LESS THAN (0),
5795
PARTITION partb VALUES LESS THAN (5),
5796
PARTITION partc VALUES LESS THAN (10),
5797
PARTITION partd VALUES LESS THAN (2147483646));
5798
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5799
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
5800
# Start usability test (inc/partition_check.inc)
5802
SHOW CREATE TABLE t1;
5804
t1 CREATE TABLE `t1` (
5805
`f_int1` int(11) DEFAULT NULL,
5806
`f_int2` int(11) DEFAULT NULL,
5807
`f_char1` char(20) DEFAULT NULL,
5808
`f_char2` char(20) DEFAULT NULL,
5809
`f_charbig` varchar(1000) DEFAULT NULL
5810
) ENGINE=MyISAM DEFAULT CHARSET=latin1
5811
/*!50100 PARTITION BY RANGE (f_int1)
5812
SUBPARTITION BY HASH (f_int2)
5814
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
5815
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
5816
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
5817
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
5820
t1#P#parta#SP#partasp0.MYD
5821
t1#P#parta#SP#partasp0.MYI
5822
t1#P#parta#SP#partasp1.MYD
5823
t1#P#parta#SP#partasp1.MYI
5824
t1#P#partb#SP#partbsp0.MYD
5825
t1#P#partb#SP#partbsp0.MYI
5826
t1#P#partb#SP#partbsp1.MYD
5827
t1#P#partb#SP#partbsp1.MYI
5828
t1#P#partc#SP#partcsp0.MYD
5829
t1#P#partc#SP#partcsp0.MYI
5830
t1#P#partc#SP#partcsp1.MYD
5831
t1#P#partc#SP#partcsp1.MYI
5832
t1#P#partd#SP#partdsp0.MYD
5833
t1#P#partd#SP#partdsp0.MYI
5834
t1#P#partd#SP#partdsp1.MYD
5835
t1#P#partd#SP#partdsp1.MYI
5839
# check prerequisites-1 success: 1
5840
# check COUNT(*) success: 1
5841
# check MIN/MAX(f_int1) success: 1
5842
# check MIN/MAX(f_int2) success: 1
5843
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5844
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5845
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5846
WHERE f_int1 IN (2,3);
5847
# check prerequisites-3 success: 1
5848
DELETE FROM t1 WHERE f_charbig = 'delete me';
5849
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5850
# check read via f_int1 success: 1
5851
# check read via f_int2 success: 1
5853
# check multiple-1 success: 1
5854
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5856
# check multiple-2 success: 1
5857
INSERT INTO t1 SELECT * FROM t0_template
5858
WHERE MOD(f_int1,3) = 0;
5860
# check multiple-3 success: 1
5861
UPDATE t1 SET f_int1 = f_int1 + @max_row
5862
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5863
AND @max_row_div2 + @max_row_div4;
5865
# check multiple-4 success: 1
5867
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5868
AND @max_row_div2 + @max_row_div4 + @max_row;
5870
# check multiple-5 success: 1
5871
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5873
SET f_int1 = @cur_value , f_int2 = @cur_value,
5874
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5875
f_charbig = '#SINGLE#';
5877
# check single-1 success: 1
5878
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5880
SET f_int1 = @cur_value , f_int2 = @cur_value,
5881
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5882
f_charbig = '#SINGLE#';
5884
# check single-2 success: 1
5885
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5886
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5887
UPDATE t1 SET f_int1 = @cur_value2
5888
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5890
# check single-3 success: 1
5891
SET @cur_value1= -1;
5892
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5893
UPDATE t1 SET f_int1 = @cur_value1
5894
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5896
# check single-4 success: 1
5897
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5898
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5900
# check single-5 success: 1
5901
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5903
# check single-6 success: 1
5904
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5905
ERROR HY000: Table has no partition for value 2147483647
5906
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5907
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5908
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5909
f_charbig = '#NULL#';
5911
SET f_int1 = NULL , f_int2 = -@max_row,
5912
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5913
f_charbig = '#NULL#';
5914
# check null success: 1
5916
# check null-1 success: 1
5917
UPDATE t1 SET f_int1 = -@max_row
5918
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5919
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5921
# check null-2 success: 1
5922
UPDATE t1 SET f_int1 = NULL
5923
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5924
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5926
# check null-3 success: 1
5928
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5929
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5931
# check null-4 success: 1
5933
WHERE f_int1 = 0 AND f_int2 = 0
5934
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5935
AND f_charbig = '#NULL#';
5937
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5938
SELECT f_int1, f_int1, '', '', 'was inserted'
5939
FROM t0_template source_tab
5940
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5942
# check transactions-1 success: 1
5945
# check transactions-2 success: 1
5948
# check transactions-3 success: 1
5949
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5953
# check transactions-4 success: 1
5954
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5955
SELECT f_int1, f_int1, '', '', 'was inserted'
5956
FROM t0_template source_tab
5957
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5959
# check transactions-5 success: 1
5962
Warning 1196 Some non-transactional changed tables couldn't be rolled back
5964
# check transactions-6 success: 1
5965
# INFO: Storage engine used for t1 seems to be not transactional.
5968
# check transactions-7 success: 1
5969
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5971
SET @@session.sql_mode = 'traditional';
5972
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5973
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5974
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5975
'', '', 'was inserted' FROM t0_template
5976
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5977
ERROR 22012: Division by 0
5980
# check transactions-8 success: 1
5981
# INFO: Storage engine used for t1 seems to be unable to revert
5982
# changes made by the failing statement.
5983
SET @@session.sql_mode = '';
5985
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5987
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5989
# check special-1 success: 1
5990
UPDATE t1 SET f_charbig = '';
5992
# check special-2 success: 1
5993
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5994
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5995
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5996
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5997
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5998
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5999
'just inserted' FROM t0_template
6000
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6001
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6003
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6004
f_charbig = 'updated by trigger'
6005
WHERE f_int1 = new.f_int1;
6007
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6008
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6009
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6011
# check trigger-1 success: 1
6013
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6014
f_int2 = CAST(f_char1 AS SIGNED INT),
6015
f_charbig = 'just inserted'
6016
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6018
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6019
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6020
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6021
'just inserted' FROM t0_template
6022
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6023
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6025
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6026
f_charbig = 'updated by trigger'
6027
WHERE f_int1 = new.f_int1;
6029
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6030
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6031
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6033
# check trigger-2 success: 1
6035
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6036
f_int2 = CAST(f_char1 AS SIGNED INT),
6037
f_charbig = 'just inserted'
6038
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6040
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6041
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6042
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6043
'just inserted' FROM t0_template
6044
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6045
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6047
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6048
f_charbig = 'updated by trigger'
6049
WHERE f_int1 = new.f_int1;
6051
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6052
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6054
# check trigger-3 success: 1
6056
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6057
f_int2 = CAST(f_char1 AS SIGNED INT),
6058
f_charbig = 'just inserted'
6059
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6061
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6062
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6063
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6064
'just inserted' FROM t0_template
6065
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6066
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6068
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6069
f_charbig = 'updated by trigger'
6070
WHERE f_int1 = - old.f_int1;
6072
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6073
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6075
# check trigger-4 success: 1
6077
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6078
f_int2 = CAST(f_char1 AS SIGNED INT),
6079
f_charbig = 'just inserted'
6080
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6082
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6083
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6084
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6085
'just inserted' FROM t0_template
6086
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6087
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6089
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6090
f_charbig = 'updated by trigger'
6091
WHERE f_int1 = new.f_int1;
6093
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6094
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6096
# check trigger-5 success: 1
6098
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6099
f_int2 = CAST(f_char1 AS SIGNED INT),
6100
f_charbig = 'just inserted'
6101
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6103
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6104
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6105
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6106
'just inserted' FROM t0_template
6107
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6108
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6110
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6111
f_charbig = 'updated by trigger'
6112
WHERE f_int1 = - old.f_int1;
6114
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6115
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6117
# check trigger-6 success: 1
6119
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6120
f_int2 = CAST(f_char1 AS SIGNED INT),
6121
f_charbig = 'just inserted'
6122
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6124
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6125
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6126
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6127
'just inserted' FROM t0_template
6128
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6129
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6131
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6132
f_charbig = 'updated by trigger'
6133
WHERE f_int1 = - old.f_int1;
6136
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6138
# check trigger-7 success: 1
6140
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6141
f_int2 = CAST(f_char1 AS SIGNED INT),
6142
f_charbig = 'just inserted'
6143
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6145
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6146
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6147
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6148
'just inserted' FROM t0_template
6149
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6150
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6152
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6153
f_charbig = 'updated by trigger'
6154
WHERE f_int1 = - old.f_int1;
6157
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6159
# check trigger-8 success: 1
6161
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6162
f_int2 = CAST(f_char1 AS SIGNED INT),
6163
f_charbig = 'just inserted'
6164
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6166
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6168
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6169
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6171
SET new.f_int1 = old.f_int1 + @max_row,
6172
new.f_int2 = old.f_int2 - @max_row,
6173
new.f_charbig = '####updated per update trigger####';
6176
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6177
f_charbig = '####updated per update statement itself####';
6179
# check trigger-9 success: 1
6181
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6182
f_int2 = CAST(f_char1 AS SIGNED INT),
6183
f_charbig = CONCAT('===',f_char1,'===');
6184
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6186
SET new.f_int1 = new.f_int1 + @max_row,
6187
new.f_int2 = new.f_int2 - @max_row,
6188
new.f_charbig = '####updated per update trigger####';
6191
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6192
f_charbig = '####updated per update statement itself####';
6194
# check trigger-10 success: 1
6196
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6197
f_int2 = CAST(f_char1 AS SIGNED INT),
6198
f_charbig = CONCAT('===',f_char1,'===');
6199
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6201
SET new.f_int1 = @my_max1 + @counter,
6202
new.f_int2 = @my_min2 - @counter,
6203
new.f_charbig = '####updated per insert trigger####';
6204
SET @counter = @counter + 1;
6207
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6208
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6209
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6210
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6211
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6215
# check trigger-11 success: 1
6217
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6218
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6219
AND f_charbig = '####updated per insert trigger####';
6220
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6222
SET new.f_int1 = @my_max1 + @counter,
6223
new.f_int2 = @my_min2 - @counter,
6224
new.f_charbig = '####updated per insert trigger####';
6225
SET @counter = @counter + 1;
6228
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6229
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6230
SELECT CAST(f_int1 AS CHAR),
6231
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6232
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6236
# check trigger-12 success: 1
6238
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6239
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6240
AND f_charbig = '####updated per insert trigger####';
6242
Table Op Msg_type Msg_text
6243
test.t1 analyze status OK
6244
CHECK TABLE t1 EXTENDED;
6245
Table Op Msg_type Msg_text
6246
test.t1 check status OK
6247
CHECKSUM TABLE t1 EXTENDED;
6249
test.t1 <some_value>
6251
Table Op Msg_type Msg_text
6252
test.t1 optimize status OK
6253
# check layout success: 1
6254
REPAIR TABLE t1 EXTENDED;
6255
Table Op Msg_type Msg_text
6256
test.t1 repair status OK
6257
# check layout success: 1
6260
# check TRUNCATE success: 1
6261
# check layout success: 1
6262
# End usability test (inc/partition_check.inc)
6269
f_charbig VARCHAR(1000)
6272
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
6273
(PARTITION part1 VALUES LESS THAN (0)
6274
(SUBPARTITION subpart11, SUBPARTITION subpart12),
6275
PARTITION part2 VALUES LESS THAN (5)
6276
(SUBPARTITION subpart21, SUBPARTITION subpart22),
6277
PARTITION part3 VALUES LESS THAN (10)
6278
(SUBPARTITION subpart31, SUBPARTITION subpart32),
6279
PARTITION part4 VALUES LESS THAN (2147483646)
6280
(SUBPARTITION subpart41, SUBPARTITION subpart42));
6281
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6282
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
6283
# Start usability test (inc/partition_check.inc)
6285
SHOW CREATE TABLE t1;
6287
t1 CREATE TABLE `t1` (
6288
`f_int1` int(11) DEFAULT NULL,
6289
`f_int2` int(11) DEFAULT NULL,
6290
`f_char1` char(20) DEFAULT NULL,
6291
`f_char2` char(20) DEFAULT NULL,
6292
`f_charbig` varchar(1000) DEFAULT NULL
6293
) ENGINE=MyISAM DEFAULT CHARSET=latin1
6294
/*!50100 PARTITION BY RANGE (f_int1)
6295
SUBPARTITION BY KEY (f_int2)
6296
(PARTITION part1 VALUES LESS THAN (0)
6297
(SUBPARTITION subpart11 ENGINE = MyISAM,
6298
SUBPARTITION subpart12 ENGINE = MyISAM),
6299
PARTITION part2 VALUES LESS THAN (5)
6300
(SUBPARTITION subpart21 ENGINE = MyISAM,
6301
SUBPARTITION subpart22 ENGINE = MyISAM),
6302
PARTITION part3 VALUES LESS THAN (10)
6303
(SUBPARTITION subpart31 ENGINE = MyISAM,
6304
SUBPARTITION subpart32 ENGINE = MyISAM),
6305
PARTITION part4 VALUES LESS THAN (2147483646)
6306
(SUBPARTITION subpart41 ENGINE = MyISAM,
6307
SUBPARTITION subpart42 ENGINE = MyISAM)) */
6310
t1#P#part1#SP#subpart11.MYD
6311
t1#P#part1#SP#subpart11.MYI
6312
t1#P#part1#SP#subpart12.MYD
6313
t1#P#part1#SP#subpart12.MYI
6314
t1#P#part2#SP#subpart21.MYD
6315
t1#P#part2#SP#subpart21.MYI
6316
t1#P#part2#SP#subpart22.MYD
6317
t1#P#part2#SP#subpart22.MYI
6318
t1#P#part3#SP#subpart31.MYD
6319
t1#P#part3#SP#subpart31.MYI
6320
t1#P#part3#SP#subpart32.MYD
6321
t1#P#part3#SP#subpart32.MYI
6322
t1#P#part4#SP#subpart41.MYD
6323
t1#P#part4#SP#subpart41.MYI
6324
t1#P#part4#SP#subpart42.MYD
6325
t1#P#part4#SP#subpart42.MYI
6329
# check prerequisites-1 success: 1
6330
# check COUNT(*) success: 1
6331
# check MIN/MAX(f_int1) success: 1
6332
# check MIN/MAX(f_int2) success: 1
6333
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6334
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6335
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6336
WHERE f_int1 IN (2,3);
6337
# check prerequisites-3 success: 1
6338
DELETE FROM t1 WHERE f_charbig = 'delete me';
6339
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6340
# check read via f_int1 success: 1
6341
# check read via f_int2 success: 1
6343
# check multiple-1 success: 1
6344
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6346
# check multiple-2 success: 1
6347
INSERT INTO t1 SELECT * FROM t0_template
6348
WHERE MOD(f_int1,3) = 0;
6350
# check multiple-3 success: 1
6351
UPDATE t1 SET f_int1 = f_int1 + @max_row
6352
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6353
AND @max_row_div2 + @max_row_div4;
6355
# check multiple-4 success: 1
6357
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6358
AND @max_row_div2 + @max_row_div4 + @max_row;
6360
# check multiple-5 success: 1
6361
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6363
SET f_int1 = @cur_value , f_int2 = @cur_value,
6364
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6365
f_charbig = '#SINGLE#';
6367
# check single-1 success: 1
6368
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6370
SET f_int1 = @cur_value , f_int2 = @cur_value,
6371
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6372
f_charbig = '#SINGLE#';
6374
# check single-2 success: 1
6375
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6376
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6377
UPDATE t1 SET f_int1 = @cur_value2
6378
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6380
# check single-3 success: 1
6381
SET @cur_value1= -1;
6382
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6383
UPDATE t1 SET f_int1 = @cur_value1
6384
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6386
# check single-4 success: 1
6387
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6388
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6390
# check single-5 success: 1
6391
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6393
# check single-6 success: 1
6394
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6395
ERROR HY000: Table has no partition for value 2147483647
6396
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6397
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6398
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6399
f_charbig = '#NULL#';
6401
SET f_int1 = NULL , f_int2 = -@max_row,
6402
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6403
f_charbig = '#NULL#';
6404
# check null success: 1
6406
# check null-1 success: 1
6407
UPDATE t1 SET f_int1 = -@max_row
6408
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6409
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6411
# check null-2 success: 1
6412
UPDATE t1 SET f_int1 = NULL
6413
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6414
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6416
# check null-3 success: 1
6418
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6419
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6421
# check null-4 success: 1
6423
WHERE f_int1 = 0 AND f_int2 = 0
6424
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6425
AND f_charbig = '#NULL#';
6427
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6428
SELECT f_int1, f_int1, '', '', 'was inserted'
6429
FROM t0_template source_tab
6430
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6432
# check transactions-1 success: 1
6435
# check transactions-2 success: 1
6438
# check transactions-3 success: 1
6439
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6443
# check transactions-4 success: 1
6444
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6445
SELECT f_int1, f_int1, '', '', 'was inserted'
6446
FROM t0_template source_tab
6447
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6449
# check transactions-5 success: 1
6452
Warning 1196 Some non-transactional changed tables couldn't be rolled back
6454
# check transactions-6 success: 1
6455
# INFO: Storage engine used for t1 seems to be not transactional.
6458
# check transactions-7 success: 1
6459
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6461
SET @@session.sql_mode = 'traditional';
6462
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6463
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6464
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6465
'', '', 'was inserted' FROM t0_template
6466
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6467
ERROR 22012: Division by 0
6470
# check transactions-8 success: 1
6471
# INFO: Storage engine used for t1 seems to be unable to revert
6472
# changes made by the failing statement.
6473
SET @@session.sql_mode = '';
6475
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6477
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6479
# check special-1 success: 1
6480
UPDATE t1 SET f_charbig = '';
6482
# check special-2 success: 1
6483
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6484
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6485
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6486
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6487
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6488
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6489
'just inserted' FROM t0_template
6490
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6491
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6493
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6494
f_charbig = 'updated by trigger'
6495
WHERE f_int1 = new.f_int1;
6497
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6498
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6499
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6501
# check trigger-1 success: 1
6503
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6504
f_int2 = CAST(f_char1 AS SIGNED INT),
6505
f_charbig = 'just inserted'
6506
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6508
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6509
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6510
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6511
'just inserted' FROM t0_template
6512
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6513
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6515
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6516
f_charbig = 'updated by trigger'
6517
WHERE f_int1 = new.f_int1;
6519
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6520
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6521
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6523
# check trigger-2 success: 1
6525
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6526
f_int2 = CAST(f_char1 AS SIGNED INT),
6527
f_charbig = 'just inserted'
6528
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6530
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6531
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6532
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6533
'just inserted' FROM t0_template
6534
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6535
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6537
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6538
f_charbig = 'updated by trigger'
6539
WHERE f_int1 = new.f_int1;
6541
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6542
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6544
# check trigger-3 success: 1
6546
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6547
f_int2 = CAST(f_char1 AS SIGNED INT),
6548
f_charbig = 'just inserted'
6549
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6551
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6552
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6553
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6554
'just inserted' FROM t0_template
6555
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6556
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6558
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6559
f_charbig = 'updated by trigger'
6560
WHERE f_int1 = - old.f_int1;
6562
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6563
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6565
# check trigger-4 success: 1
6567
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6568
f_int2 = CAST(f_char1 AS SIGNED INT),
6569
f_charbig = 'just inserted'
6570
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6572
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6573
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6574
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6575
'just inserted' FROM t0_template
6576
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6577
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6579
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6580
f_charbig = 'updated by trigger'
6581
WHERE f_int1 = new.f_int1;
6583
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6584
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6586
# check trigger-5 success: 1
6588
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6589
f_int2 = CAST(f_char1 AS SIGNED INT),
6590
f_charbig = 'just inserted'
6591
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6593
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6594
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6595
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6596
'just inserted' FROM t0_template
6597
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6598
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6600
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6601
f_charbig = 'updated by trigger'
6602
WHERE f_int1 = - old.f_int1;
6604
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6605
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6607
# check trigger-6 success: 1
6609
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6610
f_int2 = CAST(f_char1 AS SIGNED INT),
6611
f_charbig = 'just inserted'
6612
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6614
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6615
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6616
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6617
'just inserted' FROM t0_template
6618
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6619
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6621
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6622
f_charbig = 'updated by trigger'
6623
WHERE f_int1 = - old.f_int1;
6626
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6628
# check trigger-7 success: 1
6630
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6631
f_int2 = CAST(f_char1 AS SIGNED INT),
6632
f_charbig = 'just inserted'
6633
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6635
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6636
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6637
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6638
'just inserted' FROM t0_template
6639
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6640
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6642
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6643
f_charbig = 'updated by trigger'
6644
WHERE f_int1 = - old.f_int1;
6647
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6649
# check trigger-8 success: 1
6651
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6652
f_int2 = CAST(f_char1 AS SIGNED INT),
6653
f_charbig = 'just inserted'
6654
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6656
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6658
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6659
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6661
SET new.f_int1 = old.f_int1 + @max_row,
6662
new.f_int2 = old.f_int2 - @max_row,
6663
new.f_charbig = '####updated per update trigger####';
6666
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6667
f_charbig = '####updated per update statement itself####';
6669
# check trigger-9 success: 1
6671
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6672
f_int2 = CAST(f_char1 AS SIGNED INT),
6673
f_charbig = CONCAT('===',f_char1,'===');
6674
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6676
SET new.f_int1 = new.f_int1 + @max_row,
6677
new.f_int2 = new.f_int2 - @max_row,
6678
new.f_charbig = '####updated per update trigger####';
6681
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6682
f_charbig = '####updated per update statement itself####';
6684
# check trigger-10 success: 1
6686
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6687
f_int2 = CAST(f_char1 AS SIGNED INT),
6688
f_charbig = CONCAT('===',f_char1,'===');
6689
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6691
SET new.f_int1 = @my_max1 + @counter,
6692
new.f_int2 = @my_min2 - @counter,
6693
new.f_charbig = '####updated per insert trigger####';
6694
SET @counter = @counter + 1;
6697
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6698
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6699
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6700
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6701
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6705
# check trigger-11 success: 1
6707
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6708
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6709
AND f_charbig = '####updated per insert trigger####';
6710
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6712
SET new.f_int1 = @my_max1 + @counter,
6713
new.f_int2 = @my_min2 - @counter,
6714
new.f_charbig = '####updated per insert trigger####';
6715
SET @counter = @counter + 1;
6718
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6719
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6720
SELECT CAST(f_int1 AS CHAR),
6721
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6722
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6726
# check trigger-12 success: 1
6728
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6729
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6730
AND f_charbig = '####updated per insert trigger####';
6732
Table Op Msg_type Msg_text
6733
test.t1 analyze status OK
6734
CHECK TABLE t1 EXTENDED;
6735
Table Op Msg_type Msg_text
6736
test.t1 check status OK
6737
CHECKSUM TABLE t1 EXTENDED;
6739
test.t1 <some_value>
6741
Table Op Msg_type Msg_text
6742
test.t1 optimize status OK
6743
# check layout success: 1
6744
REPAIR TABLE t1 EXTENDED;
6745
Table Op Msg_type Msg_text
6746
test.t1 repair status OK
6747
# check layout success: 1
6750
# check TRUNCATE success: 1
6751
# check layout success: 1
6752
# End usability test (inc/partition_check.inc)
6759
f_charbig VARCHAR(1000)
6762
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
6763
(PARTITION part1 VALUES IN (0)
6764
(SUBPARTITION sp11, SUBPARTITION sp12),
6765
PARTITION part2 VALUES IN (1)
6766
(SUBPARTITION sp21, SUBPARTITION sp22),
6767
PARTITION part3 VALUES IN (2)
6768
(SUBPARTITION sp31, SUBPARTITION sp32),
6769
PARTITION part4 VALUES IN (NULL)
6770
(SUBPARTITION sp41, SUBPARTITION sp42));
6771
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6772
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
6773
# Start usability test (inc/partition_check.inc)
6775
SHOW CREATE TABLE t1;
6777
t1 CREATE TABLE `t1` (
6778
`f_int1` int(11) DEFAULT NULL,
6779
`f_int2` int(11) DEFAULT NULL,
6780
`f_char1` char(20) DEFAULT NULL,
6781
`f_char2` char(20) DEFAULT NULL,
6782
`f_charbig` varchar(1000) DEFAULT NULL
6783
) ENGINE=MyISAM DEFAULT CHARSET=latin1
6784
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
6785
SUBPARTITION BY HASH (f_int2 + 1)
6786
(PARTITION part1 VALUES IN (0)
6787
(SUBPARTITION sp11 ENGINE = MyISAM,
6788
SUBPARTITION sp12 ENGINE = MyISAM),
6789
PARTITION part2 VALUES IN (1)
6790
(SUBPARTITION sp21 ENGINE = MyISAM,
6791
SUBPARTITION sp22 ENGINE = MyISAM),
6792
PARTITION part3 VALUES IN (2)
6793
(SUBPARTITION sp31 ENGINE = MyISAM,
6794
SUBPARTITION sp32 ENGINE = MyISAM),
6795
PARTITION part4 VALUES IN (NULL)
6796
(SUBPARTITION sp41 ENGINE = MyISAM,
6797
SUBPARTITION sp42 ENGINE = MyISAM)) */
6800
t1#P#part1#SP#sp11.MYD
6801
t1#P#part1#SP#sp11.MYI
6802
t1#P#part1#SP#sp12.MYD
6803
t1#P#part1#SP#sp12.MYI
6804
t1#P#part2#SP#sp21.MYD
6805
t1#P#part2#SP#sp21.MYI
6806
t1#P#part2#SP#sp22.MYD
6807
t1#P#part2#SP#sp22.MYI
6808
t1#P#part3#SP#sp31.MYD
6809
t1#P#part3#SP#sp31.MYI
6810
t1#P#part3#SP#sp32.MYD
6811
t1#P#part3#SP#sp32.MYI
6812
t1#P#part4#SP#sp41.MYD
6813
t1#P#part4#SP#sp41.MYI
6814
t1#P#part4#SP#sp42.MYD
6815
t1#P#part4#SP#sp42.MYI
6819
# check prerequisites-1 success: 1
6820
# check COUNT(*) success: 1
6821
# check MIN/MAX(f_int1) success: 1
6822
# check MIN/MAX(f_int2) success: 1
6823
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6824
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6825
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6826
WHERE f_int1 IN (2,3);
6827
# check prerequisites-3 success: 1
6828
DELETE FROM t1 WHERE f_charbig = 'delete me';
6829
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6830
# check read via f_int1 success: 1
6831
# check read via f_int2 success: 1
6833
# check multiple-1 success: 1
6834
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6836
# check multiple-2 success: 1
6837
INSERT INTO t1 SELECT * FROM t0_template
6838
WHERE MOD(f_int1,3) = 0;
6840
# check multiple-3 success: 1
6841
UPDATE t1 SET f_int1 = f_int1 + @max_row
6842
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6843
AND @max_row_div2 + @max_row_div4;
6845
# check multiple-4 success: 1
6847
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6848
AND @max_row_div2 + @max_row_div4 + @max_row;
6850
# check multiple-5 success: 1
6851
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6853
SET f_int1 = @cur_value , f_int2 = @cur_value,
6854
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6855
f_charbig = '#SINGLE#';
6857
# check single-1 success: 1
6858
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6860
SET f_int1 = @cur_value , f_int2 = @cur_value,
6861
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6862
f_charbig = '#SINGLE#';
6864
# check single-2 success: 1
6865
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6866
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6867
UPDATE t1 SET f_int1 = @cur_value2
6868
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6870
# check single-3 success: 1
6871
SET @cur_value1= -1;
6872
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6873
UPDATE t1 SET f_int1 = @cur_value1
6874
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6876
# check single-4 success: 1
6877
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6878
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6880
# check single-5 success: 1
6881
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6883
# check single-6 success: 1
6884
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6886
# check single-7 success: 1
6887
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6888
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6889
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6890
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6891
f_charbig = '#NULL#';
6893
SET f_int1 = NULL , f_int2 = -@max_row,
6894
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6895
f_charbig = '#NULL#';
6896
# check null success: 1
6898
# check null-1 success: 1
6899
UPDATE t1 SET f_int1 = -@max_row
6900
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6901
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6903
# check null-2 success: 1
6904
UPDATE t1 SET f_int1 = NULL
6905
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6906
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6908
# check null-3 success: 1
6910
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6911
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6913
# check null-4 success: 1
6915
WHERE f_int1 = 0 AND f_int2 = 0
6916
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6917
AND f_charbig = '#NULL#';
6919
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6920
SELECT f_int1, f_int1, '', '', 'was inserted'
6921
FROM t0_template source_tab
6922
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6924
# check transactions-1 success: 1
6927
# check transactions-2 success: 1
6930
# check transactions-3 success: 1
6931
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6935
# check transactions-4 success: 1
6936
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6937
SELECT f_int1, f_int1, '', '', 'was inserted'
6938
FROM t0_template source_tab
6939
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6941
# check transactions-5 success: 1
6944
Warning 1196 Some non-transactional changed tables couldn't be rolled back
6946
# check transactions-6 success: 1
6947
# INFO: Storage engine used for t1 seems to be not transactional.
6950
# check transactions-7 success: 1
6951
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6953
SET @@session.sql_mode = 'traditional';
6954
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6955
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6956
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6957
'', '', 'was inserted' FROM t0_template
6958
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6959
ERROR 22012: Division by 0
6962
# check transactions-8 success: 1
6963
# INFO: Storage engine used for t1 seems to be unable to revert
6964
# changes made by the failing statement.
6965
SET @@session.sql_mode = '';
6967
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6969
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6971
# check special-1 success: 1
6972
UPDATE t1 SET f_charbig = '';
6974
# check special-2 success: 1
6975
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6976
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6977
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6978
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6979
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6980
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6981
'just inserted' FROM t0_template
6982
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6983
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6985
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6986
f_charbig = 'updated by trigger'
6987
WHERE f_int1 = new.f_int1;
6989
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6990
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6991
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6993
# check trigger-1 success: 1
6995
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6996
f_int2 = CAST(f_char1 AS SIGNED INT),
6997
f_charbig = 'just inserted'
6998
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7000
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7001
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7002
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7003
'just inserted' FROM t0_template
7004
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7005
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7007
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7008
f_charbig = 'updated by trigger'
7009
WHERE f_int1 = new.f_int1;
7011
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7012
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7013
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7015
# check trigger-2 success: 1
7017
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7018
f_int2 = CAST(f_char1 AS SIGNED INT),
7019
f_charbig = 'just inserted'
7020
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7022
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7023
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7024
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7025
'just inserted' FROM t0_template
7026
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7027
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7029
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7030
f_charbig = 'updated by trigger'
7031
WHERE f_int1 = new.f_int1;
7033
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7034
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7036
# check trigger-3 success: 1
7038
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7039
f_int2 = CAST(f_char1 AS SIGNED INT),
7040
f_charbig = 'just inserted'
7041
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7043
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7044
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7045
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7046
'just inserted' FROM t0_template
7047
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7048
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7050
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7051
f_charbig = 'updated by trigger'
7052
WHERE f_int1 = - old.f_int1;
7054
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7055
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7057
# check trigger-4 success: 1
7059
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7060
f_int2 = CAST(f_char1 AS SIGNED INT),
7061
f_charbig = 'just inserted'
7062
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7064
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7065
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7066
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7067
'just inserted' FROM t0_template
7068
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7069
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7071
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7072
f_charbig = 'updated by trigger'
7073
WHERE f_int1 = new.f_int1;
7075
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7076
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7078
# check trigger-5 success: 1
7080
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7081
f_int2 = CAST(f_char1 AS SIGNED INT),
7082
f_charbig = 'just inserted'
7083
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7085
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7086
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7087
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7088
'just inserted' FROM t0_template
7089
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7090
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7092
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7093
f_charbig = 'updated by trigger'
7094
WHERE f_int1 = - old.f_int1;
7096
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7097
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7099
# check trigger-6 success: 1
7101
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7102
f_int2 = CAST(f_char1 AS SIGNED INT),
7103
f_charbig = 'just inserted'
7104
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7106
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7107
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7108
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7109
'just inserted' FROM t0_template
7110
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7111
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7113
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7114
f_charbig = 'updated by trigger'
7115
WHERE f_int1 = - old.f_int1;
7118
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7120
# check trigger-7 success: 1
7122
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7123
f_int2 = CAST(f_char1 AS SIGNED INT),
7124
f_charbig = 'just inserted'
7125
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7127
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7128
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7129
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7130
'just inserted' FROM t0_template
7131
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7132
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7134
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7135
f_charbig = 'updated by trigger'
7136
WHERE f_int1 = - old.f_int1;
7139
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7141
# check trigger-8 success: 1
7143
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7144
f_int2 = CAST(f_char1 AS SIGNED INT),
7145
f_charbig = 'just inserted'
7146
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7148
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7151
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7153
SET new.f_int1 = old.f_int1 + @max_row,
7154
new.f_int2 = old.f_int2 - @max_row,
7155
new.f_charbig = '####updated per update trigger####';
7158
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7159
f_charbig = '####updated per update statement itself####';
7161
# check trigger-9 success: 1
7163
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7164
f_int2 = CAST(f_char1 AS SIGNED INT),
7165
f_charbig = CONCAT('===',f_char1,'===');
7166
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7168
SET new.f_int1 = new.f_int1 + @max_row,
7169
new.f_int2 = new.f_int2 - @max_row,
7170
new.f_charbig = '####updated per update trigger####';
7173
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7174
f_charbig = '####updated per update statement itself####';
7176
# check trigger-10 success: 1
7178
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7179
f_int2 = CAST(f_char1 AS SIGNED INT),
7180
f_charbig = CONCAT('===',f_char1,'===');
7181
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7183
SET new.f_int1 = @my_max1 + @counter,
7184
new.f_int2 = @my_min2 - @counter,
7185
new.f_charbig = '####updated per insert trigger####';
7186
SET @counter = @counter + 1;
7189
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7190
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7191
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7192
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7193
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7197
# check trigger-11 success: 1
7199
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7200
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7201
AND f_charbig = '####updated per insert trigger####';
7202
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7204
SET new.f_int1 = @my_max1 + @counter,
7205
new.f_int2 = @my_min2 - @counter,
7206
new.f_charbig = '####updated per insert trigger####';
7207
SET @counter = @counter + 1;
7210
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7211
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7212
SELECT CAST(f_int1 AS CHAR),
7213
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7218
# check trigger-12 success: 1
7220
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7221
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7222
AND f_charbig = '####updated per insert trigger####';
7224
Table Op Msg_type Msg_text
7225
test.t1 analyze status OK
7226
CHECK TABLE t1 EXTENDED;
7227
Table Op Msg_type Msg_text
7228
test.t1 check status OK
7229
CHECKSUM TABLE t1 EXTENDED;
7231
test.t1 <some_value>
7233
Table Op Msg_type Msg_text
7234
test.t1 optimize status OK
7235
# check layout success: 1
7236
REPAIR TABLE t1 EXTENDED;
7237
Table Op Msg_type Msg_text
7238
test.t1 repair status OK
7239
# check layout success: 1
7242
# check TRUNCATE success: 1
7243
# check layout success: 1
7244
# End usability test (inc/partition_check.inc)
7251
f_charbig VARCHAR(1000)
7254
PARTITION BY LIST(ABS(MOD(f_int1,2)))
7255
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
7256
(PARTITION part1 VALUES IN (0),
7257
PARTITION part2 VALUES IN (1),
7258
PARTITION part3 VALUES IN (NULL));
7259
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7260
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
7261
# Start usability test (inc/partition_check.inc)
7263
SHOW CREATE TABLE t1;
7265
t1 CREATE TABLE `t1` (
7266
`f_int1` int(11) DEFAULT NULL,
7267
`f_int2` int(11) DEFAULT NULL,
7268
`f_char1` char(20) DEFAULT NULL,
7269
`f_char2` char(20) DEFAULT NULL,
7270
`f_charbig` varchar(1000) DEFAULT NULL
7271
) ENGINE=MyISAM DEFAULT CHARSET=latin1
7272
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
7273
SUBPARTITION BY KEY (f_int2)
7275
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
7276
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
7277
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
7280
t1#P#part1#SP#part1sp0.MYD
7281
t1#P#part1#SP#part1sp0.MYI
7282
t1#P#part1#SP#part1sp1.MYD
7283
t1#P#part1#SP#part1sp1.MYI
7284
t1#P#part1#SP#part1sp2.MYD
7285
t1#P#part1#SP#part1sp2.MYI
7286
t1#P#part2#SP#part2sp0.MYD
7287
t1#P#part2#SP#part2sp0.MYI
7288
t1#P#part2#SP#part2sp1.MYD
7289
t1#P#part2#SP#part2sp1.MYI
7290
t1#P#part2#SP#part2sp2.MYD
7291
t1#P#part2#SP#part2sp2.MYI
7292
t1#P#part3#SP#part3sp0.MYD
7293
t1#P#part3#SP#part3sp0.MYI
7294
t1#P#part3#SP#part3sp1.MYD
7295
t1#P#part3#SP#part3sp1.MYI
7296
t1#P#part3#SP#part3sp2.MYD
7297
t1#P#part3#SP#part3sp2.MYI
7301
# check prerequisites-1 success: 1
7302
# check COUNT(*) success: 1
7303
# check MIN/MAX(f_int1) success: 1
7304
# check MIN/MAX(f_int2) success: 1
7305
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7306
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7307
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7308
WHERE f_int1 IN (2,3);
7309
# check prerequisites-3 success: 1
7310
DELETE FROM t1 WHERE f_charbig = 'delete me';
7311
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
7312
# check read via f_int1 success: 1
7313
# check read via f_int2 success: 1
7315
# check multiple-1 success: 1
7316
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7318
# check multiple-2 success: 1
7319
INSERT INTO t1 SELECT * FROM t0_template
7320
WHERE MOD(f_int1,3) = 0;
7322
# check multiple-3 success: 1
7323
UPDATE t1 SET f_int1 = f_int1 + @max_row
7324
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7325
AND @max_row_div2 + @max_row_div4;
7327
# check multiple-4 success: 1
7329
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7330
AND @max_row_div2 + @max_row_div4 + @max_row;
7332
# check multiple-5 success: 1
7333
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7335
SET f_int1 = @cur_value , f_int2 = @cur_value,
7336
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7337
f_charbig = '#SINGLE#';
7339
# check single-1 success: 1
7340
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7342
SET f_int1 = @cur_value , f_int2 = @cur_value,
7343
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7344
f_charbig = '#SINGLE#';
7346
# check single-2 success: 1
7347
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7348
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7349
UPDATE t1 SET f_int1 = @cur_value2
7350
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7352
# check single-3 success: 1
7353
SET @cur_value1= -1;
7354
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7355
UPDATE t1 SET f_int1 = @cur_value1
7356
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7358
# check single-4 success: 1
7359
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7360
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7362
# check single-5 success: 1
7363
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7365
# check single-6 success: 1
7366
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7368
# check single-7 success: 1
7369
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7370
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7371
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7372
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7373
f_charbig = '#NULL#';
7375
SET f_int1 = NULL , f_int2 = -@max_row,
7376
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7377
f_charbig = '#NULL#';
7378
# check null success: 1
7380
# check null-1 success: 1
7381
UPDATE t1 SET f_int1 = -@max_row
7382
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7383
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7385
# check null-2 success: 1
7386
UPDATE t1 SET f_int1 = NULL
7387
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7388
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7390
# check null-3 success: 1
7392
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7393
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7395
# check null-4 success: 1
7397
WHERE f_int1 = 0 AND f_int2 = 0
7398
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7399
AND f_charbig = '#NULL#';
7401
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7402
SELECT f_int1, f_int1, '', '', 'was inserted'
7403
FROM t0_template source_tab
7404
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7406
# check transactions-1 success: 1
7409
# check transactions-2 success: 1
7412
# check transactions-3 success: 1
7413
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7417
# check transactions-4 success: 1
7418
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7419
SELECT f_int1, f_int1, '', '', 'was inserted'
7420
FROM t0_template source_tab
7421
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7423
# check transactions-5 success: 1
7426
Warning 1196 Some non-transactional changed tables couldn't be rolled back
7428
# check transactions-6 success: 1
7429
# INFO: Storage engine used for t1 seems to be not transactional.
7432
# check transactions-7 success: 1
7433
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7435
SET @@session.sql_mode = 'traditional';
7436
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7437
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7438
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7439
'', '', 'was inserted' FROM t0_template
7440
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7441
ERROR 22012: Division by 0
7444
# check transactions-8 success: 1
7445
# INFO: Storage engine used for t1 seems to be unable to revert
7446
# changes made by the failing statement.
7447
SET @@session.sql_mode = '';
7449
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7451
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7453
# check special-1 success: 1
7454
UPDATE t1 SET f_charbig = '';
7456
# check special-2 success: 1
7457
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7458
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7459
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7460
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7461
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7462
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7463
'just inserted' FROM t0_template
7464
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7465
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7467
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7468
f_charbig = 'updated by trigger'
7469
WHERE f_int1 = new.f_int1;
7471
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7472
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7473
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7475
# check trigger-1 success: 1
7477
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7478
f_int2 = CAST(f_char1 AS SIGNED INT),
7479
f_charbig = 'just inserted'
7480
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7482
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7483
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7484
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7485
'just inserted' FROM t0_template
7486
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7487
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7489
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7490
f_charbig = 'updated by trigger'
7491
WHERE f_int1 = new.f_int1;
7493
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7494
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7495
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7497
# check trigger-2 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;
7505
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7506
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7507
'just inserted' FROM t0_template
7508
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7509
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7511
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7512
f_charbig = 'updated by trigger'
7513
WHERE f_int1 = new.f_int1;
7515
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7516
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7518
# check trigger-3 success: 1
7520
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7521
f_int2 = CAST(f_char1 AS SIGNED INT),
7522
f_charbig = 'just inserted'
7523
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7525
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7526
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7527
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7528
'just inserted' FROM t0_template
7529
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7530
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7532
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7533
f_charbig = 'updated by trigger'
7534
WHERE f_int1 = - old.f_int1;
7536
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7537
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7539
# check trigger-4 success: 1
7541
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7542
f_int2 = CAST(f_char1 AS SIGNED INT),
7543
f_charbig = 'just inserted'
7544
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7546
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7547
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7548
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7549
'just inserted' FROM t0_template
7550
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7551
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7553
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7554
f_charbig = 'updated by trigger'
7555
WHERE f_int1 = new.f_int1;
7557
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7558
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7560
# check trigger-5 success: 1
7562
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7563
f_int2 = CAST(f_char1 AS SIGNED INT),
7564
f_charbig = 'just inserted'
7565
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7567
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7568
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7569
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7570
'just inserted' FROM t0_template
7571
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7572
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7574
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7575
f_charbig = 'updated by trigger'
7576
WHERE f_int1 = - old.f_int1;
7578
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7579
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7581
# check trigger-6 success: 1
7583
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7584
f_int2 = CAST(f_char1 AS SIGNED INT),
7585
f_charbig = 'just inserted'
7586
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7588
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7589
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7590
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7591
'just inserted' FROM t0_template
7592
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7593
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7595
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7596
f_charbig = 'updated by trigger'
7597
WHERE f_int1 = - old.f_int1;
7600
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7602
# check trigger-7 success: 1
7604
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7605
f_int2 = CAST(f_char1 AS SIGNED INT),
7606
f_charbig = 'just inserted'
7607
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7609
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7610
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7611
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7612
'just inserted' FROM t0_template
7613
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7614
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7616
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7617
f_charbig = 'updated by trigger'
7618
WHERE f_int1 = - old.f_int1;
7621
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7623
# check trigger-8 success: 1
7625
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7626
f_int2 = CAST(f_char1 AS SIGNED INT),
7627
f_charbig = 'just inserted'
7628
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7630
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7632
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7633
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7635
SET new.f_int1 = old.f_int1 + @max_row,
7636
new.f_int2 = old.f_int2 - @max_row,
7637
new.f_charbig = '####updated per update trigger####';
7640
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7641
f_charbig = '####updated per update statement itself####';
7643
# check trigger-9 success: 1
7645
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7646
f_int2 = CAST(f_char1 AS SIGNED INT),
7647
f_charbig = CONCAT('===',f_char1,'===');
7648
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7650
SET new.f_int1 = new.f_int1 + @max_row,
7651
new.f_int2 = new.f_int2 - @max_row,
7652
new.f_charbig = '####updated per update trigger####';
7655
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7656
f_charbig = '####updated per update statement itself####';
7658
# check trigger-10 success: 1
7660
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7661
f_int2 = CAST(f_char1 AS SIGNED INT),
7662
f_charbig = CONCAT('===',f_char1,'===');
7663
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7665
SET new.f_int1 = @my_max1 + @counter,
7666
new.f_int2 = @my_min2 - @counter,
7667
new.f_charbig = '####updated per insert trigger####';
7668
SET @counter = @counter + 1;
7671
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7672
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7673
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7674
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7679
# check trigger-11 success: 1
7681
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7682
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7683
AND f_charbig = '####updated per insert trigger####';
7684
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7686
SET new.f_int1 = @my_max1 + @counter,
7687
new.f_int2 = @my_min2 - @counter,
7688
new.f_charbig = '####updated per insert trigger####';
7689
SET @counter = @counter + 1;
7692
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7693
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7694
SELECT CAST(f_int1 AS CHAR),
7695
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7696
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7700
# check trigger-12 success: 1
7702
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7703
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7704
AND f_charbig = '####updated per insert trigger####';
7706
Table Op Msg_type Msg_text
7707
test.t1 analyze status OK
7708
CHECK TABLE t1 EXTENDED;
7709
Table Op Msg_type Msg_text
7710
test.t1 check status OK
7711
CHECKSUM TABLE t1 EXTENDED;
7713
test.t1 <some_value>
7715
Table Op Msg_type Msg_text
7716
test.t1 optimize status OK
7717
# check layout success: 1
7718
REPAIR TABLE t1 EXTENDED;
7719
Table Op Msg_type Msg_text
7720
test.t1 repair status OK
7721
# check layout success: 1
7724
# check TRUNCATE success: 1
7725
# check layout success: 1
7726
# End usability test (inc/partition_check.inc)
7728
#------------------------------------------------------------------------
7729
# 2 Tables with PRIMARY KEY and/or UNIQUE INDEXes
7730
# The partitioning function contains one column.
7731
#------------------------------------------------------------------------
7732
# 2.5 PRIMARY KEY + UNIQUE INDEX consisting of two columns
7733
DROP TABLE IF EXISTS t1;
7739
f_charbig VARCHAR(1000)
7740
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
7742
PARTITION BY HASH(f_int1) PARTITIONS 2;
7743
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7744
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
7745
# Start usability test (inc/partition_check.inc)
7747
SHOW CREATE TABLE t1;
7749
t1 CREATE TABLE `t1` (
7750
`f_int1` int(11) DEFAULT NULL,
7751
`f_int2` int(11) DEFAULT NULL,
7752
`f_char1` char(20) DEFAULT NULL,
7753
`f_char2` char(20) DEFAULT NULL,
7754
`f_charbig` varchar(1000) DEFAULT NULL,
7755
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
7756
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
7757
) ENGINE=MyISAM DEFAULT CHARSET=latin1
7758
/*!50100 PARTITION BY HASH (f_int1)
7769
# check prerequisites-1 success: 1
7770
# check COUNT(*) success: 1
7771
# check MIN/MAX(f_int1) success: 1
7772
# check MIN/MAX(f_int2) success: 1
7773
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7774
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7775
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7776
WHERE f_int1 IN (2,3);
7777
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
7778
# check prerequisites-3 success: 1
7779
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
7780
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7781
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7782
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7783
WHERE f_int1 IN (2,3);
7784
DELETE FROM t1 WHERE f_charbig = 'delete me';
7785
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7786
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7787
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7788
WHERE f_int1 IN (2,3);
7789
DELETE FROM t1 WHERE f_charbig = 'delete me';
7790
# check read via f_int1 success: 1
7791
# check read via f_int2 success: 1
7793
# check multiple-1 success: 1
7794
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7796
# check multiple-2 success: 1
7797
INSERT INTO t1 SELECT * FROM t0_template
7798
WHERE MOD(f_int1,3) = 0;
7800
# check multiple-3 success: 1
7801
UPDATE t1 SET f_int1 = f_int1 + @max_row
7802
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7803
AND @max_row_div2 + @max_row_div4;
7805
# check multiple-4 success: 1
7807
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7808
AND @max_row_div2 + @max_row_div4 + @max_row;
7810
# check multiple-5 success: 1
7811
SELECT COUNT(*) INTO @try_count FROM t0_template
7812
WHERE MOD(f_int1,3) = 0
7813
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7814
SELECT COUNT(*) INTO @clash_count
7815
FROM t1 INNER JOIN t0_template USING(f_int1)
7816
WHERE MOD(f_int1,3) = 0
7817
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7818
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7820
SET f_int1 = @cur_value , f_int2 = @cur_value,
7821
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7822
f_charbig = '#SINGLE#';
7824
# check single-1 success: 1
7825
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7827
SET f_int1 = @cur_value , f_int2 = @cur_value,
7828
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7829
f_charbig = '#SINGLE#';
7831
# check single-2 success: 1
7832
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7833
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7834
UPDATE t1 SET f_int1 = @cur_value2
7835
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7837
# check single-3 success: 1
7838
SET @cur_value1= -1;
7839
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7840
UPDATE t1 SET f_int1 = @cur_value1
7841
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7843
# check single-4 success: 1
7844
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7845
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7847
# check single-5 success: 1
7848
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7850
# check single-6 success: 1
7851
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7853
# check single-7 success: 1
7854
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7855
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7856
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7857
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7858
f_charbig = '#NULL#';
7860
SET f_int1 = NULL , f_int2 = -@max_row,
7861
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7862
f_charbig = '#NULL#';
7863
# check null success: 1
7865
# check null-1 success: 1
7866
UPDATE t1 SET f_int1 = -@max_row
7867
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7868
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7870
# check null-2 success: 1
7871
UPDATE t1 SET f_int1 = NULL
7872
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7873
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7875
# check null-3 success: 1
7877
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7878
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7880
# check null-4 success: 1
7882
WHERE f_int1 = 0 AND f_int2 = 0
7883
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7884
AND f_charbig = '#NULL#';
7885
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7886
SELECT f_int1, f_int1, '', '', 'was inserted'
7887
FROM t0_template source_tab
7888
WHERE MOD(f_int1,3) = 0
7889
AND f_int1 BETWEEN @max_row_div2 AND @max_row
7891
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
7892
f_int2 = 2 * @max_row + source_tab.f_int1,
7893
f_charbig = 'was updated';
7895
# check unique-1-a success: 1
7897
# check unique-1-b success: 1
7898
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7899
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7900
f_int2 = CAST(f_char1 AS SIGNED INT),
7901
f_charbig = CONCAT('===',f_char1,'===')
7902
WHERE f_charbig = 'was updated';
7903
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7904
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
7905
FROM t0_template source_tab
7906
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7908
# check replace success: 1
7910
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
7912
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
7913
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
7914
UPDATE t1 SET f_int2 = f_int1,
7915
f_char1 = CAST(f_int1 AS CHAR),
7916
f_char2 = CAST(f_int1 AS CHAR),
7917
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
7918
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
7920
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7921
SELECT f_int1, f_int1, '', '', 'was inserted'
7922
FROM t0_template source_tab
7923
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7925
# check transactions-1 success: 1
7928
# check transactions-2 success: 1
7931
# check transactions-3 success: 1
7932
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7936
# check transactions-4 success: 1
7937
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7938
SELECT f_int1, f_int1, '', '', 'was inserted'
7939
FROM t0_template source_tab
7940
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7942
# check transactions-5 success: 1
7945
Warning 1196 Some non-transactional changed tables couldn't be rolled back
7947
# check transactions-6 success: 1
7948
# INFO: Storage engine used for t1 seems to be not transactional.
7951
# check transactions-7 success: 1
7952
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7954
SET @@session.sql_mode = 'traditional';
7955
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7956
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7957
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7958
'', '', 'was inserted' FROM t0_template
7959
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7960
ERROR 22012: Division by 0
7963
# check transactions-8 success: 1
7964
# INFO: Storage engine used for t1 seems to be unable to revert
7965
# changes made by the failing statement.
7966
SET @@session.sql_mode = '';
7968
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7970
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7972
# check special-1 success: 1
7973
UPDATE t1 SET f_charbig = '';
7975
# check special-2 success: 1
7976
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7977
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7978
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7979
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7980
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7981
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7982
'just inserted' FROM t0_template
7983
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7984
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7986
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7987
f_charbig = 'updated by trigger'
7988
WHERE f_int1 = new.f_int1;
7990
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7991
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7992
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7994
# check trigger-1 success: 1
7996
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7997
f_int2 = CAST(f_char1 AS SIGNED INT),
7998
f_charbig = 'just inserted'
7999
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8001
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8002
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8003
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8004
'just inserted' FROM t0_template
8005
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8006
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8008
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8009
f_charbig = 'updated by trigger'
8010
WHERE f_int1 = new.f_int1;
8012
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8013
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8014
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8016
# check trigger-2 success: 1
8018
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8019
f_int2 = CAST(f_char1 AS SIGNED INT),
8020
f_charbig = 'just inserted'
8021
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8023
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8024
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8025
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8026
'just inserted' FROM t0_template
8027
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8028
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8030
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8031
f_charbig = 'updated by trigger'
8032
WHERE f_int1 = new.f_int1;
8034
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8035
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8037
# check trigger-3 success: 1
8039
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8040
f_int2 = CAST(f_char1 AS SIGNED INT),
8041
f_charbig = 'just inserted'
8042
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8044
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8045
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8046
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8047
'just inserted' FROM t0_template
8048
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8049
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8051
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8052
f_charbig = 'updated by trigger'
8053
WHERE f_int1 = - old.f_int1;
8055
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8056
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8058
# check trigger-4 success: 1
8060
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8061
f_int2 = CAST(f_char1 AS SIGNED INT),
8062
f_charbig = 'just inserted'
8063
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8065
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8066
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8067
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8068
'just inserted' FROM t0_template
8069
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8070
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8072
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8073
f_charbig = 'updated by trigger'
8074
WHERE f_int1 = new.f_int1;
8076
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8077
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8079
# check trigger-5 success: 1
8081
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8082
f_int2 = CAST(f_char1 AS SIGNED INT),
8083
f_charbig = 'just inserted'
8084
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8086
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8087
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8088
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8089
'just inserted' FROM t0_template
8090
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8091
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8093
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8094
f_charbig = 'updated by trigger'
8095
WHERE f_int1 = - old.f_int1;
8097
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8098
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8100
# check trigger-6 success: 1
8102
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8103
f_int2 = CAST(f_char1 AS SIGNED INT),
8104
f_charbig = 'just inserted'
8105
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8107
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8108
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8109
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8110
'just inserted' FROM t0_template
8111
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8112
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8114
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8115
f_charbig = 'updated by trigger'
8116
WHERE f_int1 = - old.f_int1;
8119
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8121
# check trigger-7 success: 1
8123
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8124
f_int2 = CAST(f_char1 AS SIGNED INT),
8125
f_charbig = 'just inserted'
8126
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8128
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8129
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8130
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8131
'just inserted' FROM t0_template
8132
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8133
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8135
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8136
f_charbig = 'updated by trigger'
8137
WHERE f_int1 = - old.f_int1;
8140
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8142
# check trigger-8 success: 1
8144
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8145
f_int2 = CAST(f_char1 AS SIGNED INT),
8146
f_charbig = 'just inserted'
8147
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8149
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8151
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8152
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8154
SET new.f_int1 = old.f_int1 + @max_row,
8155
new.f_int2 = old.f_int2 - @max_row,
8156
new.f_charbig = '####updated per update trigger####';
8159
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8160
f_charbig = '####updated per update statement itself####';
8162
# check trigger-9 success: 1
8164
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8165
f_int2 = CAST(f_char1 AS SIGNED INT),
8166
f_charbig = CONCAT('===',f_char1,'===');
8167
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8169
SET new.f_int1 = new.f_int1 + @max_row,
8170
new.f_int2 = new.f_int2 - @max_row,
8171
new.f_charbig = '####updated per update trigger####';
8174
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8175
f_charbig = '####updated per update statement itself####';
8177
# check trigger-10 success: 1
8179
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8180
f_int2 = CAST(f_char1 AS SIGNED INT),
8181
f_charbig = CONCAT('===',f_char1,'===');
8182
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8184
SET new.f_int1 = @my_max1 + @counter,
8185
new.f_int2 = @my_min2 - @counter,
8186
new.f_charbig = '####updated per insert trigger####';
8187
SET @counter = @counter + 1;
8190
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8191
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8192
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8193
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8198
# check trigger-11 success: 1
8200
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8201
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8202
AND f_charbig = '####updated per insert trigger####';
8203
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8205
SET new.f_int1 = @my_max1 + @counter,
8206
new.f_int2 = @my_min2 - @counter,
8207
new.f_charbig = '####updated per insert trigger####';
8208
SET @counter = @counter + 1;
8211
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8212
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8213
SELECT CAST(f_int1 AS CHAR),
8214
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8215
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8219
# check trigger-12 success: 1
8221
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8222
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8223
AND f_charbig = '####updated per insert trigger####';
8225
Table Op Msg_type Msg_text
8226
test.t1 analyze status OK
8227
CHECK TABLE t1 EXTENDED;
8228
Table Op Msg_type Msg_text
8229
test.t1 check status OK
8230
CHECKSUM TABLE t1 EXTENDED;
8232
test.t1 <some_value>
8234
Table Op Msg_type Msg_text
8235
test.t1 optimize status OK
8236
# check layout success: 1
8237
REPAIR TABLE t1 EXTENDED;
8238
Table Op Msg_type Msg_text
8239
test.t1 repair status OK
8240
# check layout success: 1
8243
# check TRUNCATE success: 1
8244
# check layout success: 1
8245
# End usability test (inc/partition_check.inc)
8252
f_charbig VARCHAR(1000)
8253
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
8255
PARTITION BY KEY(f_int1) PARTITIONS 5;
8256
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8257
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
8258
# Start usability test (inc/partition_check.inc)
8260
SHOW CREATE TABLE t1;
8262
t1 CREATE TABLE `t1` (
8263
`f_int1` int(11) DEFAULT NULL,
8264
`f_int2` int(11) DEFAULT NULL,
8265
`f_char1` char(20) DEFAULT NULL,
8266
`f_char2` char(20) DEFAULT NULL,
8267
`f_charbig` varchar(1000) DEFAULT NULL,
8268
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
8269
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
8270
) ENGINE=MyISAM DEFAULT CHARSET=latin1
8271
/*!50100 PARTITION BY KEY (f_int1)
8288
# check prerequisites-1 success: 1
8289
# check COUNT(*) success: 1
8290
# check MIN/MAX(f_int1) success: 1
8291
# check MIN/MAX(f_int2) success: 1
8292
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8293
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8294
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8295
WHERE f_int1 IN (2,3);
8296
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
8297
# check prerequisites-3 success: 1
8298
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8299
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8300
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8301
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8302
WHERE f_int1 IN (2,3);
8303
DELETE FROM t1 WHERE f_charbig = 'delete me';
8304
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8305
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8306
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8307
WHERE f_int1 IN (2,3);
8308
DELETE FROM t1 WHERE f_charbig = 'delete me';
8309
# check read via f_int1 success: 1
8310
# check read via f_int2 success: 1
8312
# check multiple-1 success: 1
8313
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8315
# check multiple-2 success: 1
8316
INSERT INTO t1 SELECT * FROM t0_template
8317
WHERE MOD(f_int1,3) = 0;
8319
# check multiple-3 success: 1
8320
UPDATE t1 SET f_int1 = f_int1 + @max_row
8321
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8322
AND @max_row_div2 + @max_row_div4;
8324
# check multiple-4 success: 1
8326
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8327
AND @max_row_div2 + @max_row_div4 + @max_row;
8329
# check multiple-5 success: 1
8330
SELECT COUNT(*) INTO @try_count FROM t0_template
8331
WHERE MOD(f_int1,3) = 0
8332
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8333
SELECT COUNT(*) INTO @clash_count
8334
FROM t1 INNER JOIN t0_template USING(f_int1)
8335
WHERE MOD(f_int1,3) = 0
8336
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8337
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8339
SET f_int1 = @cur_value , f_int2 = @cur_value,
8340
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8341
f_charbig = '#SINGLE#';
8343
# check single-1 success: 1
8344
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8346
SET f_int1 = @cur_value , f_int2 = @cur_value,
8347
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8348
f_charbig = '#SINGLE#';
8350
# check single-2 success: 1
8351
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8352
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8353
UPDATE t1 SET f_int1 = @cur_value2
8354
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8356
# check single-3 success: 1
8357
SET @cur_value1= -1;
8358
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8359
UPDATE t1 SET f_int1 = @cur_value1
8360
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8362
# check single-4 success: 1
8363
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8364
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8366
# check single-5 success: 1
8367
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8369
# check single-6 success: 1
8370
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8372
# check single-7 success: 1
8373
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8374
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8375
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8376
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8377
f_charbig = '#NULL#';
8379
SET f_int1 = NULL , f_int2 = -@max_row,
8380
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8381
f_charbig = '#NULL#';
8382
# check null success: 1
8384
# check null-1 success: 1
8385
UPDATE t1 SET f_int1 = -@max_row
8386
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8387
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8389
# check null-2 success: 1
8390
UPDATE t1 SET f_int1 = NULL
8391
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8392
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8394
# check null-3 success: 1
8396
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8397
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8399
# check null-4 success: 1
8401
WHERE f_int1 = 0 AND f_int2 = 0
8402
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8403
AND f_charbig = '#NULL#';
8404
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8405
SELECT f_int1, f_int1, '', '', 'was inserted'
8406
FROM t0_template source_tab
8407
WHERE MOD(f_int1,3) = 0
8408
AND f_int1 BETWEEN @max_row_div2 AND @max_row
8410
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8411
f_int2 = 2 * @max_row + source_tab.f_int1,
8412
f_charbig = 'was updated';
8414
# check unique-1-a success: 1
8416
# check unique-1-b success: 1
8417
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8418
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8419
f_int2 = CAST(f_char1 AS SIGNED INT),
8420
f_charbig = CONCAT('===',f_char1,'===')
8421
WHERE f_charbig = 'was updated';
8422
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8423
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8424
FROM t0_template source_tab
8425
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8427
# check replace success: 1
8429
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8431
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8432
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8433
UPDATE t1 SET f_int2 = f_int1,
8434
f_char1 = CAST(f_int1 AS CHAR),
8435
f_char2 = CAST(f_int1 AS CHAR),
8436
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8437
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
8439
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8440
SELECT f_int1, f_int1, '', '', 'was inserted'
8441
FROM t0_template source_tab
8442
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8444
# check transactions-1 success: 1
8447
# check transactions-2 success: 1
8450
# check transactions-3 success: 1
8451
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8455
# check transactions-4 success: 1
8456
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8457
SELECT f_int1, f_int1, '', '', 'was inserted'
8458
FROM t0_template source_tab
8459
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8461
# check transactions-5 success: 1
8464
Warning 1196 Some non-transactional changed tables couldn't be rolled back
8466
# check transactions-6 success: 1
8467
# INFO: Storage engine used for t1 seems to be not transactional.
8470
# check transactions-7 success: 1
8471
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8473
SET @@session.sql_mode = 'traditional';
8474
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8475
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8476
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8477
'', '', 'was inserted' FROM t0_template
8478
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8479
ERROR 22012: Division by 0
8482
# check transactions-8 success: 1
8483
# INFO: Storage engine used for t1 seems to be unable to revert
8484
# changes made by the failing statement.
8485
SET @@session.sql_mode = '';
8487
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8489
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8491
# check special-1 success: 1
8492
UPDATE t1 SET f_charbig = '';
8494
# check special-2 success: 1
8495
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8496
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8497
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8498
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8499
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8500
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8501
'just inserted' FROM t0_template
8502
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8503
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8505
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8506
f_charbig = 'updated by trigger'
8507
WHERE f_int1 = new.f_int1;
8509
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8510
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8511
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8513
# check trigger-1 success: 1
8515
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8516
f_int2 = CAST(f_char1 AS SIGNED INT),
8517
f_charbig = 'just inserted'
8518
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8520
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8521
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8522
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8523
'just inserted' FROM t0_template
8524
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8525
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8527
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8528
f_charbig = 'updated by trigger'
8529
WHERE f_int1 = new.f_int1;
8531
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8532
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8533
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8535
# check trigger-2 success: 1
8537
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8538
f_int2 = CAST(f_char1 AS SIGNED INT),
8539
f_charbig = 'just inserted'
8540
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8542
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8543
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8544
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8545
'just inserted' FROM t0_template
8546
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8547
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8549
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8550
f_charbig = 'updated by trigger'
8551
WHERE f_int1 = new.f_int1;
8553
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8554
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8556
# check trigger-3 success: 1
8558
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8559
f_int2 = CAST(f_char1 AS SIGNED INT),
8560
f_charbig = 'just inserted'
8561
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8563
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8564
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8565
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8566
'just inserted' FROM t0_template
8567
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8568
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8570
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8571
f_charbig = 'updated by trigger'
8572
WHERE f_int1 = - old.f_int1;
8574
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8575
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8577
# check trigger-4 success: 1
8579
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8580
f_int2 = CAST(f_char1 AS SIGNED INT),
8581
f_charbig = 'just inserted'
8582
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8584
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8585
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8586
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8587
'just inserted' FROM t0_template
8588
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8589
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8591
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8592
f_charbig = 'updated by trigger'
8593
WHERE f_int1 = new.f_int1;
8595
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8596
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8598
# check trigger-5 success: 1
8600
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8601
f_int2 = CAST(f_char1 AS SIGNED INT),
8602
f_charbig = 'just inserted'
8603
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8605
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8606
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8607
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8608
'just inserted' FROM t0_template
8609
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8610
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8612
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8613
f_charbig = 'updated by trigger'
8614
WHERE f_int1 = - old.f_int1;
8616
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8617
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8619
# check trigger-6 success: 1
8621
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8622
f_int2 = CAST(f_char1 AS SIGNED INT),
8623
f_charbig = 'just inserted'
8624
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8626
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8627
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8628
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8629
'just inserted' FROM t0_template
8630
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8631
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8633
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8634
f_charbig = 'updated by trigger'
8635
WHERE f_int1 = - old.f_int1;
8638
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8640
# check trigger-7 success: 1
8642
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8643
f_int2 = CAST(f_char1 AS SIGNED INT),
8644
f_charbig = 'just inserted'
8645
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8647
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8648
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8649
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8650
'just inserted' FROM t0_template
8651
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8652
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8654
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8655
f_charbig = 'updated by trigger'
8656
WHERE f_int1 = - old.f_int1;
8659
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8661
# check trigger-8 success: 1
8663
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8664
f_int2 = CAST(f_char1 AS SIGNED INT),
8665
f_charbig = 'just inserted'
8666
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8668
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8670
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8671
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8673
SET new.f_int1 = old.f_int1 + @max_row,
8674
new.f_int2 = old.f_int2 - @max_row,
8675
new.f_charbig = '####updated per update trigger####';
8678
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8679
f_charbig = '####updated per update statement itself####';
8681
# check trigger-9 success: 1
8683
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8684
f_int2 = CAST(f_char1 AS SIGNED INT),
8685
f_charbig = CONCAT('===',f_char1,'===');
8686
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8688
SET new.f_int1 = new.f_int1 + @max_row,
8689
new.f_int2 = new.f_int2 - @max_row,
8690
new.f_charbig = '####updated per update trigger####';
8693
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8694
f_charbig = '####updated per update statement itself####';
8696
# check trigger-10 success: 1
8698
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8699
f_int2 = CAST(f_char1 AS SIGNED INT),
8700
f_charbig = CONCAT('===',f_char1,'===');
8701
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8703
SET new.f_int1 = @my_max1 + @counter,
8704
new.f_int2 = @my_min2 - @counter,
8705
new.f_charbig = '####updated per insert trigger####';
8706
SET @counter = @counter + 1;
8709
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8710
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8711
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8712
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8713
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8717
# check trigger-11 success: 1
8719
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8720
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8721
AND f_charbig = '####updated per insert trigger####';
8722
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8724
SET new.f_int1 = @my_max1 + @counter,
8725
new.f_int2 = @my_min2 - @counter,
8726
new.f_charbig = '####updated per insert trigger####';
8727
SET @counter = @counter + 1;
8730
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8731
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8732
SELECT CAST(f_int1 AS CHAR),
8733
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8734
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8738
# check trigger-12 success: 1
8740
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8741
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8742
AND f_charbig = '####updated per insert trigger####';
8744
Table Op Msg_type Msg_text
8745
test.t1 analyze status OK
8746
CHECK TABLE t1 EXTENDED;
8747
Table Op Msg_type Msg_text
8748
test.t1 check status OK
8749
CHECKSUM TABLE t1 EXTENDED;
8751
test.t1 <some_value>
8753
Table Op Msg_type Msg_text
8754
test.t1 optimize status OK
8755
# check layout success: 1
8756
REPAIR TABLE t1 EXTENDED;
8757
Table Op Msg_type Msg_text
8758
test.t1 repair status OK
8759
# check layout success: 1
8762
# check TRUNCATE success: 1
8763
# check layout success: 1
8764
# End usability test (inc/partition_check.inc)
8771
f_charbig VARCHAR(1000)
8772
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
8774
PARTITION BY LIST(MOD(f_int1,4))
8775
(PARTITION part_3 VALUES IN (-3),
8776
PARTITION part_2 VALUES IN (-2),
8777
PARTITION part_1 VALUES IN (-1),
8778
PARTITION part_N VALUES IN (NULL),
8779
PARTITION part0 VALUES IN (0),
8780
PARTITION part1 VALUES IN (1),
8781
PARTITION part2 VALUES IN (2),
8782
PARTITION part3 VALUES IN (3));
8783
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8784
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
8785
# Start usability test (inc/partition_check.inc)
8787
SHOW CREATE TABLE t1;
8789
t1 CREATE TABLE `t1` (
8790
`f_int1` int(11) DEFAULT NULL,
8791
`f_int2` int(11) DEFAULT NULL,
8792
`f_char1` char(20) DEFAULT NULL,
8793
`f_char2` char(20) DEFAULT NULL,
8794
`f_charbig` varchar(1000) DEFAULT NULL,
8795
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
8796
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
8797
) ENGINE=MyISAM DEFAULT CHARSET=latin1
8798
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
8799
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
8800
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
8801
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
8802
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
8803
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
8804
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
8805
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
8806
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
8828
# check prerequisites-1 success: 1
8829
# check COUNT(*) success: 1
8830
# check MIN/MAX(f_int1) success: 1
8831
# check MIN/MAX(f_int2) success: 1
8832
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8833
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8834
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8835
WHERE f_int1 IN (2,3);
8836
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
8837
# check prerequisites-3 success: 1
8838
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8839
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8840
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8841
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8842
WHERE f_int1 IN (2,3);
8843
DELETE FROM t1 WHERE f_charbig = 'delete me';
8844
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8845
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8846
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8847
WHERE f_int1 IN (2,3);
8848
DELETE FROM t1 WHERE f_charbig = 'delete me';
8849
# check read via f_int1 success: 1
8850
# check read via f_int2 success: 1
8852
# check multiple-1 success: 1
8853
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8855
# check multiple-2 success: 1
8856
INSERT INTO t1 SELECT * FROM t0_template
8857
WHERE MOD(f_int1,3) = 0;
8859
# check multiple-3 success: 1
8860
UPDATE t1 SET f_int1 = f_int1 + @max_row
8861
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8862
AND @max_row_div2 + @max_row_div4;
8864
# check multiple-4 success: 1
8866
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8867
AND @max_row_div2 + @max_row_div4 + @max_row;
8869
# check multiple-5 success: 1
8870
SELECT COUNT(*) INTO @try_count FROM t0_template
8871
WHERE MOD(f_int1,3) = 0
8872
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8873
SELECT COUNT(*) INTO @clash_count
8874
FROM t1 INNER JOIN t0_template USING(f_int1)
8875
WHERE MOD(f_int1,3) = 0
8876
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8877
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8879
SET f_int1 = @cur_value , f_int2 = @cur_value,
8880
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8881
f_charbig = '#SINGLE#';
8883
# check single-1 success: 1
8884
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8886
SET f_int1 = @cur_value , f_int2 = @cur_value,
8887
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8888
f_charbig = '#SINGLE#';
8890
# check single-2 success: 1
8891
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8892
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8893
UPDATE t1 SET f_int1 = @cur_value2
8894
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8896
# check single-3 success: 1
8897
SET @cur_value1= -1;
8898
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8899
UPDATE t1 SET f_int1 = @cur_value1
8900
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8902
# check single-4 success: 1
8903
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8904
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8906
# check single-5 success: 1
8907
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8909
# check single-6 success: 1
8910
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8912
# check single-7 success: 1
8913
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8914
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8915
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8916
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8917
f_charbig = '#NULL#';
8919
SET f_int1 = NULL , f_int2 = -@max_row,
8920
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8921
f_charbig = '#NULL#';
8922
# check null success: 1
8924
# check null-1 success: 1
8925
UPDATE t1 SET f_int1 = -@max_row
8926
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8927
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8929
# check null-2 success: 1
8930
UPDATE t1 SET f_int1 = NULL
8931
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8932
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8934
# check null-3 success: 1
8936
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8937
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8939
# check null-4 success: 1
8941
WHERE f_int1 = 0 AND f_int2 = 0
8942
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8943
AND f_charbig = '#NULL#';
8944
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8945
SELECT f_int1, f_int1, '', '', 'was inserted'
8946
FROM t0_template source_tab
8947
WHERE MOD(f_int1,3) = 0
8948
AND f_int1 BETWEEN @max_row_div2 AND @max_row
8950
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8951
f_int2 = 2 * @max_row + source_tab.f_int1,
8952
f_charbig = 'was updated';
8954
# check unique-1-a success: 1
8956
# check unique-1-b success: 1
8957
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8958
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8959
f_int2 = CAST(f_char1 AS SIGNED INT),
8960
f_charbig = CONCAT('===',f_char1,'===')
8961
WHERE f_charbig = 'was updated';
8962
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8963
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8964
FROM t0_template source_tab
8965
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8967
# check replace success: 1
8969
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8971
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8972
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8973
UPDATE t1 SET f_int2 = f_int1,
8974
f_char1 = CAST(f_int1 AS CHAR),
8975
f_char2 = CAST(f_int1 AS CHAR),
8976
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8977
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
8979
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8980
SELECT f_int1, f_int1, '', '', 'was inserted'
8981
FROM t0_template source_tab
8982
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8984
# check transactions-1 success: 1
8987
# check transactions-2 success: 1
8990
# check transactions-3 success: 1
8991
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8995
# check transactions-4 success: 1
8996
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8997
SELECT f_int1, f_int1, '', '', 'was inserted'
8998
FROM t0_template source_tab
8999
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9001
# check transactions-5 success: 1
9004
Warning 1196 Some non-transactional changed tables couldn't be rolled back
9006
# check transactions-6 success: 1
9007
# INFO: Storage engine used for t1 seems to be not transactional.
9010
# check transactions-7 success: 1
9011
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9013
SET @@session.sql_mode = 'traditional';
9014
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9015
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9016
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9017
'', '', 'was inserted' FROM t0_template
9018
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9019
ERROR 22012: Division by 0
9022
# check transactions-8 success: 1
9023
# INFO: Storage engine used for t1 seems to be unable to revert
9024
# changes made by the failing statement.
9025
SET @@session.sql_mode = '';
9027
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9029
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9031
# check special-1 success: 1
9032
UPDATE t1 SET f_charbig = '';
9034
# check special-2 success: 1
9035
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9036
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9037
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9038
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9039
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9040
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9041
'just inserted' FROM t0_template
9042
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9043
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9045
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9046
f_charbig = 'updated by trigger'
9047
WHERE f_int1 = new.f_int1;
9049
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9050
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9051
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9053
# check trigger-1 success: 1
9055
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9056
f_int2 = CAST(f_char1 AS SIGNED INT),
9057
f_charbig = 'just inserted'
9058
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9060
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9061
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9062
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9063
'just inserted' FROM t0_template
9064
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9065
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9067
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9068
f_charbig = 'updated by trigger'
9069
WHERE f_int1 = new.f_int1;
9071
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9072
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9073
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9075
# check trigger-2 success: 1
9077
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9078
f_int2 = CAST(f_char1 AS SIGNED INT),
9079
f_charbig = 'just inserted'
9080
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9082
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9083
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9084
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9085
'just inserted' FROM t0_template
9086
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9087
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9089
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9090
f_charbig = 'updated by trigger'
9091
WHERE f_int1 = new.f_int1;
9093
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9094
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9096
# check trigger-3 success: 1
9098
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9099
f_int2 = CAST(f_char1 AS SIGNED INT),
9100
f_charbig = 'just inserted'
9101
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9103
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9104
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9105
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9106
'just inserted' FROM t0_template
9107
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9108
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9110
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9111
f_charbig = 'updated by trigger'
9112
WHERE f_int1 = - old.f_int1;
9114
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9115
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9117
# check trigger-4 success: 1
9119
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9120
f_int2 = CAST(f_char1 AS SIGNED INT),
9121
f_charbig = 'just inserted'
9122
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9124
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9125
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9126
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9127
'just inserted' FROM t0_template
9128
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9129
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9131
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9132
f_charbig = 'updated by trigger'
9133
WHERE f_int1 = new.f_int1;
9135
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9136
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9138
# check trigger-5 success: 1
9140
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9141
f_int2 = CAST(f_char1 AS SIGNED INT),
9142
f_charbig = 'just inserted'
9143
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9145
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9146
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9147
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9148
'just inserted' FROM t0_template
9149
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9150
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9152
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9153
f_charbig = 'updated by trigger'
9154
WHERE f_int1 = - old.f_int1;
9156
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9157
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9159
# check trigger-6 success: 1
9161
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9162
f_int2 = CAST(f_char1 AS SIGNED INT),
9163
f_charbig = 'just inserted'
9164
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9166
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9167
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9168
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9169
'just inserted' FROM t0_template
9170
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9171
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9173
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9174
f_charbig = 'updated by trigger'
9175
WHERE f_int1 = - old.f_int1;
9178
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9180
# check trigger-7 success: 1
9182
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9183
f_int2 = CAST(f_char1 AS SIGNED INT),
9184
f_charbig = 'just inserted'
9185
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9187
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9188
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9189
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9190
'just inserted' FROM t0_template
9191
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9192
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9194
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9195
f_charbig = 'updated by trigger'
9196
WHERE f_int1 = - old.f_int1;
9199
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9201
# check trigger-8 success: 1
9203
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9204
f_int2 = CAST(f_char1 AS SIGNED INT),
9205
f_charbig = 'just inserted'
9206
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9208
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9210
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9211
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9213
SET new.f_int1 = old.f_int1 + @max_row,
9214
new.f_int2 = old.f_int2 - @max_row,
9215
new.f_charbig = '####updated per update trigger####';
9218
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9219
f_charbig = '####updated per update statement itself####';
9221
# check trigger-9 success: 1
9223
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9224
f_int2 = CAST(f_char1 AS SIGNED INT),
9225
f_charbig = CONCAT('===',f_char1,'===');
9226
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9228
SET new.f_int1 = new.f_int1 + @max_row,
9229
new.f_int2 = new.f_int2 - @max_row,
9230
new.f_charbig = '####updated per update trigger####';
9233
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9234
f_charbig = '####updated per update statement itself####';
9236
# check trigger-10 success: 1
9238
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9239
f_int2 = CAST(f_char1 AS SIGNED INT),
9240
f_charbig = CONCAT('===',f_char1,'===');
9241
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9243
SET new.f_int1 = @my_max1 + @counter,
9244
new.f_int2 = @my_min2 - @counter,
9245
new.f_charbig = '####updated per insert trigger####';
9246
SET @counter = @counter + 1;
9249
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9250
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9251
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9252
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9253
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9257
# check trigger-11 success: 1
9259
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9260
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9261
AND f_charbig = '####updated per insert trigger####';
9262
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9264
SET new.f_int1 = @my_max1 + @counter,
9265
new.f_int2 = @my_min2 - @counter,
9266
new.f_charbig = '####updated per insert trigger####';
9267
SET @counter = @counter + 1;
9270
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9271
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9272
SELECT CAST(f_int1 AS CHAR),
9273
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9274
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9278
# check trigger-12 success: 1
9280
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9281
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9282
AND f_charbig = '####updated per insert trigger####';
9284
Table Op Msg_type Msg_text
9285
test.t1 analyze status OK
9286
CHECK TABLE t1 EXTENDED;
9287
Table Op Msg_type Msg_text
9288
test.t1 check status OK
9289
CHECKSUM TABLE t1 EXTENDED;
9291
test.t1 <some_value>
9293
Table Op Msg_type Msg_text
9294
test.t1 optimize status OK
9295
# check layout success: 1
9296
REPAIR TABLE t1 EXTENDED;
9297
Table Op Msg_type Msg_text
9298
test.t1 repair status OK
9299
# check layout success: 1
9302
# check TRUNCATE success: 1
9303
# check layout success: 1
9304
# End usability test (inc/partition_check.inc)
9311
f_charbig VARCHAR(1000)
9312
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
9314
PARTITION BY RANGE(f_int1)
9315
(PARTITION parta VALUES LESS THAN (0),
9316
PARTITION partb VALUES LESS THAN (5),
9317
PARTITION partc VALUES LESS THAN (10),
9318
PARTITION partd VALUES LESS THAN (10 + 5),
9319
PARTITION parte VALUES LESS THAN (20),
9320
PARTITION partf VALUES LESS THAN (2147483646));
9321
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9322
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
9323
# Start usability test (inc/partition_check.inc)
9325
SHOW CREATE TABLE t1;
9327
t1 CREATE TABLE `t1` (
9328
`f_int1` int(11) DEFAULT NULL,
9329
`f_int2` int(11) DEFAULT NULL,
9330
`f_char1` char(20) DEFAULT NULL,
9331
`f_char2` char(20) DEFAULT NULL,
9332
`f_charbig` varchar(1000) DEFAULT NULL,
9333
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
9334
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
9335
) ENGINE=MyISAM DEFAULT CHARSET=latin1
9336
/*!50100 PARTITION BY RANGE (f_int1)
9337
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
9338
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
9339
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
9340
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
9341
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
9342
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
9360
# check prerequisites-1 success: 1
9361
# check COUNT(*) success: 1
9362
# check MIN/MAX(f_int1) success: 1
9363
# check MIN/MAX(f_int2) success: 1
9364
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9365
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9366
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9367
WHERE f_int1 IN (2,3);
9368
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
9369
# check prerequisites-3 success: 1
9370
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9371
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9372
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9373
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9374
WHERE f_int1 IN (2,3);
9375
DELETE FROM t1 WHERE f_charbig = 'delete me';
9376
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9377
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9378
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9379
WHERE f_int1 IN (2,3);
9380
DELETE FROM t1 WHERE f_charbig = 'delete me';
9381
# check read via f_int1 success: 1
9382
# check read via f_int2 success: 1
9384
# check multiple-1 success: 1
9385
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9387
# check multiple-2 success: 1
9388
INSERT INTO t1 SELECT * FROM t0_template
9389
WHERE MOD(f_int1,3) = 0;
9391
# check multiple-3 success: 1
9392
UPDATE t1 SET f_int1 = f_int1 + @max_row
9393
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9394
AND @max_row_div2 + @max_row_div4;
9396
# check multiple-4 success: 1
9398
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9399
AND @max_row_div2 + @max_row_div4 + @max_row;
9401
# check multiple-5 success: 1
9402
SELECT COUNT(*) INTO @try_count FROM t0_template
9403
WHERE MOD(f_int1,3) = 0
9404
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9405
SELECT COUNT(*) INTO @clash_count
9406
FROM t1 INNER JOIN t0_template USING(f_int1)
9407
WHERE MOD(f_int1,3) = 0
9408
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9409
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9411
SET f_int1 = @cur_value , f_int2 = @cur_value,
9412
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9413
f_charbig = '#SINGLE#';
9415
# check single-1 success: 1
9416
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9418
SET f_int1 = @cur_value , f_int2 = @cur_value,
9419
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9420
f_charbig = '#SINGLE#';
9422
# check single-2 success: 1
9423
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9424
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9425
UPDATE t1 SET f_int1 = @cur_value2
9426
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9428
# check single-3 success: 1
9429
SET @cur_value1= -1;
9430
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9431
UPDATE t1 SET f_int1 = @cur_value1
9432
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9434
# check single-4 success: 1
9435
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9436
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9438
# check single-5 success: 1
9439
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9441
# check single-6 success: 1
9442
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9443
ERROR HY000: Table has no partition for value 2147483647
9444
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9445
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9446
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9447
f_charbig = '#NULL#';
9449
SET f_int1 = NULL , f_int2 = -@max_row,
9450
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9451
f_charbig = '#NULL#';
9452
# check null success: 1
9454
# check null-1 success: 1
9455
UPDATE t1 SET f_int1 = -@max_row
9456
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9457
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9459
# check null-2 success: 1
9460
UPDATE t1 SET f_int1 = NULL
9461
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9462
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9464
# check null-3 success: 1
9466
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9467
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9469
# check null-4 success: 1
9471
WHERE f_int1 = 0 AND f_int2 = 0
9472
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9473
AND f_charbig = '#NULL#';
9474
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9475
SELECT f_int1, f_int1, '', '', 'was inserted'
9476
FROM t0_template source_tab
9477
WHERE MOD(f_int1,3) = 0
9478
AND f_int1 BETWEEN @max_row_div2 AND @max_row
9480
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
9481
f_int2 = 2 * @max_row + source_tab.f_int1,
9482
f_charbig = 'was updated';
9484
# check unique-1-a success: 1
9486
# check unique-1-b success: 1
9487
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9488
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9489
f_int2 = CAST(f_char1 AS SIGNED INT),
9490
f_charbig = CONCAT('===',f_char1,'===')
9491
WHERE f_charbig = 'was updated';
9492
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9493
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
9494
FROM t0_template source_tab
9495
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9497
# check replace success: 1
9499
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
9501
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
9502
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
9503
UPDATE t1 SET f_int2 = f_int1,
9504
f_char1 = CAST(f_int1 AS CHAR),
9505
f_char2 = CAST(f_int1 AS CHAR),
9506
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
9507
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
9509
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9510
SELECT f_int1, f_int1, '', '', 'was inserted'
9511
FROM t0_template source_tab
9512
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9514
# check transactions-1 success: 1
9517
# check transactions-2 success: 1
9520
# check transactions-3 success: 1
9521
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9525
# check transactions-4 success: 1
9526
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9527
SELECT f_int1, f_int1, '', '', 'was inserted'
9528
FROM t0_template source_tab
9529
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9531
# check transactions-5 success: 1
9534
Warning 1196 Some non-transactional changed tables couldn't be rolled back
9536
# check transactions-6 success: 1
9537
# INFO: Storage engine used for t1 seems to be not transactional.
9540
# check transactions-7 success: 1
9541
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9543
SET @@session.sql_mode = 'traditional';
9544
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9545
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9546
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9547
'', '', 'was inserted' FROM t0_template
9548
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9549
ERROR 22012: Division by 0
9552
# check transactions-8 success: 1
9553
# INFO: Storage engine used for t1 seems to be unable to revert
9554
# changes made by the failing statement.
9555
SET @@session.sql_mode = '';
9557
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9559
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9561
# check special-1 success: 1
9562
UPDATE t1 SET f_charbig = '';
9564
# check special-2 success: 1
9565
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9566
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9567
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9568
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9569
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9570
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9571
'just inserted' FROM t0_template
9572
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9573
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9575
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9576
f_charbig = 'updated by trigger'
9577
WHERE f_int1 = new.f_int1;
9579
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9580
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9581
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9583
# check trigger-1 success: 1
9585
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9586
f_int2 = CAST(f_char1 AS SIGNED INT),
9587
f_charbig = 'just inserted'
9588
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9590
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9591
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9592
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9593
'just inserted' FROM t0_template
9594
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9595
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9597
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9598
f_charbig = 'updated by trigger'
9599
WHERE f_int1 = new.f_int1;
9601
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9602
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9603
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9605
# check trigger-2 success: 1
9607
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9608
f_int2 = CAST(f_char1 AS SIGNED INT),
9609
f_charbig = 'just inserted'
9610
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9612
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9613
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9614
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9615
'just inserted' FROM t0_template
9616
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9617
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9619
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9620
f_charbig = 'updated by trigger'
9621
WHERE f_int1 = new.f_int1;
9623
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9624
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9626
# check trigger-3 success: 1
9628
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9629
f_int2 = CAST(f_char1 AS SIGNED INT),
9630
f_charbig = 'just inserted'
9631
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9633
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9634
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9635
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9636
'just inserted' FROM t0_template
9637
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9638
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9640
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9641
f_charbig = 'updated by trigger'
9642
WHERE f_int1 = - old.f_int1;
9644
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9645
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9647
# check trigger-4 success: 1
9649
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9650
f_int2 = CAST(f_char1 AS SIGNED INT),
9651
f_charbig = 'just inserted'
9652
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9654
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9655
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9656
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9657
'just inserted' FROM t0_template
9658
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9659
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9661
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9662
f_charbig = 'updated by trigger'
9663
WHERE f_int1 = new.f_int1;
9665
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9666
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9668
# check trigger-5 success: 1
9670
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9671
f_int2 = CAST(f_char1 AS SIGNED INT),
9672
f_charbig = 'just inserted'
9673
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9675
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9676
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9677
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9678
'just inserted' FROM t0_template
9679
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9680
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9682
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9683
f_charbig = 'updated by trigger'
9684
WHERE f_int1 = - old.f_int1;
9686
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9687
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9689
# check trigger-6 success: 1
9691
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9692
f_int2 = CAST(f_char1 AS SIGNED INT),
9693
f_charbig = 'just inserted'
9694
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9696
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9697
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9698
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9699
'just inserted' FROM t0_template
9700
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9701
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9703
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9704
f_charbig = 'updated by trigger'
9705
WHERE f_int1 = - old.f_int1;
9708
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9710
# check trigger-7 success: 1
9712
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9713
f_int2 = CAST(f_char1 AS SIGNED INT),
9714
f_charbig = 'just inserted'
9715
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9717
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9718
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9719
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9720
'just inserted' FROM t0_template
9721
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9722
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9724
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9725
f_charbig = 'updated by trigger'
9726
WHERE f_int1 = - old.f_int1;
9729
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9731
# check trigger-8 success: 1
9733
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9734
f_int2 = CAST(f_char1 AS SIGNED INT),
9735
f_charbig = 'just inserted'
9736
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9738
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9740
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9741
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9743
SET new.f_int1 = old.f_int1 + @max_row,
9744
new.f_int2 = old.f_int2 - @max_row,
9745
new.f_charbig = '####updated per update trigger####';
9748
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9749
f_charbig = '####updated per update statement itself####';
9751
# check trigger-9 success: 1
9753
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9754
f_int2 = CAST(f_char1 AS SIGNED INT),
9755
f_charbig = CONCAT('===',f_char1,'===');
9756
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9758
SET new.f_int1 = new.f_int1 + @max_row,
9759
new.f_int2 = new.f_int2 - @max_row,
9760
new.f_charbig = '####updated per update trigger####';
9763
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9764
f_charbig = '####updated per update statement itself####';
9766
# check trigger-10 success: 1
9768
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9769
f_int2 = CAST(f_char1 AS SIGNED INT),
9770
f_charbig = CONCAT('===',f_char1,'===');
9771
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9773
SET new.f_int1 = @my_max1 + @counter,
9774
new.f_int2 = @my_min2 - @counter,
9775
new.f_charbig = '####updated per insert trigger####';
9776
SET @counter = @counter + 1;
9779
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9780
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9781
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9782
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9783
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9787
# check trigger-11 success: 1
9789
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9790
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9791
AND f_charbig = '####updated per insert trigger####';
9792
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9794
SET new.f_int1 = @my_max1 + @counter,
9795
new.f_int2 = @my_min2 - @counter,
9796
new.f_charbig = '####updated per insert trigger####';
9797
SET @counter = @counter + 1;
9800
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9801
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9802
SELECT CAST(f_int1 AS CHAR),
9803
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9804
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9808
# check trigger-12 success: 1
9810
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9811
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9812
AND f_charbig = '####updated per insert trigger####';
9814
Table Op Msg_type Msg_text
9815
test.t1 analyze status OK
9816
CHECK TABLE t1 EXTENDED;
9817
Table Op Msg_type Msg_text
9818
test.t1 check status OK
9819
CHECKSUM TABLE t1 EXTENDED;
9821
test.t1 <some_value>
9823
Table Op Msg_type Msg_text
9824
test.t1 optimize status OK
9825
# check layout success: 1
9826
REPAIR TABLE t1 EXTENDED;
9827
Table Op Msg_type Msg_text
9828
test.t1 repair status OK
9829
# check layout success: 1
9832
# check TRUNCATE success: 1
9833
# check layout success: 1
9834
# End usability test (inc/partition_check.inc)
9841
f_charbig VARCHAR(1000)
9842
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
9844
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
9845
(PARTITION parta VALUES LESS THAN (0),
9846
PARTITION partb VALUES LESS THAN (5),
9847
PARTITION partc VALUES LESS THAN (10),
9848
PARTITION partd VALUES LESS THAN (2147483646));
9849
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9850
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
9851
# Start usability test (inc/partition_check.inc)
9853
SHOW CREATE TABLE t1;
9855
t1 CREATE TABLE `t1` (
9856
`f_int1` int(11) DEFAULT NULL,
9857
`f_int2` int(11) DEFAULT NULL,
9858
`f_char1` char(20) DEFAULT NULL,
9859
`f_char2` char(20) DEFAULT NULL,
9860
`f_charbig` varchar(1000) DEFAULT NULL,
9861
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
9862
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
9863
) ENGINE=MyISAM DEFAULT CHARSET=latin1
9864
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
9865
SUBPARTITION BY HASH (f_int1)
9867
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
9868
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
9869
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
9870
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
9873
t1#P#parta#SP#partasp0.MYD
9874
t1#P#parta#SP#partasp0.MYI
9875
t1#P#parta#SP#partasp1.MYD
9876
t1#P#parta#SP#partasp1.MYI
9877
t1#P#partb#SP#partbsp0.MYD
9878
t1#P#partb#SP#partbsp0.MYI
9879
t1#P#partb#SP#partbsp1.MYD
9880
t1#P#partb#SP#partbsp1.MYI
9881
t1#P#partc#SP#partcsp0.MYD
9882
t1#P#partc#SP#partcsp0.MYI
9883
t1#P#partc#SP#partcsp1.MYD
9884
t1#P#partc#SP#partcsp1.MYI
9885
t1#P#partd#SP#partdsp0.MYD
9886
t1#P#partd#SP#partdsp0.MYI
9887
t1#P#partd#SP#partdsp1.MYD
9888
t1#P#partd#SP#partdsp1.MYI
9892
# check prerequisites-1 success: 1
9893
# check COUNT(*) success: 1
9894
# check MIN/MAX(f_int1) success: 1
9895
# check MIN/MAX(f_int2) success: 1
9896
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9897
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9898
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9899
WHERE f_int1 IN (2,3);
9900
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
9901
# check prerequisites-3 success: 1
9902
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9903
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9904
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9905
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9906
WHERE f_int1 IN (2,3);
9907
DELETE FROM t1 WHERE f_charbig = 'delete me';
9908
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9909
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9910
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9911
WHERE f_int1 IN (2,3);
9912
DELETE FROM t1 WHERE f_charbig = 'delete me';
9913
# check read via f_int1 success: 1
9914
# check read via f_int2 success: 1
9916
# check multiple-1 success: 1
9917
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9919
# check multiple-2 success: 1
9920
INSERT INTO t1 SELECT * FROM t0_template
9921
WHERE MOD(f_int1,3) = 0;
9923
# check multiple-3 success: 1
9924
UPDATE t1 SET f_int1 = f_int1 + @max_row
9925
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9926
AND @max_row_div2 + @max_row_div4;
9928
# check multiple-4 success: 1
9930
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9931
AND @max_row_div2 + @max_row_div4 + @max_row;
9933
# check multiple-5 success: 1
9934
SELECT COUNT(*) INTO @try_count FROM t0_template
9935
WHERE MOD(f_int1,3) = 0
9936
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9937
SELECT COUNT(*) INTO @clash_count
9938
FROM t1 INNER JOIN t0_template USING(f_int1)
9939
WHERE MOD(f_int1,3) = 0
9940
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9941
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9943
SET f_int1 = @cur_value , f_int2 = @cur_value,
9944
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9945
f_charbig = '#SINGLE#';
9947
# check single-1 success: 1
9948
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9950
SET f_int1 = @cur_value , f_int2 = @cur_value,
9951
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9952
f_charbig = '#SINGLE#';
9954
# check single-2 success: 1
9955
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9956
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9957
UPDATE t1 SET f_int1 = @cur_value2
9958
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9960
# check single-3 success: 1
9961
SET @cur_value1= -1;
9962
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9963
UPDATE t1 SET f_int1 = @cur_value1
9964
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9966
# check single-4 success: 1
9967
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9968
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9970
# check single-5 success: 1
9971
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9973
# check single-6 success: 1
9974
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9976
# check single-7 success: 1
9977
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9978
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9979
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9980
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9981
f_charbig = '#NULL#';
9983
SET f_int1 = NULL , f_int2 = -@max_row,
9984
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9985
f_charbig = '#NULL#';
9986
# check null success: 1
9988
# check null-1 success: 1
9989
UPDATE t1 SET f_int1 = -@max_row
9990
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9991
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9993
# check null-2 success: 1
9994
UPDATE t1 SET f_int1 = NULL
9995
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9996
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9998
# check null-3 success: 1
10000
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10001
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10003
# check null-4 success: 1
10005
WHERE f_int1 = 0 AND f_int2 = 0
10006
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10007
AND f_charbig = '#NULL#';
10008
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10009
SELECT f_int1, f_int1, '', '', 'was inserted'
10010
FROM t0_template source_tab
10011
WHERE MOD(f_int1,3) = 0
10012
AND f_int1 BETWEEN @max_row_div2 AND @max_row
10014
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
10015
f_int2 = 2 * @max_row + source_tab.f_int1,
10016
f_charbig = 'was updated';
10018
# check unique-1-a success: 1
10020
# check unique-1-b success: 1
10021
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10022
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10023
f_int2 = CAST(f_char1 AS SIGNED INT),
10024
f_charbig = CONCAT('===',f_char1,'===')
10025
WHERE f_charbig = 'was updated';
10026
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10027
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
10028
FROM t0_template source_tab
10029
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10031
# check replace success: 1
10033
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
10035
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
10036
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
10037
UPDATE t1 SET f_int2 = f_int1,
10038
f_char1 = CAST(f_int1 AS CHAR),
10039
f_char2 = CAST(f_int1 AS CHAR),
10040
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
10041
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
10043
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10044
SELECT f_int1, f_int1, '', '', 'was inserted'
10045
FROM t0_template source_tab
10046
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10048
# check transactions-1 success: 1
10051
# check transactions-2 success: 1
10054
# check transactions-3 success: 1
10055
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10059
# check transactions-4 success: 1
10060
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10061
SELECT f_int1, f_int1, '', '', 'was inserted'
10062
FROM t0_template source_tab
10063
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10065
# check transactions-5 success: 1
10068
Warning 1196 Some non-transactional changed tables couldn't be rolled back
10070
# check transactions-6 success: 1
10071
# INFO: Storage engine used for t1 seems to be not transactional.
10074
# check transactions-7 success: 1
10075
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10077
SET @@session.sql_mode = 'traditional';
10078
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10079
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10080
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10081
'', '', 'was inserted' FROM t0_template
10082
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10083
ERROR 22012: Division by 0
10086
# check transactions-8 success: 1
10087
# INFO: Storage engine used for t1 seems to be unable to revert
10088
# changes made by the failing statement.
10089
SET @@session.sql_mode = '';
10091
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10093
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10095
# check special-1 success: 1
10096
UPDATE t1 SET f_charbig = '';
10098
# check special-2 success: 1
10099
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10100
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10101
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10102
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10103
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10104
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10105
'just inserted' FROM t0_template
10106
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10107
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10109
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10110
f_charbig = 'updated by trigger'
10111
WHERE f_int1 = new.f_int1;
10113
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10114
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10115
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10117
# check trigger-1 success: 1
10118
DROP TRIGGER trg_1;
10119
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10120
f_int2 = CAST(f_char1 AS SIGNED INT),
10121
f_charbig = 'just inserted'
10122
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10124
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10125
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10126
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10127
'just inserted' FROM t0_template
10128
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10129
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10131
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10132
f_charbig = 'updated by trigger'
10133
WHERE f_int1 = new.f_int1;
10135
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10136
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10137
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10139
# check trigger-2 success: 1
10140
DROP TRIGGER trg_1;
10141
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10142
f_int2 = CAST(f_char1 AS SIGNED INT),
10143
f_charbig = 'just inserted'
10144
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10146
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10147
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10148
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10149
'just inserted' FROM t0_template
10150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10151
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10153
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10154
f_charbig = 'updated by trigger'
10155
WHERE f_int1 = new.f_int1;
10157
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10158
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10160
# check trigger-3 success: 1
10161
DROP TRIGGER trg_1;
10162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10163
f_int2 = CAST(f_char1 AS SIGNED INT),
10164
f_charbig = 'just inserted'
10165
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10167
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10168
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10169
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10170
'just inserted' FROM t0_template
10171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10172
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10174
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10175
f_charbig = 'updated by trigger'
10176
WHERE f_int1 = - old.f_int1;
10178
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10179
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10181
# check trigger-4 success: 1
10182
DROP TRIGGER trg_1;
10183
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10184
f_int2 = CAST(f_char1 AS SIGNED INT),
10185
f_charbig = 'just inserted'
10186
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10188
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10189
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10190
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10191
'just inserted' FROM t0_template
10192
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10193
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10195
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10196
f_charbig = 'updated by trigger'
10197
WHERE f_int1 = new.f_int1;
10199
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10200
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10202
# check trigger-5 success: 1
10203
DROP TRIGGER trg_1;
10204
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10205
f_int2 = CAST(f_char1 AS SIGNED INT),
10206
f_charbig = 'just inserted'
10207
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10209
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10210
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10211
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10212
'just inserted' FROM t0_template
10213
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10214
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10216
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10217
f_charbig = 'updated by trigger'
10218
WHERE f_int1 = - old.f_int1;
10220
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10221
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10223
# check trigger-6 success: 1
10224
DROP TRIGGER trg_1;
10225
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10226
f_int2 = CAST(f_char1 AS SIGNED INT),
10227
f_charbig = 'just inserted'
10228
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10230
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10231
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10232
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10233
'just inserted' FROM t0_template
10234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10235
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10237
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10238
f_charbig = 'updated by trigger'
10239
WHERE f_int1 = - old.f_int1;
10242
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10244
# check trigger-7 success: 1
10245
DROP TRIGGER trg_1;
10246
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10247
f_int2 = CAST(f_char1 AS SIGNED INT),
10248
f_charbig = 'just inserted'
10249
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10251
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10252
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10253
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10254
'just inserted' FROM t0_template
10255
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10256
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10258
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10259
f_charbig = 'updated by trigger'
10260
WHERE f_int1 = - old.f_int1;
10263
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10265
# check trigger-8 success: 1
10266
DROP TRIGGER trg_1;
10267
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10268
f_int2 = CAST(f_char1 AS SIGNED INT),
10269
f_charbig = 'just inserted'
10270
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10272
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10274
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10275
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10277
SET new.f_int1 = old.f_int1 + @max_row,
10278
new.f_int2 = old.f_int2 - @max_row,
10279
new.f_charbig = '####updated per update trigger####';
10282
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10283
f_charbig = '####updated per update statement itself####';
10285
# check trigger-9 success: 1
10286
DROP TRIGGER trg_2;
10287
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10288
f_int2 = CAST(f_char1 AS SIGNED INT),
10289
f_charbig = CONCAT('===',f_char1,'===');
10290
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10292
SET new.f_int1 = new.f_int1 + @max_row,
10293
new.f_int2 = new.f_int2 - @max_row,
10294
new.f_charbig = '####updated per update trigger####';
10297
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10298
f_charbig = '####updated per update statement itself####';
10300
# check trigger-10 success: 1
10301
DROP TRIGGER trg_2;
10302
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10303
f_int2 = CAST(f_char1 AS SIGNED INT),
10304
f_charbig = CONCAT('===',f_char1,'===');
10305
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10307
SET new.f_int1 = @my_max1 + @counter,
10308
new.f_int2 = @my_min2 - @counter,
10309
new.f_charbig = '####updated per insert trigger####';
10310
SET @counter = @counter + 1;
10313
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10314
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10315
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10316
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10317
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10319
DROP TRIGGER trg_3;
10321
# check trigger-11 success: 1
10323
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10324
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10325
AND f_charbig = '####updated per insert trigger####';
10326
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10328
SET new.f_int1 = @my_max1 + @counter,
10329
new.f_int2 = @my_min2 - @counter,
10330
new.f_charbig = '####updated per insert trigger####';
10331
SET @counter = @counter + 1;
10334
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10335
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10336
SELECT CAST(f_int1 AS CHAR),
10337
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10338
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10340
DROP TRIGGER trg_3;
10342
# check trigger-12 success: 1
10344
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10345
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10346
AND f_charbig = '####updated per insert trigger####';
10348
Table Op Msg_type Msg_text
10349
test.t1 analyze status OK
10350
CHECK TABLE t1 EXTENDED;
10351
Table Op Msg_type Msg_text
10352
test.t1 check status OK
10353
CHECKSUM TABLE t1 EXTENDED;
10355
test.t1 <some_value>
10357
Table Op Msg_type Msg_text
10358
test.t1 optimize status OK
10359
# check layout success: 1
10360
REPAIR TABLE t1 EXTENDED;
10361
Table Op Msg_type Msg_text
10362
test.t1 repair status OK
10363
# check layout success: 1
10366
# check TRUNCATE success: 1
10367
# check layout success: 1
10368
# End usability test (inc/partition_check.inc)
10375
f_charbig VARCHAR(1000)
10376
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
10378
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
10379
(PARTITION part1 VALUES LESS THAN (0)
10380
(SUBPARTITION subpart11, SUBPARTITION subpart12),
10381
PARTITION part2 VALUES LESS THAN (5)
10382
(SUBPARTITION subpart21, SUBPARTITION subpart22),
10383
PARTITION part3 VALUES LESS THAN (10)
10384
(SUBPARTITION subpart31, SUBPARTITION subpart32),
10385
PARTITION part4 VALUES LESS THAN (2147483646)
10386
(SUBPARTITION subpart41, SUBPARTITION subpart42));
10387
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10388
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
10389
# Start usability test (inc/partition_check.inc)
10391
SHOW CREATE TABLE t1;
10393
t1 CREATE TABLE `t1` (
10394
`f_int1` int(11) DEFAULT NULL,
10395
`f_int2` int(11) DEFAULT NULL,
10396
`f_char1` char(20) DEFAULT NULL,
10397
`f_char2` char(20) DEFAULT NULL,
10398
`f_charbig` varchar(1000) DEFAULT NULL,
10399
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
10400
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
10401
) ENGINE=MyISAM DEFAULT CHARSET=latin1
10402
/*!50100 PARTITION BY RANGE (f_int1)
10403
SUBPARTITION BY KEY (f_int1)
10404
(PARTITION part1 VALUES LESS THAN (0)
10405
(SUBPARTITION subpart11 ENGINE = MyISAM,
10406
SUBPARTITION subpart12 ENGINE = MyISAM),
10407
PARTITION part2 VALUES LESS THAN (5)
10408
(SUBPARTITION subpart21 ENGINE = MyISAM,
10409
SUBPARTITION subpart22 ENGINE = MyISAM),
10410
PARTITION part3 VALUES LESS THAN (10)
10411
(SUBPARTITION subpart31 ENGINE = MyISAM,
10412
SUBPARTITION subpart32 ENGINE = MyISAM),
10413
PARTITION part4 VALUES LESS THAN (2147483646)
10414
(SUBPARTITION subpart41 ENGINE = MyISAM,
10415
SUBPARTITION subpart42 ENGINE = MyISAM)) */
10418
t1#P#part1#SP#subpart11.MYD
10419
t1#P#part1#SP#subpart11.MYI
10420
t1#P#part1#SP#subpart12.MYD
10421
t1#P#part1#SP#subpart12.MYI
10422
t1#P#part2#SP#subpart21.MYD
10423
t1#P#part2#SP#subpart21.MYI
10424
t1#P#part2#SP#subpart22.MYD
10425
t1#P#part2#SP#subpart22.MYI
10426
t1#P#part3#SP#subpart31.MYD
10427
t1#P#part3#SP#subpart31.MYI
10428
t1#P#part3#SP#subpart32.MYD
10429
t1#P#part3#SP#subpart32.MYI
10430
t1#P#part4#SP#subpart41.MYD
10431
t1#P#part4#SP#subpart41.MYI
10432
t1#P#part4#SP#subpart42.MYD
10433
t1#P#part4#SP#subpart42.MYI
10437
# check prerequisites-1 success: 1
10438
# check COUNT(*) success: 1
10439
# check MIN/MAX(f_int1) success: 1
10440
# check MIN/MAX(f_int2) success: 1
10441
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10442
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10443
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10444
WHERE f_int1 IN (2,3);
10445
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
10446
# check prerequisites-3 success: 1
10447
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
10448
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10449
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10450
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10451
WHERE f_int1 IN (2,3);
10452
DELETE FROM t1 WHERE f_charbig = 'delete me';
10453
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10454
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10455
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10456
WHERE f_int1 IN (2,3);
10457
DELETE FROM t1 WHERE f_charbig = 'delete me';
10458
# check read via f_int1 success: 1
10459
# check read via f_int2 success: 1
10461
# check multiple-1 success: 1
10462
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10464
# check multiple-2 success: 1
10465
INSERT INTO t1 SELECT * FROM t0_template
10466
WHERE MOD(f_int1,3) = 0;
10468
# check multiple-3 success: 1
10469
UPDATE t1 SET f_int1 = f_int1 + @max_row
10470
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10471
AND @max_row_div2 + @max_row_div4;
10473
# check multiple-4 success: 1
10475
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10476
AND @max_row_div2 + @max_row_div4 + @max_row;
10478
# check multiple-5 success: 1
10479
SELECT COUNT(*) INTO @try_count FROM t0_template
10480
WHERE MOD(f_int1,3) = 0
10481
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10482
SELECT COUNT(*) INTO @clash_count
10483
FROM t1 INNER JOIN t0_template USING(f_int1)
10484
WHERE MOD(f_int1,3) = 0
10485
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10486
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10488
SET f_int1 = @cur_value , f_int2 = @cur_value,
10489
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10490
f_charbig = '#SINGLE#';
10492
# check single-1 success: 1
10493
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10495
SET f_int1 = @cur_value , f_int2 = @cur_value,
10496
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10497
f_charbig = '#SINGLE#';
10499
# check single-2 success: 1
10500
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10501
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10502
UPDATE t1 SET f_int1 = @cur_value2
10503
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10505
# check single-3 success: 1
10506
SET @cur_value1= -1;
10507
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10508
UPDATE t1 SET f_int1 = @cur_value1
10509
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10511
# check single-4 success: 1
10512
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10513
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10515
# check single-5 success: 1
10516
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10518
# check single-6 success: 1
10519
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10520
ERROR HY000: Table has no partition for value 2147483647
10521
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10522
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10523
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10524
f_charbig = '#NULL#';
10526
SET f_int1 = NULL , f_int2 = -@max_row,
10527
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10528
f_charbig = '#NULL#';
10529
# check null success: 1
10531
# check null-1 success: 1
10532
UPDATE t1 SET f_int1 = -@max_row
10533
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10534
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10536
# check null-2 success: 1
10537
UPDATE t1 SET f_int1 = NULL
10538
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10539
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10541
# check null-3 success: 1
10543
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10544
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10546
# check null-4 success: 1
10548
WHERE f_int1 = 0 AND f_int2 = 0
10549
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10550
AND f_charbig = '#NULL#';
10551
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10552
SELECT f_int1, f_int1, '', '', 'was inserted'
10553
FROM t0_template source_tab
10554
WHERE MOD(f_int1,3) = 0
10555
AND f_int1 BETWEEN @max_row_div2 AND @max_row
10557
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
10558
f_int2 = 2 * @max_row + source_tab.f_int1,
10559
f_charbig = 'was updated';
10561
# check unique-1-a success: 1
10563
# check unique-1-b success: 1
10564
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10565
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10566
f_int2 = CAST(f_char1 AS SIGNED INT),
10567
f_charbig = CONCAT('===',f_char1,'===')
10568
WHERE f_charbig = 'was updated';
10569
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10570
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
10571
FROM t0_template source_tab
10572
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10574
# check replace success: 1
10576
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
10578
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
10579
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
10580
UPDATE t1 SET f_int2 = f_int1,
10581
f_char1 = CAST(f_int1 AS CHAR),
10582
f_char2 = CAST(f_int1 AS CHAR),
10583
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
10584
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
10586
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10587
SELECT f_int1, f_int1, '', '', 'was inserted'
10588
FROM t0_template source_tab
10589
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10591
# check transactions-1 success: 1
10594
# check transactions-2 success: 1
10597
# check transactions-3 success: 1
10598
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10602
# check transactions-4 success: 1
10603
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10604
SELECT f_int1, f_int1, '', '', 'was inserted'
10605
FROM t0_template source_tab
10606
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10608
# check transactions-5 success: 1
10611
Warning 1196 Some non-transactional changed tables couldn't be rolled back
10613
# check transactions-6 success: 1
10614
# INFO: Storage engine used for t1 seems to be not transactional.
10617
# check transactions-7 success: 1
10618
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10620
SET @@session.sql_mode = 'traditional';
10621
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10622
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10623
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10624
'', '', 'was inserted' FROM t0_template
10625
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10626
ERROR 22012: Division by 0
10629
# check transactions-8 success: 1
10630
# INFO: Storage engine used for t1 seems to be unable to revert
10631
# changes made by the failing statement.
10632
SET @@session.sql_mode = '';
10634
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10636
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10638
# check special-1 success: 1
10639
UPDATE t1 SET f_charbig = '';
10641
# check special-2 success: 1
10642
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10643
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10644
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10645
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10646
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10647
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10648
'just inserted' FROM t0_template
10649
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10650
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10652
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10653
f_charbig = 'updated by trigger'
10654
WHERE f_int1 = new.f_int1;
10656
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10657
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10658
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10660
# check trigger-1 success: 1
10661
DROP TRIGGER trg_1;
10662
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10663
f_int2 = CAST(f_char1 AS SIGNED INT),
10664
f_charbig = 'just inserted'
10665
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10667
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10668
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10669
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10670
'just inserted' FROM t0_template
10671
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10672
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10674
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10675
f_charbig = 'updated by trigger'
10676
WHERE f_int1 = new.f_int1;
10678
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10679
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10680
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10682
# check trigger-2 success: 1
10683
DROP TRIGGER trg_1;
10684
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10685
f_int2 = CAST(f_char1 AS SIGNED INT),
10686
f_charbig = 'just inserted'
10687
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10689
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10690
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10691
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10692
'just inserted' FROM t0_template
10693
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10694
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10696
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10697
f_charbig = 'updated by trigger'
10698
WHERE f_int1 = new.f_int1;
10700
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10701
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10703
# check trigger-3 success: 1
10704
DROP TRIGGER trg_1;
10705
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10706
f_int2 = CAST(f_char1 AS SIGNED INT),
10707
f_charbig = 'just inserted'
10708
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10710
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10711
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10712
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10713
'just inserted' FROM t0_template
10714
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10715
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10717
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10718
f_charbig = 'updated by trigger'
10719
WHERE f_int1 = - old.f_int1;
10721
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10722
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10724
# check trigger-4 success: 1
10725
DROP TRIGGER trg_1;
10726
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10727
f_int2 = CAST(f_char1 AS SIGNED INT),
10728
f_charbig = 'just inserted'
10729
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10731
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10732
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10733
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10734
'just inserted' FROM t0_template
10735
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10736
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10738
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10739
f_charbig = 'updated by trigger'
10740
WHERE f_int1 = new.f_int1;
10742
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10743
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10745
# check trigger-5 success: 1
10746
DROP TRIGGER trg_1;
10747
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10748
f_int2 = CAST(f_char1 AS SIGNED INT),
10749
f_charbig = 'just inserted'
10750
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10752
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10753
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10754
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10755
'just inserted' FROM t0_template
10756
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10757
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10759
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10760
f_charbig = 'updated by trigger'
10761
WHERE f_int1 = - old.f_int1;
10763
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10764
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10766
# check trigger-6 success: 1
10767
DROP TRIGGER trg_1;
10768
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10769
f_int2 = CAST(f_char1 AS SIGNED INT),
10770
f_charbig = 'just inserted'
10771
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10773
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10774
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10775
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10776
'just inserted' FROM t0_template
10777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10778
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10780
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10781
f_charbig = 'updated by trigger'
10782
WHERE f_int1 = - old.f_int1;
10785
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10787
# check trigger-7 success: 1
10788
DROP TRIGGER trg_1;
10789
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10790
f_int2 = CAST(f_char1 AS SIGNED INT),
10791
f_charbig = 'just inserted'
10792
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10794
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10795
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10796
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10797
'just inserted' FROM t0_template
10798
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10799
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10801
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10802
f_charbig = 'updated by trigger'
10803
WHERE f_int1 = - old.f_int1;
10806
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10808
# check trigger-8 success: 1
10809
DROP TRIGGER trg_1;
10810
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10811
f_int2 = CAST(f_char1 AS SIGNED INT),
10812
f_charbig = 'just inserted'
10813
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10815
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10817
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10818
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10820
SET new.f_int1 = old.f_int1 + @max_row,
10821
new.f_int2 = old.f_int2 - @max_row,
10822
new.f_charbig = '####updated per update trigger####';
10825
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10826
f_charbig = '####updated per update statement itself####';
10828
# check trigger-9 success: 1
10829
DROP TRIGGER trg_2;
10830
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10831
f_int2 = CAST(f_char1 AS SIGNED INT),
10832
f_charbig = CONCAT('===',f_char1,'===');
10833
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10835
SET new.f_int1 = new.f_int1 + @max_row,
10836
new.f_int2 = new.f_int2 - @max_row,
10837
new.f_charbig = '####updated per update trigger####';
10840
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10841
f_charbig = '####updated per update statement itself####';
10843
# check trigger-10 success: 1
10844
DROP TRIGGER trg_2;
10845
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10846
f_int2 = CAST(f_char1 AS SIGNED INT),
10847
f_charbig = CONCAT('===',f_char1,'===');
10848
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10850
SET new.f_int1 = @my_max1 + @counter,
10851
new.f_int2 = @my_min2 - @counter,
10852
new.f_charbig = '####updated per insert trigger####';
10853
SET @counter = @counter + 1;
10856
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10857
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10858
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10859
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10860
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10862
DROP TRIGGER trg_3;
10864
# check trigger-11 success: 1
10866
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10867
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10868
AND f_charbig = '####updated per insert trigger####';
10869
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10871
SET new.f_int1 = @my_max1 + @counter,
10872
new.f_int2 = @my_min2 - @counter,
10873
new.f_charbig = '####updated per insert trigger####';
10874
SET @counter = @counter + 1;
10877
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10878
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10879
SELECT CAST(f_int1 AS CHAR),
10880
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10881
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10883
DROP TRIGGER trg_3;
10885
# check trigger-12 success: 1
10887
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10888
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10889
AND f_charbig = '####updated per insert trigger####';
10891
Table Op Msg_type Msg_text
10892
test.t1 analyze status OK
10893
CHECK TABLE t1 EXTENDED;
10894
Table Op Msg_type Msg_text
10895
test.t1 check status OK
10896
CHECKSUM TABLE t1 EXTENDED;
10898
test.t1 <some_value>
10900
Table Op Msg_type Msg_text
10901
test.t1 optimize status OK
10902
# check layout success: 1
10903
REPAIR TABLE t1 EXTENDED;
10904
Table Op Msg_type Msg_text
10905
test.t1 repair status OK
10906
# check layout success: 1
10909
# check TRUNCATE success: 1
10910
# check layout success: 1
10911
# End usability test (inc/partition_check.inc)
10918
f_charbig VARCHAR(1000)
10919
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
10921
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
10922
(PARTITION part1 VALUES IN (0)
10923
(SUBPARTITION sp11,
10924
SUBPARTITION sp12),
10925
PARTITION part2 VALUES IN (1)
10926
(SUBPARTITION sp21,
10927
SUBPARTITION sp22),
10928
PARTITION part3 VALUES IN (2)
10929
(SUBPARTITION sp31,
10930
SUBPARTITION sp32),
10931
PARTITION part4 VALUES IN (NULL)
10932
(SUBPARTITION sp41,
10933
SUBPARTITION sp42));
10934
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10935
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
10936
# Start usability test (inc/partition_check.inc)
10938
SHOW CREATE TABLE t1;
10940
t1 CREATE TABLE `t1` (
10941
`f_int1` int(11) DEFAULT NULL,
10942
`f_int2` int(11) DEFAULT NULL,
10943
`f_char1` char(20) DEFAULT NULL,
10944
`f_char2` char(20) DEFAULT NULL,
10945
`f_charbig` varchar(1000) DEFAULT NULL,
10946
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
10947
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
10948
) ENGINE=MyISAM DEFAULT CHARSET=latin1
10949
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
10950
SUBPARTITION BY HASH (f_int1 + 1)
10951
(PARTITION part1 VALUES IN (0)
10952
(SUBPARTITION sp11 ENGINE = MyISAM,
10953
SUBPARTITION sp12 ENGINE = MyISAM),
10954
PARTITION part2 VALUES IN (1)
10955
(SUBPARTITION sp21 ENGINE = MyISAM,
10956
SUBPARTITION sp22 ENGINE = MyISAM),
10957
PARTITION part3 VALUES IN (2)
10958
(SUBPARTITION sp31 ENGINE = MyISAM,
10959
SUBPARTITION sp32 ENGINE = MyISAM),
10960
PARTITION part4 VALUES IN (NULL)
10961
(SUBPARTITION sp41 ENGINE = MyISAM,
10962
SUBPARTITION sp42 ENGINE = MyISAM)) */
10965
t1#P#part1#SP#sp11.MYD
10966
t1#P#part1#SP#sp11.MYI
10967
t1#P#part1#SP#sp12.MYD
10968
t1#P#part1#SP#sp12.MYI
10969
t1#P#part2#SP#sp21.MYD
10970
t1#P#part2#SP#sp21.MYI
10971
t1#P#part2#SP#sp22.MYD
10972
t1#P#part2#SP#sp22.MYI
10973
t1#P#part3#SP#sp31.MYD
10974
t1#P#part3#SP#sp31.MYI
10975
t1#P#part3#SP#sp32.MYD
10976
t1#P#part3#SP#sp32.MYI
10977
t1#P#part4#SP#sp41.MYD
10978
t1#P#part4#SP#sp41.MYI
10979
t1#P#part4#SP#sp42.MYD
10980
t1#P#part4#SP#sp42.MYI
10984
# check prerequisites-1 success: 1
10985
# check COUNT(*) success: 1
10986
# check MIN/MAX(f_int1) success: 1
10987
# check MIN/MAX(f_int2) success: 1
10988
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10989
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10990
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10991
WHERE f_int1 IN (2,3);
10992
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
10993
# check prerequisites-3 success: 1
10994
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
10995
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10996
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10997
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10998
WHERE f_int1 IN (2,3);
10999
DELETE FROM t1 WHERE f_charbig = 'delete me';
11000
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11001
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11002
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11003
WHERE f_int1 IN (2,3);
11004
DELETE FROM t1 WHERE f_charbig = 'delete me';
11005
# check read via f_int1 success: 1
11006
# check read via f_int2 success: 1
11008
# check multiple-1 success: 1
11009
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11011
# check multiple-2 success: 1
11012
INSERT INTO t1 SELECT * FROM t0_template
11013
WHERE MOD(f_int1,3) = 0;
11015
# check multiple-3 success: 1
11016
UPDATE t1 SET f_int1 = f_int1 + @max_row
11017
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11018
AND @max_row_div2 + @max_row_div4;
11020
# check multiple-4 success: 1
11022
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11023
AND @max_row_div2 + @max_row_div4 + @max_row;
11025
# check multiple-5 success: 1
11026
SELECT COUNT(*) INTO @try_count FROM t0_template
11027
WHERE MOD(f_int1,3) = 0
11028
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11029
SELECT COUNT(*) INTO @clash_count
11030
FROM t1 INNER JOIN t0_template USING(f_int1)
11031
WHERE MOD(f_int1,3) = 0
11032
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11033
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11035
SET f_int1 = @cur_value , f_int2 = @cur_value,
11036
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11037
f_charbig = '#SINGLE#';
11039
# check single-1 success: 1
11040
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11042
SET f_int1 = @cur_value , f_int2 = @cur_value,
11043
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11044
f_charbig = '#SINGLE#';
11046
# check single-2 success: 1
11047
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11048
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11049
UPDATE t1 SET f_int1 = @cur_value2
11050
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11052
# check single-3 success: 1
11053
SET @cur_value1= -1;
11054
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11055
UPDATE t1 SET f_int1 = @cur_value1
11056
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11058
# check single-4 success: 1
11059
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11060
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11062
# check single-5 success: 1
11063
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11065
# check single-6 success: 1
11066
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11068
# check single-7 success: 1
11069
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11070
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11071
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11072
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11073
f_charbig = '#NULL#';
11075
SET f_int1 = NULL , f_int2 = -@max_row,
11076
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11077
f_charbig = '#NULL#';
11078
# check null success: 1
11080
# check null-1 success: 1
11081
UPDATE t1 SET f_int1 = -@max_row
11082
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11083
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11085
# check null-2 success: 1
11086
UPDATE t1 SET f_int1 = NULL
11087
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11088
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11090
# check null-3 success: 1
11092
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11093
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11095
# check null-4 success: 1
11097
WHERE f_int1 = 0 AND f_int2 = 0
11098
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11099
AND f_charbig = '#NULL#';
11100
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11101
SELECT f_int1, f_int1, '', '', 'was inserted'
11102
FROM t0_template source_tab
11103
WHERE MOD(f_int1,3) = 0
11104
AND f_int1 BETWEEN @max_row_div2 AND @max_row
11106
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
11107
f_int2 = 2 * @max_row + source_tab.f_int1,
11108
f_charbig = 'was updated';
11110
# check unique-1-a success: 1
11112
# check unique-1-b success: 1
11113
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11114
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11115
f_int2 = CAST(f_char1 AS SIGNED INT),
11116
f_charbig = CONCAT('===',f_char1,'===')
11117
WHERE f_charbig = 'was updated';
11118
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11119
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11120
FROM t0_template source_tab
11121
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11123
# check replace success: 1
11125
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11127
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11128
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11129
UPDATE t1 SET f_int2 = f_int1,
11130
f_char1 = CAST(f_int1 AS CHAR),
11131
f_char2 = CAST(f_int1 AS CHAR),
11132
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11133
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
11135
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11136
SELECT f_int1, f_int1, '', '', 'was inserted'
11137
FROM t0_template source_tab
11138
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11140
# check transactions-1 success: 1
11143
# check transactions-2 success: 1
11146
# check transactions-3 success: 1
11147
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11151
# check transactions-4 success: 1
11152
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11153
SELECT f_int1, f_int1, '', '', 'was inserted'
11154
FROM t0_template source_tab
11155
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11157
# check transactions-5 success: 1
11160
Warning 1196 Some non-transactional changed tables couldn't be rolled back
11162
# check transactions-6 success: 1
11163
# INFO: Storage engine used for t1 seems to be not transactional.
11166
# check transactions-7 success: 1
11167
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11169
SET @@session.sql_mode = 'traditional';
11170
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11171
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11172
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11173
'', '', 'was inserted' FROM t0_template
11174
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11175
ERROR 22012: Division by 0
11178
# check transactions-8 success: 1
11179
# INFO: Storage engine used for t1 seems to be unable to revert
11180
# changes made by the failing statement.
11181
SET @@session.sql_mode = '';
11183
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11185
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11187
# check special-1 success: 1
11188
UPDATE t1 SET f_charbig = '';
11190
# check special-2 success: 1
11191
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11192
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11193
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11195
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11196
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11197
'just inserted' FROM t0_template
11198
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11199
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11201
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11202
f_charbig = 'updated by trigger'
11203
WHERE f_int1 = new.f_int1;
11205
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11206
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11207
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11209
# check trigger-1 success: 1
11210
DROP TRIGGER trg_1;
11211
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11212
f_int2 = CAST(f_char1 AS SIGNED INT),
11213
f_charbig = 'just inserted'
11214
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11216
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11217
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11218
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11219
'just inserted' FROM t0_template
11220
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11221
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11223
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11224
f_charbig = 'updated by trigger'
11225
WHERE f_int1 = new.f_int1;
11227
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11228
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11229
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11231
# check trigger-2 success: 1
11232
DROP TRIGGER trg_1;
11233
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11234
f_int2 = CAST(f_char1 AS SIGNED INT),
11235
f_charbig = 'just inserted'
11236
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11238
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11239
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11240
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11241
'just inserted' FROM t0_template
11242
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11243
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11245
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11246
f_charbig = 'updated by trigger'
11247
WHERE f_int1 = new.f_int1;
11249
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11250
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11252
# check trigger-3 success: 1
11253
DROP TRIGGER trg_1;
11254
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11255
f_int2 = CAST(f_char1 AS SIGNED INT),
11256
f_charbig = 'just inserted'
11257
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11259
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11260
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11261
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11262
'just inserted' FROM t0_template
11263
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11264
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11266
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11267
f_charbig = 'updated by trigger'
11268
WHERE f_int1 = - old.f_int1;
11270
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11271
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11273
# check trigger-4 success: 1
11274
DROP TRIGGER trg_1;
11275
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11276
f_int2 = CAST(f_char1 AS SIGNED INT),
11277
f_charbig = 'just inserted'
11278
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11280
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11281
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11282
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11283
'just inserted' FROM t0_template
11284
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11285
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11287
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11288
f_charbig = 'updated by trigger'
11289
WHERE f_int1 = new.f_int1;
11291
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11292
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11294
# check trigger-5 success: 1
11295
DROP TRIGGER trg_1;
11296
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11297
f_int2 = CAST(f_char1 AS SIGNED INT),
11298
f_charbig = 'just inserted'
11299
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11301
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11302
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11303
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11304
'just inserted' FROM t0_template
11305
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11306
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11308
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11309
f_charbig = 'updated by trigger'
11310
WHERE f_int1 = - old.f_int1;
11312
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11313
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11315
# check trigger-6 success: 1
11316
DROP TRIGGER trg_1;
11317
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11318
f_int2 = CAST(f_char1 AS SIGNED INT),
11319
f_charbig = 'just inserted'
11320
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11322
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11323
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11324
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11325
'just inserted' FROM t0_template
11326
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11327
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11329
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11330
f_charbig = 'updated by trigger'
11331
WHERE f_int1 = - old.f_int1;
11334
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11336
# check trigger-7 success: 1
11337
DROP TRIGGER trg_1;
11338
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11339
f_int2 = CAST(f_char1 AS SIGNED INT),
11340
f_charbig = 'just inserted'
11341
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11343
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11344
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11345
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11346
'just inserted' FROM t0_template
11347
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11348
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11350
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11351
f_charbig = 'updated by trigger'
11352
WHERE f_int1 = - old.f_int1;
11355
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11357
# check trigger-8 success: 1
11358
DROP TRIGGER trg_1;
11359
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11360
f_int2 = CAST(f_char1 AS SIGNED INT),
11361
f_charbig = 'just inserted'
11362
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11364
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11366
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11367
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11369
SET new.f_int1 = old.f_int1 + @max_row,
11370
new.f_int2 = old.f_int2 - @max_row,
11371
new.f_charbig = '####updated per update trigger####';
11374
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11375
f_charbig = '####updated per update statement itself####';
11377
# check trigger-9 success: 1
11378
DROP TRIGGER trg_2;
11379
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11380
f_int2 = CAST(f_char1 AS SIGNED INT),
11381
f_charbig = CONCAT('===',f_char1,'===');
11382
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11384
SET new.f_int1 = new.f_int1 + @max_row,
11385
new.f_int2 = new.f_int2 - @max_row,
11386
new.f_charbig = '####updated per update trigger####';
11389
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11390
f_charbig = '####updated per update statement itself####';
11392
# check trigger-10 success: 1
11393
DROP TRIGGER trg_2;
11394
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11395
f_int2 = CAST(f_char1 AS SIGNED INT),
11396
f_charbig = CONCAT('===',f_char1,'===');
11397
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11399
SET new.f_int1 = @my_max1 + @counter,
11400
new.f_int2 = @my_min2 - @counter,
11401
new.f_charbig = '####updated per insert trigger####';
11402
SET @counter = @counter + 1;
11405
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11406
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11407
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11408
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11409
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11411
DROP TRIGGER trg_3;
11413
# check trigger-11 success: 1
11415
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11416
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11417
AND f_charbig = '####updated per insert trigger####';
11418
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11420
SET new.f_int1 = @my_max1 + @counter,
11421
new.f_int2 = @my_min2 - @counter,
11422
new.f_charbig = '####updated per insert trigger####';
11423
SET @counter = @counter + 1;
11426
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11427
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11428
SELECT CAST(f_int1 AS CHAR),
11429
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11430
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11432
DROP TRIGGER trg_3;
11434
# check trigger-12 success: 1
11436
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11437
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11438
AND f_charbig = '####updated per insert trigger####';
11440
Table Op Msg_type Msg_text
11441
test.t1 analyze status OK
11442
CHECK TABLE t1 EXTENDED;
11443
Table Op Msg_type Msg_text
11444
test.t1 check status OK
11445
CHECKSUM TABLE t1 EXTENDED;
11447
test.t1 <some_value>
11449
Table Op Msg_type Msg_text
11450
test.t1 optimize status OK
11451
# check layout success: 1
11452
REPAIR TABLE t1 EXTENDED;
11453
Table Op Msg_type Msg_text
11454
test.t1 repair status OK
11455
# check layout success: 1
11458
# check TRUNCATE success: 1
11459
# check layout success: 1
11460
# End usability test (inc/partition_check.inc)
11467
f_charbig VARCHAR(1000)
11468
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
11470
PARTITION BY LIST(ABS(MOD(f_int1,2)))
11471
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
11472
(PARTITION part1 VALUES IN (0),
11473
PARTITION part2 VALUES IN (1),
11474
PARTITION part3 VALUES IN (NULL));
11475
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11476
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
11477
# Start usability test (inc/partition_check.inc)
11479
SHOW CREATE TABLE t1;
11481
t1 CREATE TABLE `t1` (
11482
`f_int1` int(11) DEFAULT NULL,
11483
`f_int2` int(11) DEFAULT NULL,
11484
`f_char1` char(20) DEFAULT NULL,
11485
`f_char2` char(20) DEFAULT NULL,
11486
`f_charbig` varchar(1000) DEFAULT NULL,
11487
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
11488
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
11489
) ENGINE=MyISAM DEFAULT CHARSET=latin1
11490
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
11491
SUBPARTITION BY KEY (f_int1)
11493
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
11494
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
11495
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
11498
t1#P#part1#SP#part1sp0.MYD
11499
t1#P#part1#SP#part1sp0.MYI
11500
t1#P#part1#SP#part1sp1.MYD
11501
t1#P#part1#SP#part1sp1.MYI
11502
t1#P#part1#SP#part1sp2.MYD
11503
t1#P#part1#SP#part1sp2.MYI
11504
t1#P#part2#SP#part2sp0.MYD
11505
t1#P#part2#SP#part2sp0.MYI
11506
t1#P#part2#SP#part2sp1.MYD
11507
t1#P#part2#SP#part2sp1.MYI
11508
t1#P#part2#SP#part2sp2.MYD
11509
t1#P#part2#SP#part2sp2.MYI
11510
t1#P#part3#SP#part3sp0.MYD
11511
t1#P#part3#SP#part3sp0.MYI
11512
t1#P#part3#SP#part3sp1.MYD
11513
t1#P#part3#SP#part3sp1.MYI
11514
t1#P#part3#SP#part3sp2.MYD
11515
t1#P#part3#SP#part3sp2.MYI
11519
# check prerequisites-1 success: 1
11520
# check COUNT(*) success: 1
11521
# check MIN/MAX(f_int1) success: 1
11522
# check MIN/MAX(f_int2) success: 1
11523
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11524
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11525
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11526
WHERE f_int1 IN (2,3);
11527
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
11528
# check prerequisites-3 success: 1
11529
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
11530
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11531
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11532
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11533
WHERE f_int1 IN (2,3);
11534
DELETE FROM t1 WHERE f_charbig = 'delete me';
11535
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11536
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11537
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11538
WHERE f_int1 IN (2,3);
11539
DELETE FROM t1 WHERE f_charbig = 'delete me';
11540
# check read via f_int1 success: 1
11541
# check read via f_int2 success: 1
11543
# check multiple-1 success: 1
11544
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11546
# check multiple-2 success: 1
11547
INSERT INTO t1 SELECT * FROM t0_template
11548
WHERE MOD(f_int1,3) = 0;
11550
# check multiple-3 success: 1
11551
UPDATE t1 SET f_int1 = f_int1 + @max_row
11552
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11553
AND @max_row_div2 + @max_row_div4;
11555
# check multiple-4 success: 1
11557
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11558
AND @max_row_div2 + @max_row_div4 + @max_row;
11560
# check multiple-5 success: 1
11561
SELECT COUNT(*) INTO @try_count FROM t0_template
11562
WHERE MOD(f_int1,3) = 0
11563
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11564
SELECT COUNT(*) INTO @clash_count
11565
FROM t1 INNER JOIN t0_template USING(f_int1)
11566
WHERE MOD(f_int1,3) = 0
11567
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11568
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11570
SET f_int1 = @cur_value , f_int2 = @cur_value,
11571
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11572
f_charbig = '#SINGLE#';
11574
# check single-1 success: 1
11575
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11577
SET f_int1 = @cur_value , f_int2 = @cur_value,
11578
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11579
f_charbig = '#SINGLE#';
11581
# check single-2 success: 1
11582
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11583
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11584
UPDATE t1 SET f_int1 = @cur_value2
11585
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11587
# check single-3 success: 1
11588
SET @cur_value1= -1;
11589
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11590
UPDATE t1 SET f_int1 = @cur_value1
11591
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11593
# check single-4 success: 1
11594
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11595
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11597
# check single-5 success: 1
11598
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11600
# check single-6 success: 1
11601
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11603
# check single-7 success: 1
11604
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11605
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11606
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11607
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11608
f_charbig = '#NULL#';
11610
SET f_int1 = NULL , f_int2 = -@max_row,
11611
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11612
f_charbig = '#NULL#';
11613
# check null success: 1
11615
# check null-1 success: 1
11616
UPDATE t1 SET f_int1 = -@max_row
11617
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11618
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11620
# check null-2 success: 1
11621
UPDATE t1 SET f_int1 = NULL
11622
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11623
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11625
# check null-3 success: 1
11627
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
11628
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
11630
# check null-4 success: 1
11632
WHERE f_int1 = 0 AND f_int2 = 0
11633
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11634
AND f_charbig = '#NULL#';
11635
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11636
SELECT f_int1, f_int1, '', '', 'was inserted'
11637
FROM t0_template source_tab
11638
WHERE MOD(f_int1,3) = 0
11639
AND f_int1 BETWEEN @max_row_div2 AND @max_row
11641
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
11642
f_int2 = 2 * @max_row + source_tab.f_int1,
11643
f_charbig = 'was updated';
11645
# check unique-1-a success: 1
11647
# check unique-1-b success: 1
11648
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11649
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11650
f_int2 = CAST(f_char1 AS SIGNED INT),
11651
f_charbig = CONCAT('===',f_char1,'===')
11652
WHERE f_charbig = 'was updated';
11653
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11654
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11655
FROM t0_template source_tab
11656
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11658
# check replace success: 1
11660
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11662
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11663
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11664
UPDATE t1 SET f_int2 = f_int1,
11665
f_char1 = CAST(f_int1 AS CHAR),
11666
f_char2 = CAST(f_int1 AS CHAR),
11667
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11668
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
11670
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11671
SELECT f_int1, f_int1, '', '', 'was inserted'
11672
FROM t0_template source_tab
11673
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11675
# check transactions-1 success: 1
11678
# check transactions-2 success: 1
11681
# check transactions-3 success: 1
11682
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11686
# check transactions-4 success: 1
11687
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11688
SELECT f_int1, f_int1, '', '', 'was inserted'
11689
FROM t0_template source_tab
11690
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11692
# check transactions-5 success: 1
11695
Warning 1196 Some non-transactional changed tables couldn't be rolled back
11697
# check transactions-6 success: 1
11698
# INFO: Storage engine used for t1 seems to be not transactional.
11701
# check transactions-7 success: 1
11702
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11704
SET @@session.sql_mode = 'traditional';
11705
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11706
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11707
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11708
'', '', 'was inserted' FROM t0_template
11709
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11710
ERROR 22012: Division by 0
11713
# check transactions-8 success: 1
11714
# INFO: Storage engine used for t1 seems to be unable to revert
11715
# changes made by the failing statement.
11716
SET @@session.sql_mode = '';
11718
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11720
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11722
# check special-1 success: 1
11723
UPDATE t1 SET f_charbig = '';
11725
# check special-2 success: 1
11726
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11727
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11728
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11729
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11730
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11731
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11732
'just inserted' FROM t0_template
11733
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11734
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11736
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11737
f_charbig = 'updated by trigger'
11738
WHERE f_int1 = new.f_int1;
11740
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11741
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11744
# check trigger-1 success: 1
11745
DROP TRIGGER trg_1;
11746
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11747
f_int2 = CAST(f_char1 AS SIGNED INT),
11748
f_charbig = 'just inserted'
11749
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11751
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11752
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11753
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11754
'just inserted' FROM t0_template
11755
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11756
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11758
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11759
f_charbig = 'updated by trigger'
11760
WHERE f_int1 = new.f_int1;
11762
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11763
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11764
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11766
# check trigger-2 success: 1
11767
DROP TRIGGER trg_1;
11768
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11769
f_int2 = CAST(f_char1 AS SIGNED INT),
11770
f_charbig = 'just inserted'
11771
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11773
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11774
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11775
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11776
'just inserted' FROM t0_template
11777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11778
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11780
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11781
f_charbig = 'updated by trigger'
11782
WHERE f_int1 = new.f_int1;
11784
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11785
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11787
# check trigger-3 success: 1
11788
DROP TRIGGER trg_1;
11789
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11790
f_int2 = CAST(f_char1 AS SIGNED INT),
11791
f_charbig = 'just inserted'
11792
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11794
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11795
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11796
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11797
'just inserted' FROM t0_template
11798
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11799
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11801
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11802
f_charbig = 'updated by trigger'
11803
WHERE f_int1 = - old.f_int1;
11805
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11806
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11808
# check trigger-4 success: 1
11809
DROP TRIGGER trg_1;
11810
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11811
f_int2 = CAST(f_char1 AS SIGNED INT),
11812
f_charbig = 'just inserted'
11813
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11815
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11816
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11817
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11818
'just inserted' FROM t0_template
11819
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11820
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11822
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11823
f_charbig = 'updated by trigger'
11824
WHERE f_int1 = new.f_int1;
11826
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11827
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11829
# check trigger-5 success: 1
11830
DROP TRIGGER trg_1;
11831
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11832
f_int2 = CAST(f_char1 AS SIGNED INT),
11833
f_charbig = 'just inserted'
11834
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11836
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11837
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11838
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11839
'just inserted' FROM t0_template
11840
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11841
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11843
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11844
f_charbig = 'updated by trigger'
11845
WHERE f_int1 = - old.f_int1;
11847
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11848
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11850
# check trigger-6 success: 1
11851
DROP TRIGGER trg_1;
11852
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11853
f_int2 = CAST(f_char1 AS SIGNED INT),
11854
f_charbig = 'just inserted'
11855
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11857
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11858
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11859
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11860
'just inserted' FROM t0_template
11861
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11862
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11864
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11865
f_charbig = 'updated by trigger'
11866
WHERE f_int1 = - old.f_int1;
11869
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11871
# check trigger-7 success: 1
11872
DROP TRIGGER trg_1;
11873
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11874
f_int2 = CAST(f_char1 AS SIGNED INT),
11875
f_charbig = 'just inserted'
11876
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11878
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11879
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11880
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11881
'just inserted' FROM t0_template
11882
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11883
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11885
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11886
f_charbig = 'updated by trigger'
11887
WHERE f_int1 = - old.f_int1;
11890
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11892
# check trigger-8 success: 1
11893
DROP TRIGGER trg_1;
11894
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11895
f_int2 = CAST(f_char1 AS SIGNED INT),
11896
f_charbig = 'just inserted'
11897
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11899
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11901
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11902
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11904
SET new.f_int1 = old.f_int1 + @max_row,
11905
new.f_int2 = old.f_int2 - @max_row,
11906
new.f_charbig = '####updated per update trigger####';
11909
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11910
f_charbig = '####updated per update statement itself####';
11912
# check trigger-9 success: 1
11913
DROP TRIGGER trg_2;
11914
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11915
f_int2 = CAST(f_char1 AS SIGNED INT),
11916
f_charbig = CONCAT('===',f_char1,'===');
11917
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11919
SET new.f_int1 = new.f_int1 + @max_row,
11920
new.f_int2 = new.f_int2 - @max_row,
11921
new.f_charbig = '####updated per update trigger####';
11924
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11925
f_charbig = '####updated per update statement itself####';
11927
# check trigger-10 success: 1
11928
DROP TRIGGER trg_2;
11929
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11930
f_int2 = CAST(f_char1 AS SIGNED INT),
11931
f_charbig = CONCAT('===',f_char1,'===');
11932
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11934
SET new.f_int1 = @my_max1 + @counter,
11935
new.f_int2 = @my_min2 - @counter,
11936
new.f_charbig = '####updated per insert trigger####';
11937
SET @counter = @counter + 1;
11940
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11941
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11942
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11943
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11944
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11946
DROP TRIGGER trg_3;
11948
# check trigger-11 success: 1
11950
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11951
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11952
AND f_charbig = '####updated per insert trigger####';
11953
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11955
SET new.f_int1 = @my_max1 + @counter,
11956
new.f_int2 = @my_min2 - @counter,
11957
new.f_charbig = '####updated per insert trigger####';
11958
SET @counter = @counter + 1;
11961
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11962
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11963
SELECT CAST(f_int1 AS CHAR),
11964
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11965
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11967
DROP TRIGGER trg_3;
11969
# check trigger-12 success: 1
11971
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11972
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11973
AND f_charbig = '####updated per insert trigger####';
11975
Table Op Msg_type Msg_text
11976
test.t1 analyze status OK
11977
CHECK TABLE t1 EXTENDED;
11978
Table Op Msg_type Msg_text
11979
test.t1 check status OK
11980
CHECKSUM TABLE t1 EXTENDED;
11982
test.t1 <some_value>
11984
Table Op Msg_type Msg_text
11985
test.t1 optimize status OK
11986
# check layout success: 1
11987
REPAIR TABLE t1 EXTENDED;
11988
Table Op Msg_type Msg_text
11989
test.t1 repair status OK
11990
# check layout success: 1
11993
# check TRUNCATE success: 1
11994
# check layout success: 1
11995
# End usability test (inc/partition_check.inc)
11997
#------------------------------------------------------------------------
11998
# 3 Tables with PRIMARY KEY and/or UNIQUE INDEXes
11999
# The partitioning function contains two columns.
12000
#------------------------------------------------------------------------
12001
# 3.3 PRIMARY KEY and UNIQUE INDEX consisting of two columns
12002
DROP TABLE IF EXISTS t1;
12008
f_charbig VARCHAR(1000)
12009
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
12011
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
12012
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12013
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
12014
# Start usability test (inc/partition_check.inc)
12016
SHOW CREATE TABLE t1;
12018
t1 CREATE TABLE `t1` (
12019
`f_int1` int(11) DEFAULT NULL,
12020
`f_int2` int(11) DEFAULT NULL,
12021
`f_char1` char(20) DEFAULT NULL,
12022
`f_char2` char(20) DEFAULT NULL,
12023
`f_charbig` varchar(1000) DEFAULT NULL,
12024
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
12025
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
12026
) ENGINE=MyISAM DEFAULT CHARSET=latin1
12027
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
12038
# check prerequisites-1 success: 1
12039
# check COUNT(*) success: 1
12040
# check MIN/MAX(f_int1) success: 1
12041
# check MIN/MAX(f_int2) success: 1
12042
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12043
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12044
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12045
WHERE f_int1 IN (2,3);
12046
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
12047
# check prerequisites-3 success: 1
12048
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12049
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12050
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12051
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12052
WHERE f_int1 IN (2,3);
12053
DELETE FROM t1 WHERE f_charbig = 'delete me';
12054
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12055
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12056
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12057
WHERE f_int1 IN (2,3);
12058
DELETE FROM t1 WHERE f_charbig = 'delete me';
12059
# check read via f_int1 success: 1
12060
# check read via f_int2 success: 1
12062
# check multiple-1 success: 1
12063
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12065
# check multiple-2 success: 1
12066
INSERT INTO t1 SELECT * FROM t0_template
12067
WHERE MOD(f_int1,3) = 0;
12069
# check multiple-3 success: 1
12070
UPDATE t1 SET f_int1 = f_int1 + @max_row
12071
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12072
AND @max_row_div2 + @max_row_div4;
12074
# check multiple-4 success: 1
12076
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12077
AND @max_row_div2 + @max_row_div4 + @max_row;
12079
# check multiple-5 success: 1
12080
SELECT COUNT(*) INTO @try_count FROM t0_template
12081
WHERE MOD(f_int1,3) = 0
12082
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12083
SELECT COUNT(*) INTO @clash_count
12084
FROM t1 INNER JOIN t0_template USING(f_int1)
12085
WHERE MOD(f_int1,3) = 0
12086
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12087
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12089
SET f_int1 = @cur_value , f_int2 = @cur_value,
12090
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12091
f_charbig = '#SINGLE#';
12093
# check single-1 success: 1
12094
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12096
SET f_int1 = @cur_value , f_int2 = @cur_value,
12097
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12098
f_charbig = '#SINGLE#';
12100
# check single-2 success: 1
12101
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12102
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12103
UPDATE t1 SET f_int1 = @cur_value2
12104
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12106
# check single-3 success: 1
12107
SET @cur_value1= -1;
12108
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12109
UPDATE t1 SET f_int1 = @cur_value1
12110
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12112
# check single-4 success: 1
12113
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12114
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12116
# check single-5 success: 1
12117
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12119
# check single-6 success: 1
12120
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12122
# check single-7 success: 1
12123
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12124
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12125
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12126
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12127
f_charbig = '#NULL#';
12129
SET f_int1 = NULL , f_int2 = -@max_row,
12130
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12131
f_charbig = '#NULL#';
12132
# check null success: 1
12134
# check null-1 success: 1
12135
UPDATE t1 SET f_int1 = -@max_row
12136
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12137
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12139
# check null-2 success: 1
12140
UPDATE t1 SET f_int1 = NULL
12141
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12142
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12144
# check null-3 success: 1
12146
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12147
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12149
# check null-4 success: 1
12151
WHERE f_int1 = 0 AND f_int2 = 0
12152
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12153
AND f_charbig = '#NULL#';
12154
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12155
SELECT f_int1, f_int1, '', '', 'was inserted'
12156
FROM t0_template source_tab
12157
WHERE MOD(f_int1,3) = 0
12158
AND f_int1 BETWEEN @max_row_div2 AND @max_row
12160
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12161
f_int2 = 2 * @max_row + source_tab.f_int1,
12162
f_charbig = 'was updated';
12164
# check unique-1-a success: 1
12166
# check unique-1-b success: 1
12167
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12168
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12169
f_int2 = CAST(f_char1 AS SIGNED INT),
12170
f_charbig = CONCAT('===',f_char1,'===')
12171
WHERE f_charbig = 'was updated';
12172
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12173
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12174
FROM t0_template source_tab
12175
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12177
# check replace success: 1
12179
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
12181
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
12182
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
12183
UPDATE t1 SET f_int2 = f_int1,
12184
f_char1 = CAST(f_int1 AS CHAR),
12185
f_char2 = CAST(f_int1 AS CHAR),
12186
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
12187
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
12189
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12190
SELECT f_int1, f_int1, '', '', 'was inserted'
12191
FROM t0_template source_tab
12192
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12194
# check transactions-1 success: 1
12197
# check transactions-2 success: 1
12200
# check transactions-3 success: 1
12201
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12205
# check transactions-4 success: 1
12206
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12207
SELECT f_int1, f_int1, '', '', 'was inserted'
12208
FROM t0_template source_tab
12209
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12211
# check transactions-5 success: 1
12214
Warning 1196 Some non-transactional changed tables couldn't be rolled back
12216
# check transactions-6 success: 1
12217
# INFO: Storage engine used for t1 seems to be not transactional.
12220
# check transactions-7 success: 1
12221
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12223
SET @@session.sql_mode = 'traditional';
12224
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12225
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12226
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12227
'', '', 'was inserted' FROM t0_template
12228
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12229
ERROR 22012: Division by 0
12232
# check transactions-8 success: 1
12233
# INFO: Storage engine used for t1 seems to be unable to revert
12234
# changes made by the failing statement.
12235
SET @@session.sql_mode = '';
12237
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12239
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12241
# check special-1 success: 1
12242
UPDATE t1 SET f_charbig = '';
12244
# check special-2 success: 1
12245
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12246
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12247
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12248
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12249
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12250
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12251
'just inserted' FROM t0_template
12252
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12253
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12255
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12256
f_charbig = 'updated by trigger'
12257
WHERE f_int1 = new.f_int1;
12259
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12260
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12261
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12263
# check trigger-1 success: 1
12264
DROP TRIGGER trg_1;
12265
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12266
f_int2 = CAST(f_char1 AS SIGNED INT),
12267
f_charbig = 'just inserted'
12268
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12270
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12271
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12272
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12273
'just inserted' FROM t0_template
12274
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12275
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12277
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12278
f_charbig = 'updated by trigger'
12279
WHERE f_int1 = new.f_int1;
12281
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12282
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12283
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12285
# check trigger-2 success: 1
12286
DROP TRIGGER trg_1;
12287
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12288
f_int2 = CAST(f_char1 AS SIGNED INT),
12289
f_charbig = 'just inserted'
12290
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12292
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12293
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12294
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12295
'just inserted' FROM t0_template
12296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12297
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12299
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12300
f_charbig = 'updated by trigger'
12301
WHERE f_int1 = new.f_int1;
12303
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12304
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12306
# check trigger-3 success: 1
12307
DROP TRIGGER trg_1;
12308
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12309
f_int2 = CAST(f_char1 AS SIGNED INT),
12310
f_charbig = 'just inserted'
12311
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12313
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12314
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12315
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12316
'just inserted' FROM t0_template
12317
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12318
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12320
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12321
f_charbig = 'updated by trigger'
12322
WHERE f_int1 = - old.f_int1;
12324
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12325
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12327
# check trigger-4 success: 1
12328
DROP TRIGGER trg_1;
12329
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12330
f_int2 = CAST(f_char1 AS SIGNED INT),
12331
f_charbig = 'just inserted'
12332
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12334
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12335
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12336
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12337
'just inserted' FROM t0_template
12338
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12339
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12341
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12342
f_charbig = 'updated by trigger'
12343
WHERE f_int1 = new.f_int1;
12345
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12346
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12348
# check trigger-5 success: 1
12349
DROP TRIGGER trg_1;
12350
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12351
f_int2 = CAST(f_char1 AS SIGNED INT),
12352
f_charbig = 'just inserted'
12353
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12355
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12356
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12357
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12358
'just inserted' FROM t0_template
12359
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12360
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12362
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12363
f_charbig = 'updated by trigger'
12364
WHERE f_int1 = - old.f_int1;
12366
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12367
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12369
# check trigger-6 success: 1
12370
DROP TRIGGER trg_1;
12371
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12372
f_int2 = CAST(f_char1 AS SIGNED INT),
12373
f_charbig = 'just inserted'
12374
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12376
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12377
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12378
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12379
'just inserted' FROM t0_template
12380
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12381
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12383
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12384
f_charbig = 'updated by trigger'
12385
WHERE f_int1 = - old.f_int1;
12388
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12390
# check trigger-7 success: 1
12391
DROP TRIGGER trg_1;
12392
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12393
f_int2 = CAST(f_char1 AS SIGNED INT),
12394
f_charbig = 'just inserted'
12395
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12397
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12398
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12399
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12400
'just inserted' FROM t0_template
12401
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12402
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12404
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12405
f_charbig = 'updated by trigger'
12406
WHERE f_int1 = - old.f_int1;
12409
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12411
# check trigger-8 success: 1
12412
DROP TRIGGER trg_1;
12413
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12414
f_int2 = CAST(f_char1 AS SIGNED INT),
12415
f_charbig = 'just inserted'
12416
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12418
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12420
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12421
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12423
SET new.f_int1 = old.f_int1 + @max_row,
12424
new.f_int2 = old.f_int2 - @max_row,
12425
new.f_charbig = '####updated per update trigger####';
12428
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12429
f_charbig = '####updated per update statement itself####';
12431
# check trigger-9 success: 1
12432
DROP TRIGGER trg_2;
12433
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12434
f_int2 = CAST(f_char1 AS SIGNED INT),
12435
f_charbig = CONCAT('===',f_char1,'===');
12436
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12438
SET new.f_int1 = new.f_int1 + @max_row,
12439
new.f_int2 = new.f_int2 - @max_row,
12440
new.f_charbig = '####updated per update trigger####';
12443
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12444
f_charbig = '####updated per update statement itself####';
12446
# check trigger-10 success: 1
12447
DROP TRIGGER trg_2;
12448
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12449
f_int2 = CAST(f_char1 AS SIGNED INT),
12450
f_charbig = CONCAT('===',f_char1,'===');
12451
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12453
SET new.f_int1 = @my_max1 + @counter,
12454
new.f_int2 = @my_min2 - @counter,
12455
new.f_charbig = '####updated per insert trigger####';
12456
SET @counter = @counter + 1;
12459
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12460
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12461
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12462
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12463
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12465
DROP TRIGGER trg_3;
12467
# check trigger-11 success: 1
12469
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12470
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12471
AND f_charbig = '####updated per insert trigger####';
12472
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12474
SET new.f_int1 = @my_max1 + @counter,
12475
new.f_int2 = @my_min2 - @counter,
12476
new.f_charbig = '####updated per insert trigger####';
12477
SET @counter = @counter + 1;
12480
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12481
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12482
SELECT CAST(f_int1 AS CHAR),
12483
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12484
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12486
DROP TRIGGER trg_3;
12488
# check trigger-12 success: 1
12490
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12491
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12492
AND f_charbig = '####updated per insert trigger####';
12494
Table Op Msg_type Msg_text
12495
test.t1 analyze status OK
12496
CHECK TABLE t1 EXTENDED;
12497
Table Op Msg_type Msg_text
12498
test.t1 check status OK
12499
CHECKSUM TABLE t1 EXTENDED;
12501
test.t1 <some_value>
12503
Table Op Msg_type Msg_text
12504
test.t1 optimize status OK
12505
# check layout success: 1
12506
REPAIR TABLE t1 EXTENDED;
12507
Table Op Msg_type Msg_text
12508
test.t1 repair status OK
12509
# check layout success: 1
12512
# check TRUNCATE success: 1
12513
# check layout success: 1
12514
# End usability test (inc/partition_check.inc)
12521
f_charbig VARCHAR(1000)
12522
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
12524
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
12525
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12526
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
12527
# Start usability test (inc/partition_check.inc)
12529
SHOW CREATE TABLE t1;
12531
t1 CREATE TABLE `t1` (
12532
`f_int1` int(11) DEFAULT NULL,
12533
`f_int2` int(11) DEFAULT NULL,
12534
`f_char1` char(20) DEFAULT NULL,
12535
`f_char2` char(20) DEFAULT NULL,
12536
`f_charbig` varchar(1000) DEFAULT NULL,
12537
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
12538
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
12539
) ENGINE=MyISAM DEFAULT CHARSET=latin1
12540
/*!50100 PARTITION BY KEY (f_int1,f_int2)
12557
# check prerequisites-1 success: 1
12558
# check COUNT(*) success: 1
12559
# check MIN/MAX(f_int1) success: 1
12560
# check MIN/MAX(f_int2) success: 1
12561
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12562
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12563
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12564
WHERE f_int1 IN (2,3);
12565
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
12566
# check prerequisites-3 success: 1
12567
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12568
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12569
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12570
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12571
WHERE f_int1 IN (2,3);
12572
DELETE FROM t1 WHERE f_charbig = 'delete me';
12573
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12574
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12575
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12576
WHERE f_int1 IN (2,3);
12577
DELETE FROM t1 WHERE f_charbig = 'delete me';
12578
# check read via f_int1 success: 1
12579
# check read via f_int2 success: 1
12581
# check multiple-1 success: 1
12582
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12584
# check multiple-2 success: 1
12585
INSERT INTO t1 SELECT * FROM t0_template
12586
WHERE MOD(f_int1,3) = 0;
12588
# check multiple-3 success: 1
12589
UPDATE t1 SET f_int1 = f_int1 + @max_row
12590
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12591
AND @max_row_div2 + @max_row_div4;
12593
# check multiple-4 success: 1
12595
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12596
AND @max_row_div2 + @max_row_div4 + @max_row;
12598
# check multiple-5 success: 1
12599
SELECT COUNT(*) INTO @try_count FROM t0_template
12600
WHERE MOD(f_int1,3) = 0
12601
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12602
SELECT COUNT(*) INTO @clash_count
12603
FROM t1 INNER JOIN t0_template USING(f_int1)
12604
WHERE MOD(f_int1,3) = 0
12605
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12606
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12608
SET f_int1 = @cur_value , f_int2 = @cur_value,
12609
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12610
f_charbig = '#SINGLE#';
12612
# check single-1 success: 1
12613
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12615
SET f_int1 = @cur_value , f_int2 = @cur_value,
12616
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12617
f_charbig = '#SINGLE#';
12619
# check single-2 success: 1
12620
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12621
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12622
UPDATE t1 SET f_int1 = @cur_value2
12623
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12625
# check single-3 success: 1
12626
SET @cur_value1= -1;
12627
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12628
UPDATE t1 SET f_int1 = @cur_value1
12629
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12631
# check single-4 success: 1
12632
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12633
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12635
# check single-5 success: 1
12636
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12638
# check single-6 success: 1
12639
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12641
# check single-7 success: 1
12642
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12643
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12644
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12645
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12646
f_charbig = '#NULL#';
12648
SET f_int1 = NULL , f_int2 = -@max_row,
12649
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12650
f_charbig = '#NULL#';
12651
# check null success: 1
12653
# check null-1 success: 1
12654
UPDATE t1 SET f_int1 = -@max_row
12655
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12656
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12658
# check null-2 success: 1
12659
UPDATE t1 SET f_int1 = NULL
12660
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12661
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12663
# check null-3 success: 1
12665
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
12666
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
12668
# check null-4 success: 1
12670
WHERE f_int1 = 0 AND f_int2 = 0
12671
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12672
AND f_charbig = '#NULL#';
12673
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12674
SELECT f_int1, f_int1, '', '', 'was inserted'
12675
FROM t0_template source_tab
12676
WHERE MOD(f_int1,3) = 0
12677
AND f_int1 BETWEEN @max_row_div2 AND @max_row
12679
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12680
f_int2 = 2 * @max_row + source_tab.f_int1,
12681
f_charbig = 'was updated';
12683
# check unique-1-a success: 1
12685
# check unique-1-b success: 1
12686
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12687
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12688
f_int2 = CAST(f_char1 AS SIGNED INT),
12689
f_charbig = CONCAT('===',f_char1,'===')
12690
WHERE f_charbig = 'was updated';
12691
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12692
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12693
FROM t0_template source_tab
12694
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12696
# check replace success: 1
12698
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
12700
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
12701
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
12702
UPDATE t1 SET f_int2 = f_int1,
12703
f_char1 = CAST(f_int1 AS CHAR),
12704
f_char2 = CAST(f_int1 AS CHAR),
12705
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
12706
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
12708
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12709
SELECT f_int1, f_int1, '', '', 'was inserted'
12710
FROM t0_template source_tab
12711
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12713
# check transactions-1 success: 1
12716
# check transactions-2 success: 1
12719
# check transactions-3 success: 1
12720
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12724
# check transactions-4 success: 1
12725
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12726
SELECT f_int1, f_int1, '', '', 'was inserted'
12727
FROM t0_template source_tab
12728
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12730
# check transactions-5 success: 1
12733
Warning 1196 Some non-transactional changed tables couldn't be rolled back
12735
# check transactions-6 success: 1
12736
# INFO: Storage engine used for t1 seems to be not transactional.
12739
# check transactions-7 success: 1
12740
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12742
SET @@session.sql_mode = 'traditional';
12743
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12744
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12745
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12746
'', '', 'was inserted' FROM t0_template
12747
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12748
ERROR 22012: Division by 0
12751
# check transactions-8 success: 1
12752
# INFO: Storage engine used for t1 seems to be unable to revert
12753
# changes made by the failing statement.
12754
SET @@session.sql_mode = '';
12756
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12758
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12760
# check special-1 success: 1
12761
UPDATE t1 SET f_charbig = '';
12763
# check special-2 success: 1
12764
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12765
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12766
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12767
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12768
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12769
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12770
'just inserted' FROM t0_template
12771
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12772
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12774
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12775
f_charbig = 'updated by trigger'
12776
WHERE f_int1 = new.f_int1;
12778
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12779
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12780
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12782
# check trigger-1 success: 1
12783
DROP TRIGGER trg_1;
12784
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12785
f_int2 = CAST(f_char1 AS SIGNED INT),
12786
f_charbig = 'just inserted'
12787
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12789
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12790
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12791
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12792
'just inserted' FROM t0_template
12793
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12794
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12796
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12797
f_charbig = 'updated by trigger'
12798
WHERE f_int1 = new.f_int1;
12800
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12801
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12802
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12804
# check trigger-2 success: 1
12805
DROP TRIGGER trg_1;
12806
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12807
f_int2 = CAST(f_char1 AS SIGNED INT),
12808
f_charbig = 'just inserted'
12809
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12811
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12812
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12813
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12814
'just inserted' FROM t0_template
12815
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12816
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12818
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12819
f_charbig = 'updated by trigger'
12820
WHERE f_int1 = new.f_int1;
12822
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12823
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12825
# check trigger-3 success: 1
12826
DROP TRIGGER trg_1;
12827
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12828
f_int2 = CAST(f_char1 AS SIGNED INT),
12829
f_charbig = 'just inserted'
12830
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12832
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12833
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12834
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12835
'just inserted' FROM t0_template
12836
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12837
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12839
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12840
f_charbig = 'updated by trigger'
12841
WHERE f_int1 = - old.f_int1;
12843
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12844
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12846
# check trigger-4 success: 1
12847
DROP TRIGGER trg_1;
12848
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12849
f_int2 = CAST(f_char1 AS SIGNED INT),
12850
f_charbig = 'just inserted'
12851
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12853
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12854
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12855
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12856
'just inserted' FROM t0_template
12857
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12858
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12860
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12861
f_charbig = 'updated by trigger'
12862
WHERE f_int1 = new.f_int1;
12864
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12865
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12867
# check trigger-5 success: 1
12868
DROP TRIGGER trg_1;
12869
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12870
f_int2 = CAST(f_char1 AS SIGNED INT),
12871
f_charbig = 'just inserted'
12872
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12874
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12875
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12876
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12877
'just inserted' FROM t0_template
12878
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12879
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12881
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12882
f_charbig = 'updated by trigger'
12883
WHERE f_int1 = - old.f_int1;
12885
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12886
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12888
# check trigger-6 success: 1
12889
DROP TRIGGER trg_1;
12890
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12891
f_int2 = CAST(f_char1 AS SIGNED INT),
12892
f_charbig = 'just inserted'
12893
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12895
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12896
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12897
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12898
'just inserted' FROM t0_template
12899
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12900
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12902
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12903
f_charbig = 'updated by trigger'
12904
WHERE f_int1 = - old.f_int1;
12907
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12909
# check trigger-7 success: 1
12910
DROP TRIGGER trg_1;
12911
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12912
f_int2 = CAST(f_char1 AS SIGNED INT),
12913
f_charbig = 'just inserted'
12914
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12916
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12917
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12918
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12919
'just inserted' FROM t0_template
12920
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12921
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12923
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12924
f_charbig = 'updated by trigger'
12925
WHERE f_int1 = - old.f_int1;
12928
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12930
# check trigger-8 success: 1
12931
DROP TRIGGER trg_1;
12932
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12933
f_int2 = CAST(f_char1 AS SIGNED INT),
12934
f_charbig = 'just inserted'
12935
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12937
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12939
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12940
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12942
SET new.f_int1 = old.f_int1 + @max_row,
12943
new.f_int2 = old.f_int2 - @max_row,
12944
new.f_charbig = '####updated per update trigger####';
12947
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12948
f_charbig = '####updated per update statement itself####';
12950
# check trigger-9 success: 1
12951
DROP TRIGGER trg_2;
12952
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12953
f_int2 = CAST(f_char1 AS SIGNED INT),
12954
f_charbig = CONCAT('===',f_char1,'===');
12955
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12957
SET new.f_int1 = new.f_int1 + @max_row,
12958
new.f_int2 = new.f_int2 - @max_row,
12959
new.f_charbig = '####updated per update trigger####';
12962
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12963
f_charbig = '####updated per update statement itself####';
12965
# check trigger-10 success: 1
12966
DROP TRIGGER trg_2;
12967
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12968
f_int2 = CAST(f_char1 AS SIGNED INT),
12969
f_charbig = CONCAT('===',f_char1,'===');
12970
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12972
SET new.f_int1 = @my_max1 + @counter,
12973
new.f_int2 = @my_min2 - @counter,
12974
new.f_charbig = '####updated per insert trigger####';
12975
SET @counter = @counter + 1;
12978
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12979
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12980
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12981
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12982
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12984
DROP TRIGGER trg_3;
12986
# check trigger-11 success: 1
12988
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12989
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12990
AND f_charbig = '####updated per insert trigger####';
12991
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12993
SET new.f_int1 = @my_max1 + @counter,
12994
new.f_int2 = @my_min2 - @counter,
12995
new.f_charbig = '####updated per insert trigger####';
12996
SET @counter = @counter + 1;
12999
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13000
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13001
SELECT CAST(f_int1 AS CHAR),
13002
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13003
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13005
DROP TRIGGER trg_3;
13007
# check trigger-12 success: 1
13009
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13010
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13011
AND f_charbig = '####updated per insert trigger####';
13013
Table Op Msg_type Msg_text
13014
test.t1 analyze status OK
13015
CHECK TABLE t1 EXTENDED;
13016
Table Op Msg_type Msg_text
13017
test.t1 check status OK
13018
CHECKSUM TABLE t1 EXTENDED;
13020
test.t1 <some_value>
13022
Table Op Msg_type Msg_text
13023
test.t1 optimize status OK
13024
# check layout success: 1
13025
REPAIR TABLE t1 EXTENDED;
13026
Table Op Msg_type Msg_text
13027
test.t1 repair status OK
13028
# check layout success: 1
13031
# check TRUNCATE success: 1
13032
# check layout success: 1
13033
# End usability test (inc/partition_check.inc)
13040
f_charbig VARCHAR(1000)
13041
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
13043
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
13044
(PARTITION part_3 VALUES IN (-3),
13045
PARTITION part_2 VALUES IN (-2),
13046
PARTITION part_1 VALUES IN (-1),
13047
PARTITION part_N VALUES IN (NULL),
13048
PARTITION part0 VALUES IN (0),
13049
PARTITION part1 VALUES IN (1),
13050
PARTITION part2 VALUES IN (2),
13051
PARTITION part3 VALUES IN (3));
13052
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13053
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
13054
# Start usability test (inc/partition_check.inc)
13056
SHOW CREATE TABLE t1;
13058
t1 CREATE TABLE `t1` (
13059
`f_int1` int(11) DEFAULT NULL,
13060
`f_int2` int(11) DEFAULT NULL,
13061
`f_char1` char(20) DEFAULT NULL,
13062
`f_char2` char(20) DEFAULT NULL,
13063
`f_charbig` varchar(1000) DEFAULT NULL,
13064
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
13065
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
13066
) ENGINE=MyISAM DEFAULT CHARSET=latin1
13067
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
13068
(PARTITION part_3 VALUES IN (-3) ENGINE = MyISAM,
13069
PARTITION part_2 VALUES IN (-2) ENGINE = MyISAM,
13070
PARTITION part_1 VALUES IN (-1) ENGINE = MyISAM,
13071
PARTITION part_N VALUES IN (NULL) ENGINE = MyISAM,
13072
PARTITION part0 VALUES IN (0) ENGINE = MyISAM,
13073
PARTITION part1 VALUES IN (1) ENGINE = MyISAM,
13074
PARTITION part2 VALUES IN (2) ENGINE = MyISAM,
13075
PARTITION part3 VALUES IN (3) ENGINE = MyISAM) */
13097
# check prerequisites-1 success: 1
13098
# check COUNT(*) success: 1
13099
# check MIN/MAX(f_int1) success: 1
13100
# check MIN/MAX(f_int2) success: 1
13101
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13102
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13103
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13104
WHERE f_int1 IN (2,3);
13105
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
13106
# check prerequisites-3 success: 1
13107
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
13108
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13109
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13110
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13111
WHERE f_int1 IN (2,3);
13112
DELETE FROM t1 WHERE f_charbig = 'delete me';
13113
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13114
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13115
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13116
WHERE f_int1 IN (2,3);
13117
DELETE FROM t1 WHERE f_charbig = 'delete me';
13118
# check read via f_int1 success: 1
13119
# check read via f_int2 success: 1
13121
# check multiple-1 success: 1
13122
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13124
# check multiple-2 success: 1
13125
INSERT INTO t1 SELECT * FROM t0_template
13126
WHERE MOD(f_int1,3) = 0;
13128
# check multiple-3 success: 1
13129
UPDATE t1 SET f_int1 = f_int1 + @max_row
13130
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13131
AND @max_row_div2 + @max_row_div4;
13133
# check multiple-4 success: 1
13135
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13136
AND @max_row_div2 + @max_row_div4 + @max_row;
13138
# check multiple-5 success: 1
13139
SELECT COUNT(*) INTO @try_count FROM t0_template
13140
WHERE MOD(f_int1,3) = 0
13141
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13142
SELECT COUNT(*) INTO @clash_count
13143
FROM t1 INNER JOIN t0_template USING(f_int1)
13144
WHERE MOD(f_int1,3) = 0
13145
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13146
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13148
SET f_int1 = @cur_value , f_int2 = @cur_value,
13149
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13150
f_charbig = '#SINGLE#';
13152
# check single-1 success: 1
13153
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13155
SET f_int1 = @cur_value , f_int2 = @cur_value,
13156
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13157
f_charbig = '#SINGLE#';
13159
# check single-2 success: 1
13160
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13161
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13162
UPDATE t1 SET f_int1 = @cur_value2
13163
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13165
# check single-3 success: 1
13166
SET @cur_value1= -1;
13167
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13168
UPDATE t1 SET f_int1 = @cur_value1
13169
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13171
# check single-4 success: 1
13172
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13173
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13175
# check single-5 success: 1
13176
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13178
# check single-6 success: 1
13179
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13181
# check single-7 success: 1
13182
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13183
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13184
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13185
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13186
f_charbig = '#NULL#';
13188
SET f_int1 = NULL , f_int2 = -@max_row,
13189
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13190
f_charbig = '#NULL#';
13191
# check null success: 1
13193
# check null-1 success: 1
13194
UPDATE t1 SET f_int1 = -@max_row
13195
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13196
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13198
# check null-2 success: 1
13199
UPDATE t1 SET f_int1 = NULL
13200
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13201
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13203
# check null-3 success: 1
13205
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13206
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13208
# check null-4 success: 1
13210
WHERE f_int1 = 0 AND f_int2 = 0
13211
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13212
AND f_charbig = '#NULL#';
13213
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13214
SELECT f_int1, f_int1, '', '', 'was inserted'
13215
FROM t0_template source_tab
13216
WHERE MOD(f_int1,3) = 0
13217
AND f_int1 BETWEEN @max_row_div2 AND @max_row
13219
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
13220
f_int2 = 2 * @max_row + source_tab.f_int1,
13221
f_charbig = 'was updated';
13223
# check unique-1-a success: 1
13225
# check unique-1-b success: 1
13226
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13227
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13228
f_int2 = CAST(f_char1 AS SIGNED INT),
13229
f_charbig = CONCAT('===',f_char1,'===')
13230
WHERE f_charbig = 'was updated';
13231
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13232
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
13233
FROM t0_template source_tab
13234
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13236
# check replace success: 1
13238
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
13240
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
13241
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
13242
UPDATE t1 SET f_int2 = f_int1,
13243
f_char1 = CAST(f_int1 AS CHAR),
13244
f_char2 = CAST(f_int1 AS CHAR),
13245
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
13246
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
13248
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13249
SELECT f_int1, f_int1, '', '', 'was inserted'
13250
FROM t0_template source_tab
13251
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13253
# check transactions-1 success: 1
13256
# check transactions-2 success: 1
13259
# check transactions-3 success: 1
13260
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13264
# check transactions-4 success: 1
13265
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13266
SELECT f_int1, f_int1, '', '', 'was inserted'
13267
FROM t0_template source_tab
13268
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13270
# check transactions-5 success: 1
13273
Warning 1196 Some non-transactional changed tables couldn't be rolled back
13275
# check transactions-6 success: 1
13276
# INFO: Storage engine used for t1 seems to be not transactional.
13279
# check transactions-7 success: 1
13280
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13282
SET @@session.sql_mode = 'traditional';
13283
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13284
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13285
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13286
'', '', 'was inserted' FROM t0_template
13287
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13288
ERROR 22012: Division by 0
13291
# check transactions-8 success: 1
13292
# INFO: Storage engine used for t1 seems to be unable to revert
13293
# changes made by the failing statement.
13294
SET @@session.sql_mode = '';
13296
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13298
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13300
# check special-1 success: 1
13301
UPDATE t1 SET f_charbig = '';
13303
# check special-2 success: 1
13304
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13305
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13306
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13307
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13308
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13309
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13310
'just inserted' FROM t0_template
13311
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13312
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13314
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13315
f_charbig = 'updated by trigger'
13316
WHERE f_int1 = new.f_int1;
13318
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13319
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13320
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13322
# check trigger-1 success: 1
13323
DROP TRIGGER trg_1;
13324
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13325
f_int2 = CAST(f_char1 AS SIGNED INT),
13326
f_charbig = 'just inserted'
13327
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13329
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13330
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13331
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13332
'just inserted' FROM t0_template
13333
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13334
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13336
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13337
f_charbig = 'updated by trigger'
13338
WHERE f_int1 = new.f_int1;
13340
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13341
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13342
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13344
# check trigger-2 success: 1
13345
DROP TRIGGER trg_1;
13346
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13347
f_int2 = CAST(f_char1 AS SIGNED INT),
13348
f_charbig = 'just inserted'
13349
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13351
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13352
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13353
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13354
'just inserted' FROM t0_template
13355
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13356
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13358
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13359
f_charbig = 'updated by trigger'
13360
WHERE f_int1 = new.f_int1;
13362
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13363
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13365
# check trigger-3 success: 1
13366
DROP TRIGGER trg_1;
13367
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13368
f_int2 = CAST(f_char1 AS SIGNED INT),
13369
f_charbig = 'just inserted'
13370
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13372
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13373
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13374
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13375
'just inserted' FROM t0_template
13376
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13377
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13379
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13380
f_charbig = 'updated by trigger'
13381
WHERE f_int1 = - old.f_int1;
13383
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13384
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13386
# check trigger-4 success: 1
13387
DROP TRIGGER trg_1;
13388
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13389
f_int2 = CAST(f_char1 AS SIGNED INT),
13390
f_charbig = 'just inserted'
13391
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13393
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13394
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13395
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13396
'just inserted' FROM t0_template
13397
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13398
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13400
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13401
f_charbig = 'updated by trigger'
13402
WHERE f_int1 = new.f_int1;
13404
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13405
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13407
# check trigger-5 success: 1
13408
DROP TRIGGER trg_1;
13409
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13410
f_int2 = CAST(f_char1 AS SIGNED INT),
13411
f_charbig = 'just inserted'
13412
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13414
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13415
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13416
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13417
'just inserted' FROM t0_template
13418
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13419
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13421
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13422
f_charbig = 'updated by trigger'
13423
WHERE f_int1 = - old.f_int1;
13425
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13426
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13428
# check trigger-6 success: 1
13429
DROP TRIGGER trg_1;
13430
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13431
f_int2 = CAST(f_char1 AS SIGNED INT),
13432
f_charbig = 'just inserted'
13433
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13435
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13436
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13437
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13438
'just inserted' FROM t0_template
13439
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13440
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13442
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13443
f_charbig = 'updated by trigger'
13444
WHERE f_int1 = - old.f_int1;
13447
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13449
# check trigger-7 success: 1
13450
DROP TRIGGER trg_1;
13451
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13452
f_int2 = CAST(f_char1 AS SIGNED INT),
13453
f_charbig = 'just inserted'
13454
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13456
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13457
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13458
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13459
'just inserted' FROM t0_template
13460
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13461
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13463
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13464
f_charbig = 'updated by trigger'
13465
WHERE f_int1 = - old.f_int1;
13468
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13470
# check trigger-8 success: 1
13471
DROP TRIGGER trg_1;
13472
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13473
f_int2 = CAST(f_char1 AS SIGNED INT),
13474
f_charbig = 'just inserted'
13475
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13477
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13479
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13480
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13482
SET new.f_int1 = old.f_int1 + @max_row,
13483
new.f_int2 = old.f_int2 - @max_row,
13484
new.f_charbig = '####updated per update trigger####';
13487
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13488
f_charbig = '####updated per update statement itself####';
13490
# check trigger-9 success: 1
13491
DROP TRIGGER trg_2;
13492
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13493
f_int2 = CAST(f_char1 AS SIGNED INT),
13494
f_charbig = CONCAT('===',f_char1,'===');
13495
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13497
SET new.f_int1 = new.f_int1 + @max_row,
13498
new.f_int2 = new.f_int2 - @max_row,
13499
new.f_charbig = '####updated per update trigger####';
13502
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13503
f_charbig = '####updated per update statement itself####';
13505
# check trigger-10 success: 1
13506
DROP TRIGGER trg_2;
13507
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13508
f_int2 = CAST(f_char1 AS SIGNED INT),
13509
f_charbig = CONCAT('===',f_char1,'===');
13510
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13512
SET new.f_int1 = @my_max1 + @counter,
13513
new.f_int2 = @my_min2 - @counter,
13514
new.f_charbig = '####updated per insert trigger####';
13515
SET @counter = @counter + 1;
13518
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13519
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13520
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13521
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13522
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13524
DROP TRIGGER trg_3;
13526
# check trigger-11 success: 1
13528
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13529
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13530
AND f_charbig = '####updated per insert trigger####';
13531
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13533
SET new.f_int1 = @my_max1 + @counter,
13534
new.f_int2 = @my_min2 - @counter,
13535
new.f_charbig = '####updated per insert trigger####';
13536
SET @counter = @counter + 1;
13539
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13540
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13541
SELECT CAST(f_int1 AS CHAR),
13542
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13543
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13545
DROP TRIGGER trg_3;
13547
# check trigger-12 success: 1
13549
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13550
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13551
AND f_charbig = '####updated per insert trigger####';
13553
Table Op Msg_type Msg_text
13554
test.t1 analyze status OK
13555
CHECK TABLE t1 EXTENDED;
13556
Table Op Msg_type Msg_text
13557
test.t1 check status OK
13558
CHECKSUM TABLE t1 EXTENDED;
13560
test.t1 <some_value>
13562
Table Op Msg_type Msg_text
13563
test.t1 optimize status OK
13564
# check layout success: 1
13565
REPAIR TABLE t1 EXTENDED;
13566
Table Op Msg_type Msg_text
13567
test.t1 repair status OK
13568
# check layout success: 1
13571
# check TRUNCATE success: 1
13572
# check layout success: 1
13573
# End usability test (inc/partition_check.inc)
13580
f_charbig VARCHAR(1000)
13581
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
13583
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
13584
(PARTITION parta VALUES LESS THAN (0),
13585
PARTITION partb VALUES LESS THAN (5),
13586
PARTITION partc VALUES LESS THAN (10),
13587
PARTITION partd VALUES LESS THAN (10 + 5),
13588
PARTITION parte VALUES LESS THAN (20),
13589
PARTITION partf VALUES LESS THAN (2147483646));
13590
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13591
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
13592
# Start usability test (inc/partition_check.inc)
13594
SHOW CREATE TABLE t1;
13596
t1 CREATE TABLE `t1` (
13597
`f_int1` int(11) DEFAULT NULL,
13598
`f_int2` int(11) DEFAULT NULL,
13599
`f_char1` char(20) DEFAULT NULL,
13600
`f_char2` char(20) DEFAULT NULL,
13601
`f_charbig` varchar(1000) DEFAULT NULL,
13602
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
13603
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
13604
) ENGINE=MyISAM DEFAULT CHARSET=latin1
13605
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
13606
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
13607
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
13608
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
13609
PARTITION partd VALUES LESS THAN (15) ENGINE = MyISAM,
13610
PARTITION parte VALUES LESS THAN (20) ENGINE = MyISAM,
13611
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
13629
# check prerequisites-1 success: 1
13630
# check COUNT(*) success: 1
13631
# check MIN/MAX(f_int1) success: 1
13632
# check MIN/MAX(f_int2) success: 1
13633
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13634
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13635
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13636
WHERE f_int1 IN (2,3);
13637
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
13638
# check prerequisites-3 success: 1
13639
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
13640
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13641
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13642
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13643
WHERE f_int1 IN (2,3);
13644
DELETE FROM t1 WHERE f_charbig = 'delete me';
13645
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13646
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13647
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13648
WHERE f_int1 IN (2,3);
13649
DELETE FROM t1 WHERE f_charbig = 'delete me';
13650
# check read via f_int1 success: 1
13651
# check read via f_int2 success: 1
13653
# check multiple-1 success: 1
13654
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13656
# check multiple-2 success: 1
13657
INSERT INTO t1 SELECT * FROM t0_template
13658
WHERE MOD(f_int1,3) = 0;
13660
# check multiple-3 success: 1
13661
UPDATE t1 SET f_int1 = f_int1 + @max_row
13662
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13663
AND @max_row_div2 + @max_row_div4;
13665
# check multiple-4 success: 1
13667
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13668
AND @max_row_div2 + @max_row_div4 + @max_row;
13670
# check multiple-5 success: 1
13671
SELECT COUNT(*) INTO @try_count FROM t0_template
13672
WHERE MOD(f_int1,3) = 0
13673
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13674
SELECT COUNT(*) INTO @clash_count
13675
FROM t1 INNER JOIN t0_template USING(f_int1)
13676
WHERE MOD(f_int1,3) = 0
13677
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13678
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13680
SET f_int1 = @cur_value , f_int2 = @cur_value,
13681
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13682
f_charbig = '#SINGLE#';
13684
# check single-1 success: 1
13685
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13687
SET f_int1 = @cur_value , f_int2 = @cur_value,
13688
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13689
f_charbig = '#SINGLE#';
13691
# check single-2 success: 1
13692
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13693
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13694
UPDATE t1 SET f_int1 = @cur_value2
13695
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13697
# check single-3 success: 1
13698
SET @cur_value1= -1;
13699
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13700
UPDATE t1 SET f_int1 = @cur_value1
13701
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13703
# check single-4 success: 1
13704
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13705
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13707
# check single-5 success: 1
13708
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13710
# check single-6 success: 1
13711
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13712
ERROR HY000: Table has no partition for value 2147483647
13713
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13714
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13715
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13716
f_charbig = '#NULL#';
13718
SET f_int1 = NULL , f_int2 = -@max_row,
13719
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13720
f_charbig = '#NULL#';
13721
# check null success: 1
13723
# check null-1 success: 1
13724
UPDATE t1 SET f_int1 = -@max_row
13725
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13726
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13728
# check null-2 success: 1
13729
UPDATE t1 SET f_int1 = NULL
13730
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13731
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13733
# check null-3 success: 1
13735
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
13736
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
13738
# check null-4 success: 1
13740
WHERE f_int1 = 0 AND f_int2 = 0
13741
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13742
AND f_charbig = '#NULL#';
13743
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13744
SELECT f_int1, f_int1, '', '', 'was inserted'
13745
FROM t0_template source_tab
13746
WHERE MOD(f_int1,3) = 0
13747
AND f_int1 BETWEEN @max_row_div2 AND @max_row
13749
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
13750
f_int2 = 2 * @max_row + source_tab.f_int1,
13751
f_charbig = 'was updated';
13753
# check unique-1-a success: 1
13755
# check unique-1-b success: 1
13756
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13758
f_int2 = CAST(f_char1 AS SIGNED INT),
13759
f_charbig = CONCAT('===',f_char1,'===')
13760
WHERE f_charbig = 'was updated';
13761
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13762
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
13763
FROM t0_template source_tab
13764
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13766
# check replace success: 1
13768
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
13770
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
13771
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
13772
UPDATE t1 SET f_int2 = f_int1,
13773
f_char1 = CAST(f_int1 AS CHAR),
13774
f_char2 = CAST(f_int1 AS CHAR),
13775
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
13776
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
13778
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13779
SELECT f_int1, f_int1, '', '', 'was inserted'
13780
FROM t0_template source_tab
13781
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13783
# check transactions-1 success: 1
13786
# check transactions-2 success: 1
13789
# check transactions-3 success: 1
13790
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13794
# check transactions-4 success: 1
13795
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13796
SELECT f_int1, f_int1, '', '', 'was inserted'
13797
FROM t0_template source_tab
13798
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13800
# check transactions-5 success: 1
13803
Warning 1196 Some non-transactional changed tables couldn't be rolled back
13805
# check transactions-6 success: 1
13806
# INFO: Storage engine used for t1 seems to be not transactional.
13809
# check transactions-7 success: 1
13810
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13812
SET @@session.sql_mode = 'traditional';
13813
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13814
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13815
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13816
'', '', 'was inserted' FROM t0_template
13817
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13818
ERROR 22012: Division by 0
13821
# check transactions-8 success: 1
13822
# INFO: Storage engine used for t1 seems to be unable to revert
13823
# changes made by the failing statement.
13824
SET @@session.sql_mode = '';
13826
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13828
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13830
# check special-1 success: 1
13831
UPDATE t1 SET f_charbig = '';
13833
# check special-2 success: 1
13834
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13835
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13836
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13837
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13838
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13839
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13840
'just inserted' FROM t0_template
13841
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13842
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13844
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13845
f_charbig = 'updated by trigger'
13846
WHERE f_int1 = new.f_int1;
13848
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13849
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13850
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13852
# check trigger-1 success: 1
13853
DROP TRIGGER trg_1;
13854
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13855
f_int2 = CAST(f_char1 AS SIGNED INT),
13856
f_charbig = 'just inserted'
13857
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13859
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13860
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13861
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13862
'just inserted' FROM t0_template
13863
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13864
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13866
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13867
f_charbig = 'updated by trigger'
13868
WHERE f_int1 = new.f_int1;
13870
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13871
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13872
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13874
# check trigger-2 success: 1
13875
DROP TRIGGER trg_1;
13876
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13877
f_int2 = CAST(f_char1 AS SIGNED INT),
13878
f_charbig = 'just inserted'
13879
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13881
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13882
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13883
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13884
'just inserted' FROM t0_template
13885
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13886
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13888
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13889
f_charbig = 'updated by trigger'
13890
WHERE f_int1 = new.f_int1;
13892
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13893
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13895
# check trigger-3 success: 1
13896
DROP TRIGGER trg_1;
13897
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13898
f_int2 = CAST(f_char1 AS SIGNED INT),
13899
f_charbig = 'just inserted'
13900
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13902
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13903
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13904
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13905
'just inserted' FROM t0_template
13906
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13907
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13909
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13910
f_charbig = 'updated by trigger'
13911
WHERE f_int1 = - old.f_int1;
13913
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13914
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13916
# check trigger-4 success: 1
13917
DROP TRIGGER trg_1;
13918
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13919
f_int2 = CAST(f_char1 AS SIGNED INT),
13920
f_charbig = 'just inserted'
13921
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13923
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13924
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13925
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13926
'just inserted' FROM t0_template
13927
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13928
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13930
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13931
f_charbig = 'updated by trigger'
13932
WHERE f_int1 = new.f_int1;
13934
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13935
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13937
# check trigger-5 success: 1
13938
DROP TRIGGER trg_1;
13939
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13940
f_int2 = CAST(f_char1 AS SIGNED INT),
13941
f_charbig = 'just inserted'
13942
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13944
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13945
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13946
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13947
'just inserted' FROM t0_template
13948
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13949
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13951
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13952
f_charbig = 'updated by trigger'
13953
WHERE f_int1 = - old.f_int1;
13955
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13956
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13958
# check trigger-6 success: 1
13959
DROP TRIGGER trg_1;
13960
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13961
f_int2 = CAST(f_char1 AS SIGNED INT),
13962
f_charbig = 'just inserted'
13963
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13965
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13966
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13967
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13968
'just inserted' FROM t0_template
13969
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13970
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13972
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13973
f_charbig = 'updated by trigger'
13974
WHERE f_int1 = - old.f_int1;
13977
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13979
# check trigger-7 success: 1
13980
DROP TRIGGER trg_1;
13981
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13982
f_int2 = CAST(f_char1 AS SIGNED INT),
13983
f_charbig = 'just inserted'
13984
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13986
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13987
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13988
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13989
'just inserted' FROM t0_template
13990
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13991
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13993
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13994
f_charbig = 'updated by trigger'
13995
WHERE f_int1 = - old.f_int1;
13998
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14000
# check trigger-8 success: 1
14001
DROP TRIGGER trg_1;
14002
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14003
f_int2 = CAST(f_char1 AS SIGNED INT),
14004
f_charbig = 'just inserted'
14005
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14007
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14009
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14010
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14012
SET new.f_int1 = old.f_int1 + @max_row,
14013
new.f_int2 = old.f_int2 - @max_row,
14014
new.f_charbig = '####updated per update trigger####';
14017
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14018
f_charbig = '####updated per update statement itself####';
14020
# check trigger-9 success: 1
14021
DROP TRIGGER trg_2;
14022
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14023
f_int2 = CAST(f_char1 AS SIGNED INT),
14024
f_charbig = CONCAT('===',f_char1,'===');
14025
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14027
SET new.f_int1 = new.f_int1 + @max_row,
14028
new.f_int2 = new.f_int2 - @max_row,
14029
new.f_charbig = '####updated per update trigger####';
14032
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14033
f_charbig = '####updated per update statement itself####';
14035
# check trigger-10 success: 1
14036
DROP TRIGGER trg_2;
14037
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14038
f_int2 = CAST(f_char1 AS SIGNED INT),
14039
f_charbig = CONCAT('===',f_char1,'===');
14040
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14042
SET new.f_int1 = @my_max1 + @counter,
14043
new.f_int2 = @my_min2 - @counter,
14044
new.f_charbig = '####updated per insert trigger####';
14045
SET @counter = @counter + 1;
14048
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14049
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14050
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14051
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14052
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14054
DROP TRIGGER trg_3;
14056
# check trigger-11 success: 1
14058
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14059
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14060
AND f_charbig = '####updated per insert trigger####';
14061
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14063
SET new.f_int1 = @my_max1 + @counter,
14064
new.f_int2 = @my_min2 - @counter,
14065
new.f_charbig = '####updated per insert trigger####';
14066
SET @counter = @counter + 1;
14069
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14070
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14071
SELECT CAST(f_int1 AS CHAR),
14072
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14073
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14075
DROP TRIGGER trg_3;
14077
# check trigger-12 success: 1
14079
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14080
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14081
AND f_charbig = '####updated per insert trigger####';
14083
Table Op Msg_type Msg_text
14084
test.t1 analyze status OK
14085
CHECK TABLE t1 EXTENDED;
14086
Table Op Msg_type Msg_text
14087
test.t1 check status OK
14088
CHECKSUM TABLE t1 EXTENDED;
14090
test.t1 <some_value>
14092
Table Op Msg_type Msg_text
14093
test.t1 optimize status OK
14094
# check layout success: 1
14095
REPAIR TABLE t1 EXTENDED;
14096
Table Op Msg_type Msg_text
14097
test.t1 repair status OK
14098
# check layout success: 1
14101
# check TRUNCATE success: 1
14102
# check layout success: 1
14103
# End usability test (inc/partition_check.inc)
14110
f_charbig VARCHAR(1000)
14111
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
14113
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
14114
(PARTITION parta VALUES LESS THAN (0),
14115
PARTITION partb VALUES LESS THAN (5),
14116
PARTITION partc VALUES LESS THAN (10),
14117
PARTITION partd VALUES LESS THAN (2147483646));
14118
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14119
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
14120
# Start usability test (inc/partition_check.inc)
14122
SHOW CREATE TABLE t1;
14124
t1 CREATE TABLE `t1` (
14125
`f_int1` int(11) DEFAULT NULL,
14126
`f_int2` int(11) DEFAULT NULL,
14127
`f_char1` char(20) DEFAULT NULL,
14128
`f_char2` char(20) DEFAULT NULL,
14129
`f_charbig` varchar(1000) DEFAULT NULL,
14130
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
14131
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
14132
) ENGINE=MyISAM DEFAULT CHARSET=latin1
14133
/*!50100 PARTITION BY RANGE (f_int1)
14134
SUBPARTITION BY HASH (f_int2)
14136
(PARTITION parta VALUES LESS THAN (0) ENGINE = MyISAM,
14137
PARTITION partb VALUES LESS THAN (5) ENGINE = MyISAM,
14138
PARTITION partc VALUES LESS THAN (10) ENGINE = MyISAM,
14139
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = MyISAM) */
14142
t1#P#parta#SP#partasp0.MYD
14143
t1#P#parta#SP#partasp0.MYI
14144
t1#P#parta#SP#partasp1.MYD
14145
t1#P#parta#SP#partasp1.MYI
14146
t1#P#partb#SP#partbsp0.MYD
14147
t1#P#partb#SP#partbsp0.MYI
14148
t1#P#partb#SP#partbsp1.MYD
14149
t1#P#partb#SP#partbsp1.MYI
14150
t1#P#partc#SP#partcsp0.MYD
14151
t1#P#partc#SP#partcsp0.MYI
14152
t1#P#partc#SP#partcsp1.MYD
14153
t1#P#partc#SP#partcsp1.MYI
14154
t1#P#partd#SP#partdsp0.MYD
14155
t1#P#partd#SP#partdsp0.MYI
14156
t1#P#partd#SP#partdsp1.MYD
14157
t1#P#partd#SP#partdsp1.MYI
14161
# check prerequisites-1 success: 1
14162
# check COUNT(*) success: 1
14163
# check MIN/MAX(f_int1) success: 1
14164
# check MIN/MAX(f_int2) success: 1
14165
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14166
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14167
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14168
WHERE f_int1 IN (2,3);
14169
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
14170
# check prerequisites-3 success: 1
14171
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
14172
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14173
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14174
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14175
WHERE f_int1 IN (2,3);
14176
DELETE FROM t1 WHERE f_charbig = 'delete me';
14177
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14178
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14179
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14180
WHERE f_int1 IN (2,3);
14181
DELETE FROM t1 WHERE f_charbig = 'delete me';
14182
# check read via f_int1 success: 1
14183
# check read via f_int2 success: 1
14185
# check multiple-1 success: 1
14186
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14188
# check multiple-2 success: 1
14189
INSERT INTO t1 SELECT * FROM t0_template
14190
WHERE MOD(f_int1,3) = 0;
14192
# check multiple-3 success: 1
14193
UPDATE t1 SET f_int1 = f_int1 + @max_row
14194
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14195
AND @max_row_div2 + @max_row_div4;
14197
# check multiple-4 success: 1
14199
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14200
AND @max_row_div2 + @max_row_div4 + @max_row;
14202
# check multiple-5 success: 1
14203
SELECT COUNT(*) INTO @try_count FROM t0_template
14204
WHERE MOD(f_int1,3) = 0
14205
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14206
SELECT COUNT(*) INTO @clash_count
14207
FROM t1 INNER JOIN t0_template USING(f_int1)
14208
WHERE MOD(f_int1,3) = 0
14209
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14210
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14212
SET f_int1 = @cur_value , f_int2 = @cur_value,
14213
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14214
f_charbig = '#SINGLE#';
14216
# check single-1 success: 1
14217
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14219
SET f_int1 = @cur_value , f_int2 = @cur_value,
14220
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14221
f_charbig = '#SINGLE#';
14223
# check single-2 success: 1
14224
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14225
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14226
UPDATE t1 SET f_int1 = @cur_value2
14227
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14229
# check single-3 success: 1
14230
SET @cur_value1= -1;
14231
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14232
UPDATE t1 SET f_int1 = @cur_value1
14233
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14235
# check single-4 success: 1
14236
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14237
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14239
# check single-5 success: 1
14240
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14242
# check single-6 success: 1
14243
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14244
ERROR HY000: Table has no partition for value 2147483647
14245
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14246
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14247
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14248
f_charbig = '#NULL#';
14250
SET f_int1 = NULL , f_int2 = -@max_row,
14251
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14252
f_charbig = '#NULL#';
14253
# check null success: 1
14255
# check null-1 success: 1
14256
UPDATE t1 SET f_int1 = -@max_row
14257
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14258
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14260
# check null-2 success: 1
14261
UPDATE t1 SET f_int1 = NULL
14262
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14263
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14265
# check null-3 success: 1
14267
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14268
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14270
# check null-4 success: 1
14272
WHERE f_int1 = 0 AND f_int2 = 0
14273
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14274
AND f_charbig = '#NULL#';
14275
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14276
SELECT f_int1, f_int1, '', '', 'was inserted'
14277
FROM t0_template source_tab
14278
WHERE MOD(f_int1,3) = 0
14279
AND f_int1 BETWEEN @max_row_div2 AND @max_row
14281
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
14282
f_int2 = 2 * @max_row + source_tab.f_int1,
14283
f_charbig = 'was updated';
14285
# check unique-1-a success: 1
14287
# check unique-1-b success: 1
14288
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14289
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14290
f_int2 = CAST(f_char1 AS SIGNED INT),
14291
f_charbig = CONCAT('===',f_char1,'===')
14292
WHERE f_charbig = 'was updated';
14293
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14294
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
14295
FROM t0_template source_tab
14296
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14298
# check replace success: 1
14300
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
14302
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
14303
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
14304
UPDATE t1 SET f_int2 = f_int1,
14305
f_char1 = CAST(f_int1 AS CHAR),
14306
f_char2 = CAST(f_int1 AS CHAR),
14307
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
14308
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
14310
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14311
SELECT f_int1, f_int1, '', '', 'was inserted'
14312
FROM t0_template source_tab
14313
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14315
# check transactions-1 success: 1
14318
# check transactions-2 success: 1
14321
# check transactions-3 success: 1
14322
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14326
# check transactions-4 success: 1
14327
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14328
SELECT f_int1, f_int1, '', '', 'was inserted'
14329
FROM t0_template source_tab
14330
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14332
# check transactions-5 success: 1
14335
Warning 1196 Some non-transactional changed tables couldn't be rolled back
14337
# check transactions-6 success: 1
14338
# INFO: Storage engine used for t1 seems to be not transactional.
14341
# check transactions-7 success: 1
14342
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14344
SET @@session.sql_mode = 'traditional';
14345
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14346
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14347
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14348
'', '', 'was inserted' FROM t0_template
14349
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14350
ERROR 22012: Division by 0
14353
# check transactions-8 success: 1
14354
# INFO: Storage engine used for t1 seems to be unable to revert
14355
# changes made by the failing statement.
14356
SET @@session.sql_mode = '';
14358
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14360
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14362
# check special-1 success: 1
14363
UPDATE t1 SET f_charbig = '';
14365
# check special-2 success: 1
14366
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14367
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14368
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14369
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14370
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14371
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14372
'just inserted' FROM t0_template
14373
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14374
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14376
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14377
f_charbig = 'updated by trigger'
14378
WHERE f_int1 = new.f_int1;
14380
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14381
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14382
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14384
# check trigger-1 success: 1
14385
DROP TRIGGER trg_1;
14386
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14387
f_int2 = CAST(f_char1 AS SIGNED INT),
14388
f_charbig = 'just inserted'
14389
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14391
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14392
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14393
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14394
'just inserted' FROM t0_template
14395
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14396
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14398
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14399
f_charbig = 'updated by trigger'
14400
WHERE f_int1 = new.f_int1;
14402
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14403
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14404
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14406
# check trigger-2 success: 1
14407
DROP TRIGGER trg_1;
14408
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14409
f_int2 = CAST(f_char1 AS SIGNED INT),
14410
f_charbig = 'just inserted'
14411
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14413
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14414
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14415
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14416
'just inserted' FROM t0_template
14417
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14418
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14420
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14421
f_charbig = 'updated by trigger'
14422
WHERE f_int1 = new.f_int1;
14424
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14425
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14427
# check trigger-3 success: 1
14428
DROP TRIGGER trg_1;
14429
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14430
f_int2 = CAST(f_char1 AS SIGNED INT),
14431
f_charbig = 'just inserted'
14432
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14434
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14435
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14436
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14437
'just inserted' FROM t0_template
14438
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14439
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14441
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14442
f_charbig = 'updated by trigger'
14443
WHERE f_int1 = - old.f_int1;
14445
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14446
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14448
# check trigger-4 success: 1
14449
DROP TRIGGER trg_1;
14450
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14451
f_int2 = CAST(f_char1 AS SIGNED INT),
14452
f_charbig = 'just inserted'
14453
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14455
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14456
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14457
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14458
'just inserted' FROM t0_template
14459
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14460
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14462
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14463
f_charbig = 'updated by trigger'
14464
WHERE f_int1 = new.f_int1;
14466
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14467
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14469
# check trigger-5 success: 1
14470
DROP TRIGGER trg_1;
14471
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14472
f_int2 = CAST(f_char1 AS SIGNED INT),
14473
f_charbig = 'just inserted'
14474
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14476
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14477
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14478
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14479
'just inserted' FROM t0_template
14480
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14481
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14483
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14484
f_charbig = 'updated by trigger'
14485
WHERE f_int1 = - old.f_int1;
14487
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14488
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14490
# check trigger-6 success: 1
14491
DROP TRIGGER trg_1;
14492
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14493
f_int2 = CAST(f_char1 AS SIGNED INT),
14494
f_charbig = 'just inserted'
14495
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14497
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14498
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14499
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14500
'just inserted' FROM t0_template
14501
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14502
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14504
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14505
f_charbig = 'updated by trigger'
14506
WHERE f_int1 = - old.f_int1;
14509
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14511
# check trigger-7 success: 1
14512
DROP TRIGGER trg_1;
14513
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14514
f_int2 = CAST(f_char1 AS SIGNED INT),
14515
f_charbig = 'just inserted'
14516
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14518
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14519
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14520
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14521
'just inserted' FROM t0_template
14522
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14523
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14525
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14526
f_charbig = 'updated by trigger'
14527
WHERE f_int1 = - old.f_int1;
14530
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14532
# check trigger-8 success: 1
14533
DROP TRIGGER trg_1;
14534
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14535
f_int2 = CAST(f_char1 AS SIGNED INT),
14536
f_charbig = 'just inserted'
14537
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14539
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14541
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14542
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14544
SET new.f_int1 = old.f_int1 + @max_row,
14545
new.f_int2 = old.f_int2 - @max_row,
14546
new.f_charbig = '####updated per update trigger####';
14549
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14550
f_charbig = '####updated per update statement itself####';
14552
# check trigger-9 success: 1
14553
DROP TRIGGER trg_2;
14554
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14555
f_int2 = CAST(f_char1 AS SIGNED INT),
14556
f_charbig = CONCAT('===',f_char1,'===');
14557
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14559
SET new.f_int1 = new.f_int1 + @max_row,
14560
new.f_int2 = new.f_int2 - @max_row,
14561
new.f_charbig = '####updated per update trigger####';
14564
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14565
f_charbig = '####updated per update statement itself####';
14567
# check trigger-10 success: 1
14568
DROP TRIGGER trg_2;
14569
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14570
f_int2 = CAST(f_char1 AS SIGNED INT),
14571
f_charbig = CONCAT('===',f_char1,'===');
14572
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14574
SET new.f_int1 = @my_max1 + @counter,
14575
new.f_int2 = @my_min2 - @counter,
14576
new.f_charbig = '####updated per insert trigger####';
14577
SET @counter = @counter + 1;
14580
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14581
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14582
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14583
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14584
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14586
DROP TRIGGER trg_3;
14588
# check trigger-11 success: 1
14590
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14591
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14592
AND f_charbig = '####updated per insert trigger####';
14593
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14595
SET new.f_int1 = @my_max1 + @counter,
14596
new.f_int2 = @my_min2 - @counter,
14597
new.f_charbig = '####updated per insert trigger####';
14598
SET @counter = @counter + 1;
14601
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14602
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14603
SELECT CAST(f_int1 AS CHAR),
14604
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14605
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14607
DROP TRIGGER trg_3;
14609
# check trigger-12 success: 1
14611
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14612
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14613
AND f_charbig = '####updated per insert trigger####';
14615
Table Op Msg_type Msg_text
14616
test.t1 analyze status OK
14617
CHECK TABLE t1 EXTENDED;
14618
Table Op Msg_type Msg_text
14619
test.t1 check status OK
14620
CHECKSUM TABLE t1 EXTENDED;
14622
test.t1 <some_value>
14624
Table Op Msg_type Msg_text
14625
test.t1 optimize status OK
14626
# check layout success: 1
14627
REPAIR TABLE t1 EXTENDED;
14628
Table Op Msg_type Msg_text
14629
test.t1 repair status OK
14630
# check layout success: 1
14633
# check TRUNCATE success: 1
14634
# check layout success: 1
14635
# End usability test (inc/partition_check.inc)
14642
f_charbig VARCHAR(1000)
14643
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
14645
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
14646
(PARTITION part1 VALUES LESS THAN (0)
14647
(SUBPARTITION subpart11, SUBPARTITION subpart12),
14648
PARTITION part2 VALUES LESS THAN (5)
14649
(SUBPARTITION subpart21, SUBPARTITION subpart22),
14650
PARTITION part3 VALUES LESS THAN (10)
14651
(SUBPARTITION subpart31, SUBPARTITION subpart32),
14652
PARTITION part4 VALUES LESS THAN (2147483646)
14653
(SUBPARTITION subpart41, SUBPARTITION subpart42));
14654
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14655
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
14656
# Start usability test (inc/partition_check.inc)
14658
SHOW CREATE TABLE t1;
14660
t1 CREATE TABLE `t1` (
14661
`f_int1` int(11) DEFAULT NULL,
14662
`f_int2` int(11) DEFAULT NULL,
14663
`f_char1` char(20) DEFAULT NULL,
14664
`f_char2` char(20) DEFAULT NULL,
14665
`f_charbig` varchar(1000) DEFAULT NULL,
14666
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
14667
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
14668
) ENGINE=MyISAM DEFAULT CHARSET=latin1
14669
/*!50100 PARTITION BY RANGE (f_int1)
14670
SUBPARTITION BY KEY (f_int2)
14671
(PARTITION part1 VALUES LESS THAN (0)
14672
(SUBPARTITION subpart11 ENGINE = MyISAM,
14673
SUBPARTITION subpart12 ENGINE = MyISAM),
14674
PARTITION part2 VALUES LESS THAN (5)
14675
(SUBPARTITION subpart21 ENGINE = MyISAM,
14676
SUBPARTITION subpart22 ENGINE = MyISAM),
14677
PARTITION part3 VALUES LESS THAN (10)
14678
(SUBPARTITION subpart31 ENGINE = MyISAM,
14679
SUBPARTITION subpart32 ENGINE = MyISAM),
14680
PARTITION part4 VALUES LESS THAN (2147483646)
14681
(SUBPARTITION subpart41 ENGINE = MyISAM,
14682
SUBPARTITION subpart42 ENGINE = MyISAM)) */
14685
t1#P#part1#SP#subpart11.MYD
14686
t1#P#part1#SP#subpart11.MYI
14687
t1#P#part1#SP#subpart12.MYD
14688
t1#P#part1#SP#subpart12.MYI
14689
t1#P#part2#SP#subpart21.MYD
14690
t1#P#part2#SP#subpart21.MYI
14691
t1#P#part2#SP#subpart22.MYD
14692
t1#P#part2#SP#subpart22.MYI
14693
t1#P#part3#SP#subpart31.MYD
14694
t1#P#part3#SP#subpart31.MYI
14695
t1#P#part3#SP#subpart32.MYD
14696
t1#P#part3#SP#subpart32.MYI
14697
t1#P#part4#SP#subpart41.MYD
14698
t1#P#part4#SP#subpart41.MYI
14699
t1#P#part4#SP#subpart42.MYD
14700
t1#P#part4#SP#subpart42.MYI
14704
# check prerequisites-1 success: 1
14705
# check COUNT(*) success: 1
14706
# check MIN/MAX(f_int1) success: 1
14707
# check MIN/MAX(f_int2) success: 1
14708
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14709
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14710
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14711
WHERE f_int1 IN (2,3);
14712
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
14713
# check prerequisites-3 success: 1
14714
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
14715
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14716
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14717
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14718
WHERE f_int1 IN (2,3);
14719
DELETE FROM t1 WHERE f_charbig = 'delete me';
14720
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14721
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14722
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14723
WHERE f_int1 IN (2,3);
14724
DELETE FROM t1 WHERE f_charbig = 'delete me';
14725
# check read via f_int1 success: 1
14726
# check read via f_int2 success: 1
14728
# check multiple-1 success: 1
14729
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14731
# check multiple-2 success: 1
14732
INSERT INTO t1 SELECT * FROM t0_template
14733
WHERE MOD(f_int1,3) = 0;
14735
# check multiple-3 success: 1
14736
UPDATE t1 SET f_int1 = f_int1 + @max_row
14737
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14738
AND @max_row_div2 + @max_row_div4;
14740
# check multiple-4 success: 1
14742
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14743
AND @max_row_div2 + @max_row_div4 + @max_row;
14745
# check multiple-5 success: 1
14746
SELECT COUNT(*) INTO @try_count FROM t0_template
14747
WHERE MOD(f_int1,3) = 0
14748
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14749
SELECT COUNT(*) INTO @clash_count
14750
FROM t1 INNER JOIN t0_template USING(f_int1)
14751
WHERE MOD(f_int1,3) = 0
14752
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14753
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14755
SET f_int1 = @cur_value , f_int2 = @cur_value,
14756
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14757
f_charbig = '#SINGLE#';
14759
# check single-1 success: 1
14760
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14762
SET f_int1 = @cur_value , f_int2 = @cur_value,
14763
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14764
f_charbig = '#SINGLE#';
14766
# check single-2 success: 1
14767
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14768
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14769
UPDATE t1 SET f_int1 = @cur_value2
14770
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14772
# check single-3 success: 1
14773
SET @cur_value1= -1;
14774
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14775
UPDATE t1 SET f_int1 = @cur_value1
14776
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14778
# check single-4 success: 1
14779
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14780
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14782
# check single-5 success: 1
14783
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14785
# check single-6 success: 1
14786
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14787
ERROR HY000: Table has no partition for value 2147483647
14788
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14789
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14790
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14791
f_charbig = '#NULL#';
14793
SET f_int1 = NULL , f_int2 = -@max_row,
14794
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14795
f_charbig = '#NULL#';
14796
# check null success: 1
14798
# check null-1 success: 1
14799
UPDATE t1 SET f_int1 = -@max_row
14800
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14801
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14803
# check null-2 success: 1
14804
UPDATE t1 SET f_int1 = NULL
14805
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14806
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14808
# check null-3 success: 1
14810
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
14811
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
14813
# check null-4 success: 1
14815
WHERE f_int1 = 0 AND f_int2 = 0
14816
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14817
AND f_charbig = '#NULL#';
14818
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14819
SELECT f_int1, f_int1, '', '', 'was inserted'
14820
FROM t0_template source_tab
14821
WHERE MOD(f_int1,3) = 0
14822
AND f_int1 BETWEEN @max_row_div2 AND @max_row
14824
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
14825
f_int2 = 2 * @max_row + source_tab.f_int1,
14826
f_charbig = 'was updated';
14828
# check unique-1-a success: 1
14830
# check unique-1-b success: 1
14831
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14832
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14833
f_int2 = CAST(f_char1 AS SIGNED INT),
14834
f_charbig = CONCAT('===',f_char1,'===')
14835
WHERE f_charbig = 'was updated';
14836
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14837
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
14838
FROM t0_template source_tab
14839
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14841
# check replace success: 1
14843
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
14845
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
14846
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
14847
UPDATE t1 SET f_int2 = f_int1,
14848
f_char1 = CAST(f_int1 AS CHAR),
14849
f_char2 = CAST(f_int1 AS CHAR),
14850
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
14851
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
14853
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14854
SELECT f_int1, f_int1, '', '', 'was inserted'
14855
FROM t0_template source_tab
14856
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14858
# check transactions-1 success: 1
14861
# check transactions-2 success: 1
14864
# check transactions-3 success: 1
14865
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14869
# check transactions-4 success: 1
14870
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14871
SELECT f_int1, f_int1, '', '', 'was inserted'
14872
FROM t0_template source_tab
14873
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14875
# check transactions-5 success: 1
14878
Warning 1196 Some non-transactional changed tables couldn't be rolled back
14880
# check transactions-6 success: 1
14881
# INFO: Storage engine used for t1 seems to be not transactional.
14884
# check transactions-7 success: 1
14885
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14887
SET @@session.sql_mode = 'traditional';
14888
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14889
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14890
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14891
'', '', 'was inserted' FROM t0_template
14892
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14893
ERROR 22012: Division by 0
14896
# check transactions-8 success: 1
14897
# INFO: Storage engine used for t1 seems to be unable to revert
14898
# changes made by the failing statement.
14899
SET @@session.sql_mode = '';
14901
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14903
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14905
# check special-1 success: 1
14906
UPDATE t1 SET f_charbig = '';
14908
# check special-2 success: 1
14909
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14910
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14911
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14912
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14913
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14914
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14915
'just inserted' FROM t0_template
14916
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14917
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14919
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14920
f_charbig = 'updated by trigger'
14921
WHERE f_int1 = new.f_int1;
14923
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14924
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14925
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14927
# check trigger-1 success: 1
14928
DROP TRIGGER trg_1;
14929
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14930
f_int2 = CAST(f_char1 AS SIGNED INT),
14931
f_charbig = 'just inserted'
14932
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14934
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14935
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14936
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14937
'just inserted' FROM t0_template
14938
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14939
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14941
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14942
f_charbig = 'updated by trigger'
14943
WHERE f_int1 = new.f_int1;
14945
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14946
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14947
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14949
# check trigger-2 success: 1
14950
DROP TRIGGER trg_1;
14951
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14952
f_int2 = CAST(f_char1 AS SIGNED INT),
14953
f_charbig = 'just inserted'
14954
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14956
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14957
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14958
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14959
'just inserted' FROM t0_template
14960
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14961
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14963
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14964
f_charbig = 'updated by trigger'
14965
WHERE f_int1 = new.f_int1;
14967
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14968
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14970
# check trigger-3 success: 1
14971
DROP TRIGGER trg_1;
14972
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14973
f_int2 = CAST(f_char1 AS SIGNED INT),
14974
f_charbig = 'just inserted'
14975
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14977
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14978
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14979
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14980
'just inserted' FROM t0_template
14981
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14982
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14984
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14985
f_charbig = 'updated by trigger'
14986
WHERE f_int1 = - old.f_int1;
14988
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14989
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14991
# check trigger-4 success: 1
14992
DROP TRIGGER trg_1;
14993
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14994
f_int2 = CAST(f_char1 AS SIGNED INT),
14995
f_charbig = 'just inserted'
14996
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14998
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14999
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15000
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15001
'just inserted' FROM t0_template
15002
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15003
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15005
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15006
f_charbig = 'updated by trigger'
15007
WHERE f_int1 = new.f_int1;
15009
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15010
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15012
# check trigger-5 success: 1
15013
DROP TRIGGER trg_1;
15014
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15015
f_int2 = CAST(f_char1 AS SIGNED INT),
15016
f_charbig = 'just inserted'
15017
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15019
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15020
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15021
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15022
'just inserted' FROM t0_template
15023
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15024
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15026
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15027
f_charbig = 'updated by trigger'
15028
WHERE f_int1 = - old.f_int1;
15030
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15031
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15033
# check trigger-6 success: 1
15034
DROP TRIGGER trg_1;
15035
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15036
f_int2 = CAST(f_char1 AS SIGNED INT),
15037
f_charbig = 'just inserted'
15038
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15040
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15041
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15042
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15043
'just inserted' FROM t0_template
15044
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15045
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15047
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15048
f_charbig = 'updated by trigger'
15049
WHERE f_int1 = - old.f_int1;
15052
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15054
# check trigger-7 success: 1
15055
DROP TRIGGER trg_1;
15056
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15057
f_int2 = CAST(f_char1 AS SIGNED INT),
15058
f_charbig = 'just inserted'
15059
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15061
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15062
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15063
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15064
'just inserted' FROM t0_template
15065
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15066
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15068
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15069
f_charbig = 'updated by trigger'
15070
WHERE f_int1 = - old.f_int1;
15073
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15075
# check trigger-8 success: 1
15076
DROP TRIGGER trg_1;
15077
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15078
f_int2 = CAST(f_char1 AS SIGNED INT),
15079
f_charbig = 'just inserted'
15080
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15082
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15084
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15085
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15087
SET new.f_int1 = old.f_int1 + @max_row,
15088
new.f_int2 = old.f_int2 - @max_row,
15089
new.f_charbig = '####updated per update trigger####';
15092
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15093
f_charbig = '####updated per update statement itself####';
15095
# check trigger-9 success: 1
15096
DROP TRIGGER trg_2;
15097
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15098
f_int2 = CAST(f_char1 AS SIGNED INT),
15099
f_charbig = CONCAT('===',f_char1,'===');
15100
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15102
SET new.f_int1 = new.f_int1 + @max_row,
15103
new.f_int2 = new.f_int2 - @max_row,
15104
new.f_charbig = '####updated per update trigger####';
15107
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15108
f_charbig = '####updated per update statement itself####';
15110
# check trigger-10 success: 1
15111
DROP TRIGGER trg_2;
15112
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15113
f_int2 = CAST(f_char1 AS SIGNED INT),
15114
f_charbig = CONCAT('===',f_char1,'===');
15115
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15117
SET new.f_int1 = @my_max1 + @counter,
15118
new.f_int2 = @my_min2 - @counter,
15119
new.f_charbig = '####updated per insert trigger####';
15120
SET @counter = @counter + 1;
15123
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15124
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15125
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15126
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15127
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15129
DROP TRIGGER trg_3;
15131
# check trigger-11 success: 1
15133
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15134
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15135
AND f_charbig = '####updated per insert trigger####';
15136
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15138
SET new.f_int1 = @my_max1 + @counter,
15139
new.f_int2 = @my_min2 - @counter,
15140
new.f_charbig = '####updated per insert trigger####';
15141
SET @counter = @counter + 1;
15144
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15145
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15146
SELECT CAST(f_int1 AS CHAR),
15147
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15148
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15150
DROP TRIGGER trg_3;
15152
# check trigger-12 success: 1
15154
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15155
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15156
AND f_charbig = '####updated per insert trigger####';
15158
Table Op Msg_type Msg_text
15159
test.t1 analyze status OK
15160
CHECK TABLE t1 EXTENDED;
15161
Table Op Msg_type Msg_text
15162
test.t1 check status OK
15163
CHECKSUM TABLE t1 EXTENDED;
15165
test.t1 <some_value>
15167
Table Op Msg_type Msg_text
15168
test.t1 optimize status OK
15169
# check layout success: 1
15170
REPAIR TABLE t1 EXTENDED;
15171
Table Op Msg_type Msg_text
15172
test.t1 repair status OK
15173
# check layout success: 1
15176
# check TRUNCATE success: 1
15177
# check layout success: 1
15178
# End usability test (inc/partition_check.inc)
15185
f_charbig VARCHAR(1000)
15186
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
15188
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
15189
(PARTITION part1 VALUES IN (0)
15190
(SUBPARTITION sp11, SUBPARTITION sp12),
15191
PARTITION part2 VALUES IN (1)
15192
(SUBPARTITION sp21, SUBPARTITION sp22),
15193
PARTITION part3 VALUES IN (2)
15194
(SUBPARTITION sp31, SUBPARTITION sp32),
15195
PARTITION part4 VALUES IN (NULL)
15196
(SUBPARTITION sp41, SUBPARTITION sp42));
15197
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15198
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
15199
# Start usability test (inc/partition_check.inc)
15201
SHOW CREATE TABLE t1;
15203
t1 CREATE TABLE `t1` (
15204
`f_int1` int(11) DEFAULT NULL,
15205
`f_int2` int(11) DEFAULT NULL,
15206
`f_char1` char(20) DEFAULT NULL,
15207
`f_char2` char(20) DEFAULT NULL,
15208
`f_charbig` varchar(1000) DEFAULT NULL,
15209
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
15210
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
15211
) ENGINE=MyISAM DEFAULT CHARSET=latin1
15212
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
15213
SUBPARTITION BY HASH (f_int2 + 1)
15214
(PARTITION part1 VALUES IN (0)
15215
(SUBPARTITION sp11 ENGINE = MyISAM,
15216
SUBPARTITION sp12 ENGINE = MyISAM),
15217
PARTITION part2 VALUES IN (1)
15218
(SUBPARTITION sp21 ENGINE = MyISAM,
15219
SUBPARTITION sp22 ENGINE = MyISAM),
15220
PARTITION part3 VALUES IN (2)
15221
(SUBPARTITION sp31 ENGINE = MyISAM,
15222
SUBPARTITION sp32 ENGINE = MyISAM),
15223
PARTITION part4 VALUES IN (NULL)
15224
(SUBPARTITION sp41 ENGINE = MyISAM,
15225
SUBPARTITION sp42 ENGINE = MyISAM)) */
15228
t1#P#part1#SP#sp11.MYD
15229
t1#P#part1#SP#sp11.MYI
15230
t1#P#part1#SP#sp12.MYD
15231
t1#P#part1#SP#sp12.MYI
15232
t1#P#part2#SP#sp21.MYD
15233
t1#P#part2#SP#sp21.MYI
15234
t1#P#part2#SP#sp22.MYD
15235
t1#P#part2#SP#sp22.MYI
15236
t1#P#part3#SP#sp31.MYD
15237
t1#P#part3#SP#sp31.MYI
15238
t1#P#part3#SP#sp32.MYD
15239
t1#P#part3#SP#sp32.MYI
15240
t1#P#part4#SP#sp41.MYD
15241
t1#P#part4#SP#sp41.MYI
15242
t1#P#part4#SP#sp42.MYD
15243
t1#P#part4#SP#sp42.MYI
15247
# check prerequisites-1 success: 1
15248
# check COUNT(*) success: 1
15249
# check MIN/MAX(f_int1) success: 1
15250
# check MIN/MAX(f_int2) success: 1
15251
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15252
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15253
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15254
WHERE f_int1 IN (2,3);
15255
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
15256
# check prerequisites-3 success: 1
15257
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
15258
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15259
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15260
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15261
WHERE f_int1 IN (2,3);
15262
DELETE FROM t1 WHERE f_charbig = 'delete me';
15263
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15264
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15265
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15266
WHERE f_int1 IN (2,3);
15267
DELETE FROM t1 WHERE f_charbig = 'delete me';
15268
# check read via f_int1 success: 1
15269
# check read via f_int2 success: 1
15271
# check multiple-1 success: 1
15272
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15274
# check multiple-2 success: 1
15275
INSERT INTO t1 SELECT * FROM t0_template
15276
WHERE MOD(f_int1,3) = 0;
15278
# check multiple-3 success: 1
15279
UPDATE t1 SET f_int1 = f_int1 + @max_row
15280
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15281
AND @max_row_div2 + @max_row_div4;
15283
# check multiple-4 success: 1
15285
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15286
AND @max_row_div2 + @max_row_div4 + @max_row;
15288
# check multiple-5 success: 1
15289
SELECT COUNT(*) INTO @try_count FROM t0_template
15290
WHERE MOD(f_int1,3) = 0
15291
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15292
SELECT COUNT(*) INTO @clash_count
15293
FROM t1 INNER JOIN t0_template USING(f_int1)
15294
WHERE MOD(f_int1,3) = 0
15295
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15296
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15298
SET f_int1 = @cur_value , f_int2 = @cur_value,
15299
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15300
f_charbig = '#SINGLE#';
15302
# check single-1 success: 1
15303
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15305
SET f_int1 = @cur_value , f_int2 = @cur_value,
15306
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15307
f_charbig = '#SINGLE#';
15309
# check single-2 success: 1
15310
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15311
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15312
UPDATE t1 SET f_int1 = @cur_value2
15313
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15315
# check single-3 success: 1
15316
SET @cur_value1= -1;
15317
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15318
UPDATE t1 SET f_int1 = @cur_value1
15319
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15321
# check single-4 success: 1
15322
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15323
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15325
# check single-5 success: 1
15326
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15328
# check single-6 success: 1
15329
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15331
# check single-7 success: 1
15332
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15333
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15334
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15335
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15336
f_charbig = '#NULL#';
15338
SET f_int1 = NULL , f_int2 = -@max_row,
15339
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15340
f_charbig = '#NULL#';
15341
# check null success: 1
15343
# check null-1 success: 1
15344
UPDATE t1 SET f_int1 = -@max_row
15345
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15346
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15348
# check null-2 success: 1
15349
UPDATE t1 SET f_int1 = NULL
15350
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15351
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15353
# check null-3 success: 1
15355
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15356
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15358
# check null-4 success: 1
15360
WHERE f_int1 = 0 AND f_int2 = 0
15361
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15362
AND f_charbig = '#NULL#';
15363
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15364
SELECT f_int1, f_int1, '', '', 'was inserted'
15365
FROM t0_template source_tab
15366
WHERE MOD(f_int1,3) = 0
15367
AND f_int1 BETWEEN @max_row_div2 AND @max_row
15369
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
15370
f_int2 = 2 * @max_row + source_tab.f_int1,
15371
f_charbig = 'was updated';
15373
# check unique-1-a success: 1
15375
# check unique-1-b success: 1
15376
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15377
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15378
f_int2 = CAST(f_char1 AS SIGNED INT),
15379
f_charbig = CONCAT('===',f_char1,'===')
15380
WHERE f_charbig = 'was updated';
15381
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15382
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
15383
FROM t0_template source_tab
15384
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15386
# check replace success: 1
15388
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
15390
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
15391
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
15392
UPDATE t1 SET f_int2 = f_int1,
15393
f_char1 = CAST(f_int1 AS CHAR),
15394
f_char2 = CAST(f_int1 AS CHAR),
15395
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
15396
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
15398
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15399
SELECT f_int1, f_int1, '', '', 'was inserted'
15400
FROM t0_template source_tab
15401
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15403
# check transactions-1 success: 1
15406
# check transactions-2 success: 1
15409
# check transactions-3 success: 1
15410
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15414
# check transactions-4 success: 1
15415
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15416
SELECT f_int1, f_int1, '', '', 'was inserted'
15417
FROM t0_template source_tab
15418
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15420
# check transactions-5 success: 1
15423
Warning 1196 Some non-transactional changed tables couldn't be rolled back
15425
# check transactions-6 success: 1
15426
# INFO: Storage engine used for t1 seems to be not transactional.
15429
# check transactions-7 success: 1
15430
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15432
SET @@session.sql_mode = 'traditional';
15433
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15434
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15435
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15436
'', '', 'was inserted' FROM t0_template
15437
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15438
ERROR 22012: Division by 0
15441
# check transactions-8 success: 1
15442
# INFO: Storage engine used for t1 seems to be unable to revert
15443
# changes made by the failing statement.
15444
SET @@session.sql_mode = '';
15446
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15448
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15450
# check special-1 success: 1
15451
UPDATE t1 SET f_charbig = '';
15453
# check special-2 success: 1
15454
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15455
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15456
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15457
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15458
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15459
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15460
'just inserted' FROM t0_template
15461
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15462
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15464
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15465
f_charbig = 'updated by trigger'
15466
WHERE f_int1 = new.f_int1;
15468
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15469
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15472
# check trigger-1 success: 1
15473
DROP TRIGGER trg_1;
15474
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15475
f_int2 = CAST(f_char1 AS SIGNED INT),
15476
f_charbig = 'just inserted'
15477
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15479
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15480
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15481
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15482
'just inserted' FROM t0_template
15483
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15484
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15486
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15487
f_charbig = 'updated by trigger'
15488
WHERE f_int1 = new.f_int1;
15490
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15491
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15492
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15494
# check trigger-2 success: 1
15495
DROP TRIGGER trg_1;
15496
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15497
f_int2 = CAST(f_char1 AS SIGNED INT),
15498
f_charbig = 'just inserted'
15499
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15501
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15502
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15503
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15504
'just inserted' FROM t0_template
15505
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15506
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15508
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15509
f_charbig = 'updated by trigger'
15510
WHERE f_int1 = new.f_int1;
15512
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15513
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15515
# check trigger-3 success: 1
15516
DROP TRIGGER trg_1;
15517
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15518
f_int2 = CAST(f_char1 AS SIGNED INT),
15519
f_charbig = 'just inserted'
15520
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15522
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15523
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15524
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15525
'just inserted' FROM t0_template
15526
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15527
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15529
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15530
f_charbig = 'updated by trigger'
15531
WHERE f_int1 = - old.f_int1;
15533
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15534
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15536
# check trigger-4 success: 1
15537
DROP TRIGGER trg_1;
15538
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15539
f_int2 = CAST(f_char1 AS SIGNED INT),
15540
f_charbig = 'just inserted'
15541
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15543
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15544
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15545
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15546
'just inserted' FROM t0_template
15547
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15548
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15550
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15551
f_charbig = 'updated by trigger'
15552
WHERE f_int1 = new.f_int1;
15554
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15555
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15557
# check trigger-5 success: 1
15558
DROP TRIGGER trg_1;
15559
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15560
f_int2 = CAST(f_char1 AS SIGNED INT),
15561
f_charbig = 'just inserted'
15562
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15564
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15565
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15566
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15567
'just inserted' FROM t0_template
15568
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15569
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15571
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15572
f_charbig = 'updated by trigger'
15573
WHERE f_int1 = - old.f_int1;
15575
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15576
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15578
# check trigger-6 success: 1
15579
DROP TRIGGER trg_1;
15580
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15581
f_int2 = CAST(f_char1 AS SIGNED INT),
15582
f_charbig = 'just inserted'
15583
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15585
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15586
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15587
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15588
'just inserted' FROM t0_template
15589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15590
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15592
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15593
f_charbig = 'updated by trigger'
15594
WHERE f_int1 = - old.f_int1;
15597
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15599
# check trigger-7 success: 1
15600
DROP TRIGGER trg_1;
15601
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15602
f_int2 = CAST(f_char1 AS SIGNED INT),
15603
f_charbig = 'just inserted'
15604
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15606
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15607
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15608
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15609
'just inserted' FROM t0_template
15610
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15611
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15613
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15614
f_charbig = 'updated by trigger'
15615
WHERE f_int1 = - old.f_int1;
15618
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15620
# check trigger-8 success: 1
15621
DROP TRIGGER trg_1;
15622
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15623
f_int2 = CAST(f_char1 AS SIGNED INT),
15624
f_charbig = 'just inserted'
15625
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15627
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15629
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15630
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15632
SET new.f_int1 = old.f_int1 + @max_row,
15633
new.f_int2 = old.f_int2 - @max_row,
15634
new.f_charbig = '####updated per update trigger####';
15637
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15638
f_charbig = '####updated per update statement itself####';
15640
# check trigger-9 success: 1
15641
DROP TRIGGER trg_2;
15642
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15643
f_int2 = CAST(f_char1 AS SIGNED INT),
15644
f_charbig = CONCAT('===',f_char1,'===');
15645
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15647
SET new.f_int1 = new.f_int1 + @max_row,
15648
new.f_int2 = new.f_int2 - @max_row,
15649
new.f_charbig = '####updated per update trigger####';
15652
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15653
f_charbig = '####updated per update statement itself####';
15655
# check trigger-10 success: 1
15656
DROP TRIGGER trg_2;
15657
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15658
f_int2 = CAST(f_char1 AS SIGNED INT),
15659
f_charbig = CONCAT('===',f_char1,'===');
15660
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15662
SET new.f_int1 = @my_max1 + @counter,
15663
new.f_int2 = @my_min2 - @counter,
15664
new.f_charbig = '####updated per insert trigger####';
15665
SET @counter = @counter + 1;
15668
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15669
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15670
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15671
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15672
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15674
DROP TRIGGER trg_3;
15676
# check trigger-11 success: 1
15678
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15679
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15680
AND f_charbig = '####updated per insert trigger####';
15681
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15683
SET new.f_int1 = @my_max1 + @counter,
15684
new.f_int2 = @my_min2 - @counter,
15685
new.f_charbig = '####updated per insert trigger####';
15686
SET @counter = @counter + 1;
15689
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15690
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15691
SELECT CAST(f_int1 AS CHAR),
15692
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15693
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15695
DROP TRIGGER trg_3;
15697
# check trigger-12 success: 1
15699
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15700
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15701
AND f_charbig = '####updated per insert trigger####';
15703
Table Op Msg_type Msg_text
15704
test.t1 analyze status OK
15705
CHECK TABLE t1 EXTENDED;
15706
Table Op Msg_type Msg_text
15707
test.t1 check status OK
15708
CHECKSUM TABLE t1 EXTENDED;
15710
test.t1 <some_value>
15712
Table Op Msg_type Msg_text
15713
test.t1 optimize status OK
15714
# check layout success: 1
15715
REPAIR TABLE t1 EXTENDED;
15716
Table Op Msg_type Msg_text
15717
test.t1 repair status OK
15718
# check layout success: 1
15721
# check TRUNCATE success: 1
15722
# check layout success: 1
15723
# End usability test (inc/partition_check.inc)
15730
f_charbig VARCHAR(1000)
15731
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
15733
PARTITION BY LIST(ABS(MOD(f_int1,2)))
15734
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
15735
(PARTITION part1 VALUES IN (0),
15736
PARTITION part2 VALUES IN (1),
15737
PARTITION part3 VALUES IN (NULL));
15738
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15739
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
15740
# Start usability test (inc/partition_check.inc)
15742
SHOW CREATE TABLE t1;
15744
t1 CREATE TABLE `t1` (
15745
`f_int1` int(11) DEFAULT NULL,
15746
`f_int2` int(11) DEFAULT NULL,
15747
`f_char1` char(20) DEFAULT NULL,
15748
`f_char2` char(20) DEFAULT NULL,
15749
`f_charbig` varchar(1000) DEFAULT NULL,
15750
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
15751
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
15752
) ENGINE=MyISAM DEFAULT CHARSET=latin1
15753
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
15754
SUBPARTITION BY KEY (f_int2)
15756
(PARTITION part1 VALUES IN (0) ENGINE = MyISAM,
15757
PARTITION part2 VALUES IN (1) ENGINE = MyISAM,
15758
PARTITION part3 VALUES IN (NULL) ENGINE = MyISAM) */
15761
t1#P#part1#SP#part1sp0.MYD
15762
t1#P#part1#SP#part1sp0.MYI
15763
t1#P#part1#SP#part1sp1.MYD
15764
t1#P#part1#SP#part1sp1.MYI
15765
t1#P#part1#SP#part1sp2.MYD
15766
t1#P#part1#SP#part1sp2.MYI
15767
t1#P#part2#SP#part2sp0.MYD
15768
t1#P#part2#SP#part2sp0.MYI
15769
t1#P#part2#SP#part2sp1.MYD
15770
t1#P#part2#SP#part2sp1.MYI
15771
t1#P#part2#SP#part2sp2.MYD
15772
t1#P#part2#SP#part2sp2.MYI
15773
t1#P#part3#SP#part3sp0.MYD
15774
t1#P#part3#SP#part3sp0.MYI
15775
t1#P#part3#SP#part3sp1.MYD
15776
t1#P#part3#SP#part3sp1.MYI
15777
t1#P#part3#SP#part3sp2.MYD
15778
t1#P#part3#SP#part3sp2.MYI
15782
# check prerequisites-1 success: 1
15783
# check COUNT(*) success: 1
15784
# check MIN/MAX(f_int1) success: 1
15785
# check MIN/MAX(f_int2) success: 1
15786
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15787
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15788
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15789
WHERE f_int1 IN (2,3);
15790
ERROR 23000: Duplicate entry '2-2' for key 'uidx1'
15791
# check prerequisites-3 success: 1
15792
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
15793
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15794
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15795
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15796
WHERE f_int1 IN (2,3);
15797
DELETE FROM t1 WHERE f_charbig = 'delete me';
15798
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15799
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15800
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15801
WHERE f_int1 IN (2,3);
15802
DELETE FROM t1 WHERE f_charbig = 'delete me';
15803
# check read via f_int1 success: 1
15804
# check read via f_int2 success: 1
15806
# check multiple-1 success: 1
15807
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15809
# check multiple-2 success: 1
15810
INSERT INTO t1 SELECT * FROM t0_template
15811
WHERE MOD(f_int1,3) = 0;
15813
# check multiple-3 success: 1
15814
UPDATE t1 SET f_int1 = f_int1 + @max_row
15815
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15816
AND @max_row_div2 + @max_row_div4;
15818
# check multiple-4 success: 1
15820
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15821
AND @max_row_div2 + @max_row_div4 + @max_row;
15823
# check multiple-5 success: 1
15824
SELECT COUNT(*) INTO @try_count FROM t0_template
15825
WHERE MOD(f_int1,3) = 0
15826
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15827
SELECT COUNT(*) INTO @clash_count
15828
FROM t1 INNER JOIN t0_template USING(f_int1)
15829
WHERE MOD(f_int1,3) = 0
15830
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15831
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15833
SET f_int1 = @cur_value , f_int2 = @cur_value,
15834
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15835
f_charbig = '#SINGLE#';
15837
# check single-1 success: 1
15838
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15840
SET f_int1 = @cur_value , f_int2 = @cur_value,
15841
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15842
f_charbig = '#SINGLE#';
15844
# check single-2 success: 1
15845
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15846
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15847
UPDATE t1 SET f_int1 = @cur_value2
15848
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15850
# check single-3 success: 1
15851
SET @cur_value1= -1;
15852
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15853
UPDATE t1 SET f_int1 = @cur_value1
15854
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15856
# check single-4 success: 1
15857
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15858
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15860
# check single-5 success: 1
15861
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15863
# check single-6 success: 1
15864
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15866
# check single-7 success: 1
15867
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15868
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15869
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15870
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15871
f_charbig = '#NULL#';
15873
SET f_int1 = NULL , f_int2 = -@max_row,
15874
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15875
f_charbig = '#NULL#';
15876
# check null success: 1
15878
# check null-1 success: 1
15879
UPDATE t1 SET f_int1 = -@max_row
15880
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15881
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15883
# check null-2 success: 1
15884
UPDATE t1 SET f_int1 = NULL
15885
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15886
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15888
# check null-3 success: 1
15890
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15891
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15893
# check null-4 success: 1
15895
WHERE f_int1 = 0 AND f_int2 = 0
15896
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15897
AND f_charbig = '#NULL#';
15898
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15899
SELECT f_int1, f_int1, '', '', 'was inserted'
15900
FROM t0_template source_tab
15901
WHERE MOD(f_int1,3) = 0
15902
AND f_int1 BETWEEN @max_row_div2 AND @max_row
15904
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
15905
f_int2 = 2 * @max_row + source_tab.f_int1,
15906
f_charbig = 'was updated';
15908
# check unique-1-a success: 1
15910
# check unique-1-b success: 1
15911
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15912
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15913
f_int2 = CAST(f_char1 AS SIGNED INT),
15914
f_charbig = CONCAT('===',f_char1,'===')
15915
WHERE f_charbig = 'was updated';
15916
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15917
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
15918
FROM t0_template source_tab
15919
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15921
# check replace success: 1
15923
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
15925
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
15926
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
15927
UPDATE t1 SET f_int2 = f_int1,
15928
f_char1 = CAST(f_int1 AS CHAR),
15929
f_char2 = CAST(f_int1 AS CHAR),
15930
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
15931
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
15933
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15934
SELECT f_int1, f_int1, '', '', 'was inserted'
15935
FROM t0_template source_tab
15936
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15938
# check transactions-1 success: 1
15941
# check transactions-2 success: 1
15944
# check transactions-3 success: 1
15945
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15949
# check transactions-4 success: 1
15950
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15951
SELECT f_int1, f_int1, '', '', 'was inserted'
15952
FROM t0_template source_tab
15953
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15955
# check transactions-5 success: 1
15958
Warning 1196 Some non-transactional changed tables couldn't be rolled back
15960
# check transactions-6 success: 1
15961
# INFO: Storage engine used for t1 seems to be not transactional.
15964
# check transactions-7 success: 1
15965
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15967
SET @@session.sql_mode = 'traditional';
15968
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15969
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15970
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15971
'', '', 'was inserted' FROM t0_template
15972
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15973
ERROR 22012: Division by 0
15976
# check transactions-8 success: 1
15977
# INFO: Storage engine used for t1 seems to be unable to revert
15978
# changes made by the failing statement.
15979
SET @@session.sql_mode = '';
15981
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15983
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15985
# check special-1 success: 1
15986
UPDATE t1 SET f_charbig = '';
15988
# check special-2 success: 1
15989
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15990
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15991
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15992
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15993
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15994
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15995
'just inserted' FROM t0_template
15996
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15997
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15999
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16000
f_charbig = 'updated by trigger'
16001
WHERE f_int1 = new.f_int1;
16003
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16004
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16005
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16007
# check trigger-1 success: 1
16008
DROP TRIGGER trg_1;
16009
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16010
f_int2 = CAST(f_char1 AS SIGNED INT),
16011
f_charbig = 'just inserted'
16012
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16014
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16015
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16016
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16017
'just inserted' FROM t0_template
16018
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16019
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16021
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16022
f_charbig = 'updated by trigger'
16023
WHERE f_int1 = new.f_int1;
16025
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16026
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16027
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16029
# check trigger-2 success: 1
16030
DROP TRIGGER trg_1;
16031
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16032
f_int2 = CAST(f_char1 AS SIGNED INT),
16033
f_charbig = 'just inserted'
16034
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16036
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16037
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16038
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16039
'just inserted' FROM t0_template
16040
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16041
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16043
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16044
f_charbig = 'updated by trigger'
16045
WHERE f_int1 = new.f_int1;
16047
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16048
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16050
# check trigger-3 success: 1
16051
DROP TRIGGER trg_1;
16052
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16053
f_int2 = CAST(f_char1 AS SIGNED INT),
16054
f_charbig = 'just inserted'
16055
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16057
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16058
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16059
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16060
'just inserted' FROM t0_template
16061
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16062
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16064
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16065
f_charbig = 'updated by trigger'
16066
WHERE f_int1 = - old.f_int1;
16068
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16069
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16071
# check trigger-4 success: 1
16072
DROP TRIGGER trg_1;
16073
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16074
f_int2 = CAST(f_char1 AS SIGNED INT),
16075
f_charbig = 'just inserted'
16076
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16078
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16079
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16080
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16081
'just inserted' FROM t0_template
16082
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16083
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16085
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16086
f_charbig = 'updated by trigger'
16087
WHERE f_int1 = new.f_int1;
16089
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16090
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16092
# check trigger-5 success: 1
16093
DROP TRIGGER trg_1;
16094
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16095
f_int2 = CAST(f_char1 AS SIGNED INT),
16096
f_charbig = 'just inserted'
16097
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16099
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16100
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16101
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16102
'just inserted' FROM t0_template
16103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16104
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16106
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16107
f_charbig = 'updated by trigger'
16108
WHERE f_int1 = - old.f_int1;
16110
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16111
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16113
# check trigger-6 success: 1
16114
DROP TRIGGER trg_1;
16115
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16116
f_int2 = CAST(f_char1 AS SIGNED INT),
16117
f_charbig = 'just inserted'
16118
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16120
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16121
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16122
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16123
'just inserted' FROM t0_template
16124
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16125
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16127
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16128
f_charbig = 'updated by trigger'
16129
WHERE f_int1 = - old.f_int1;
16132
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16134
# check trigger-7 success: 1
16135
DROP TRIGGER trg_1;
16136
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16137
f_int2 = CAST(f_char1 AS SIGNED INT),
16138
f_charbig = 'just inserted'
16139
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16141
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16142
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16143
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16144
'just inserted' FROM t0_template
16145
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16146
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16148
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16149
f_charbig = 'updated by trigger'
16150
WHERE f_int1 = - old.f_int1;
16153
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16155
# check trigger-8 success: 1
16156
DROP TRIGGER trg_1;
16157
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16158
f_int2 = CAST(f_char1 AS SIGNED INT),
16159
f_charbig = 'just inserted'
16160
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16162
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16164
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16165
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16167
SET new.f_int1 = old.f_int1 + @max_row,
16168
new.f_int2 = old.f_int2 - @max_row,
16169
new.f_charbig = '####updated per update trigger####';
16172
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16173
f_charbig = '####updated per update statement itself####';
16175
# check trigger-9 success: 1
16176
DROP TRIGGER trg_2;
16177
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16178
f_int2 = CAST(f_char1 AS SIGNED INT),
16179
f_charbig = CONCAT('===',f_char1,'===');
16180
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16182
SET new.f_int1 = new.f_int1 + @max_row,
16183
new.f_int2 = new.f_int2 - @max_row,
16184
new.f_charbig = '####updated per update trigger####';
16187
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16188
f_charbig = '####updated per update statement itself####';
16190
# check trigger-10 success: 1
16191
DROP TRIGGER trg_2;
16192
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16193
f_int2 = CAST(f_char1 AS SIGNED INT),
16194
f_charbig = CONCAT('===',f_char1,'===');
16195
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16197
SET new.f_int1 = @my_max1 + @counter,
16198
new.f_int2 = @my_min2 - @counter,
16199
new.f_charbig = '####updated per insert trigger####';
16200
SET @counter = @counter + 1;
16203
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16204
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16205
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16206
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16207
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16209
DROP TRIGGER trg_3;
16211
# check trigger-11 success: 1
16213
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16214
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16215
AND f_charbig = '####updated per insert trigger####';
16216
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16218
SET new.f_int1 = @my_max1 + @counter,
16219
new.f_int2 = @my_min2 - @counter,
16220
new.f_charbig = '####updated per insert trigger####';
16221
SET @counter = @counter + 1;
16224
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16225
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16226
SELECT CAST(f_int1 AS CHAR),
16227
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16228
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16230
DROP TRIGGER trg_3;
16232
# check trigger-12 success: 1
16234
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16235
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16236
AND f_charbig = '####updated per insert trigger####';
16238
Table Op Msg_type Msg_text
16239
test.t1 analyze status OK
16240
CHECK TABLE t1 EXTENDED;
16241
Table Op Msg_type Msg_text
16242
test.t1 check status OK
16243
CHECKSUM TABLE t1 EXTENDED;
16245
test.t1 <some_value>
16247
Table Op Msg_type Msg_text
16248
test.t1 optimize status OK
16249
# check layout success: 1
16250
REPAIR TABLE t1 EXTENDED;
16251
Table Op Msg_type Msg_text
16252
test.t1 repair status OK
16253
# check layout success: 1
16256
# check TRUNCATE success: 1
16257
# check layout success: 1
16258
# End usability test (inc/partition_check.inc)
16260
DROP VIEW IF EXISTS v1;
16261
DROP TABLE IF EXISTS t1;
16262
DROP TABLE IF EXISTS t0_aux;
16263
DROP TABLE IF EXISTS t0_definition;
16264
DROP TABLE IF EXISTS t0_template;