2
SET @@session.storage_engine = 'InnoDB';
4
#------------------------------------------------------------------------
5
# 0. Setting of auxiliary variables + Creation of an auxiliary tables
6
# needed in many testcases
7
#------------------------------------------------------------------------
8
SELECT @max_row DIV 2 INTO @max_row_div2;
9
SELECT @max_row DIV 3 INTO @max_row_div3;
10
SELECT @max_row DIV 4 INTO @max_row_div4;
11
SET @max_int_4 = 2147483647;
12
DROP TABLE IF EXISTS t0_template;
13
CREATE TABLE t0_template (
18
f_charbig VARCHAR(1000) ,
21
# Logging of <max_row> INSERTs into t0_template suppressed
22
DROP TABLE IF EXISTS t0_definition;
23
CREATE TABLE t0_definition (
25
create_command VARBINARY(5000),
26
file_list VARBINARY(10000),
29
DROP TABLE IF EXISTS t0_aux;
30
CREATE TABLE t0_aux ( f_int1 INTEGER,
34
f_charbig VARCHAR(1000) )
37
SET @@session.sql_mode= '';
38
# End of basic preparations needed for all tests
39
#-----------------------------------------------
41
#========================================================================
42
# 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=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) PARTITIONS 2 */
78
$MYSQLTEST_VARDIR/master-data/test/t1.frm
79
$MYSQLTEST_VARDIR/master-data/test/t1.par
81
# check prerequisites-1 success: 1
82
# check COUNT(*) success: 1
83
# check MIN/MAX(f_int1) success: 1
84
# check MIN/MAX(f_int2) success: 1
85
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
86
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
87
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
88
WHERE f_int1 IN (2,3);
89
# check prerequisites-3 success: 1
90
DELETE FROM t1 WHERE f_charbig = 'delete me';
91
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
92
# check read via f_int1 success: 1
93
# check read via f_int2 success: 1
95
# check multiple-1 success: 1
96
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
98
# check multiple-2 success: 1
99
INSERT INTO t1 SELECT * FROM t0_template
100
WHERE MOD(f_int1,3) = 0;
102
# check multiple-3 success: 1
103
UPDATE t1 SET f_int1 = f_int1 + @max_row
104
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
105
AND @max_row_div2 + @max_row_div4;
107
# check multiple-4 success: 1
109
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
110
AND @max_row_div2 + @max_row_div4 + @max_row;
112
# check multiple-5 success: 1
113
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
115
SET f_int1 = @cur_value , f_int2 = @cur_value,
116
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
117
f_charbig = '#SINGLE#';
119
# check single-1 success: 1
120
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
122
SET f_int1 = @cur_value , f_int2 = @cur_value,
123
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
124
f_charbig = '#SINGLE#';
126
# check single-2 success: 1
127
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
128
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
129
UPDATE t1 SET f_int1 = @cur_value2
130
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
132
# check single-3 success: 1
134
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
135
UPDATE t1 SET f_int1 = @cur_value1
136
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
138
# check single-4 success: 1
139
SELECT MAX(f_int1) INTO @cur_value FROM t1;
140
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
142
# check single-5 success: 1
143
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
145
# check single-6 success: 1
146
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
148
# check single-7 success: 1
149
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
150
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
151
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
152
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
153
f_charbig = '#NULL#';
155
SET f_int1 = NULL , f_int2 = -@max_row,
156
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
157
f_charbig = '#NULL#';
158
# check null success: 1
160
# check null-1 success: 1
161
UPDATE t1 SET f_int1 = -@max_row
162
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
163
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
165
# check null-2 success: 1
166
UPDATE t1 SET f_int1 = NULL
167
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
168
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
170
# check null-3 success: 1
172
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
173
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
175
# check null-4 success: 1
177
WHERE f_int1 = 0 AND f_int2 = 0
178
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
179
AND f_charbig = '#NULL#';
181
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
182
SELECT f_int1, f_int1, '', '', 'was inserted'
183
FROM t0_template source_tab
184
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
186
# check transactions-1 success: 1
189
# check transactions-2 success: 1
192
# check transactions-3 success: 1
193
DELETE FROM t1 WHERE f_charbig = 'was inserted';
197
# check transactions-4 success: 1
198
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
199
SELECT f_int1, f_int1, '', '', 'was inserted'
200
FROM t0_template source_tab
201
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
203
# check transactions-5 success: 1
206
# check transactions-6 success: 1
207
# INFO: Storage engine used for t1 seems to be transactional.
210
# check transactions-7 success: 1
211
DELETE FROM t1 WHERE f_charbig = 'was inserted';
213
SET @@session.sql_mode = 'traditional';
214
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
215
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
216
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
217
'', '', 'was inserted' FROM t0_template
218
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
219
ERROR 22012: Division by 0
222
# check transactions-8 success: 1
223
# INFO: Storage engine used for t1 seems to be able to revert
224
# changes made by the failing statement.
225
SET @@session.sql_mode = '';
227
DELETE FROM t1 WHERE f_charbig = 'was inserted';
229
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
231
# check special-1 success: 1
232
UPDATE t1 SET f_charbig = '';
234
# check special-2 success: 1
235
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
236
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
237
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
238
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
239
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
240
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
241
'just inserted' FROM t0_template
242
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
243
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
245
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
246
f_charbig = 'updated by trigger'
247
WHERE f_int1 = new.f_int1;
249
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
250
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
251
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
253
# check trigger-1 success: 1
255
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
256
f_int2 = CAST(f_char1 AS SIGNED INT),
257
f_charbig = 'just inserted'
258
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
260
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
261
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
262
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
263
'just inserted' FROM t0_template
264
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
265
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
267
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
268
f_charbig = 'updated by trigger'
269
WHERE f_int1 = new.f_int1;
271
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
272
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
273
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
275
# check trigger-2 success: 1
277
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
278
f_int2 = CAST(f_char1 AS SIGNED INT),
279
f_charbig = 'just inserted'
280
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
282
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
283
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
284
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
285
'just inserted' FROM t0_template
286
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
287
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
289
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
290
f_charbig = 'updated by trigger'
291
WHERE f_int1 = new.f_int1;
293
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
294
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
296
# check trigger-3 success: 1
298
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
299
f_int2 = CAST(f_char1 AS SIGNED INT),
300
f_charbig = 'just inserted'
301
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
303
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
304
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
305
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
306
'just inserted' FROM t0_template
307
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
308
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
310
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
311
f_charbig = 'updated by trigger'
312
WHERE f_int1 = - old.f_int1;
314
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
315
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
317
# check trigger-4 success: 1
319
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
320
f_int2 = CAST(f_char1 AS SIGNED INT),
321
f_charbig = 'just inserted'
322
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
324
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
325
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
326
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
327
'just inserted' FROM t0_template
328
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
329
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
331
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
332
f_charbig = 'updated by trigger'
333
WHERE f_int1 = new.f_int1;
335
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
336
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
338
# check trigger-5 success: 1
340
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
341
f_int2 = CAST(f_char1 AS SIGNED INT),
342
f_charbig = 'just inserted'
343
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
345
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
346
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
347
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
348
'just inserted' FROM t0_template
349
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
350
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
352
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
353
f_charbig = 'updated by trigger'
354
WHERE f_int1 = - old.f_int1;
356
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
357
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
359
# check trigger-6 success: 1
361
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
362
f_int2 = CAST(f_char1 AS SIGNED INT),
363
f_charbig = 'just inserted'
364
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
366
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
367
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
368
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
369
'just inserted' FROM t0_template
370
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
371
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
373
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
374
f_charbig = 'updated by trigger'
375
WHERE f_int1 = - old.f_int1;
378
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
380
# check trigger-7 success: 1
382
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
383
f_int2 = CAST(f_char1 AS SIGNED INT),
384
f_charbig = 'just inserted'
385
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
387
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
388
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
389
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
390
'just inserted' FROM t0_template
391
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
392
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
394
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
395
f_charbig = 'updated by trigger'
396
WHERE f_int1 = - old.f_int1;
399
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
401
# check trigger-8 success: 1
403
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
404
f_int2 = CAST(f_char1 AS SIGNED INT),
405
f_charbig = 'just inserted'
406
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
408
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
410
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
411
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
413
SET new.f_int1 = old.f_int1 + @max_row,
414
new.f_int2 = old.f_int2 - @max_row,
415
new.f_charbig = '####updated per update trigger####';
418
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
419
f_charbig = '####updated per update statement itself####';
421
# check trigger-9 success: 1
423
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
424
f_int2 = CAST(f_char1 AS SIGNED INT),
425
f_charbig = CONCAT('===',f_char1,'===');
426
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
428
SET new.f_int1 = new.f_int1 + @max_row,
429
new.f_int2 = new.f_int2 - @max_row,
430
new.f_charbig = '####updated per update trigger####';
433
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
434
f_charbig = '####updated per update statement itself####';
436
# check trigger-10 success: 1
438
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
439
f_int2 = CAST(f_char1 AS SIGNED INT),
440
f_charbig = CONCAT('===',f_char1,'===');
441
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
443
SET new.f_int1 = @my_max1 + @counter,
444
new.f_int2 = @my_min2 - @counter,
445
new.f_charbig = '####updated per insert trigger####';
446
SET @counter = @counter + 1;
449
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
450
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
451
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
452
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
453
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
457
# check trigger-11 success: 1
459
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
460
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
461
AND f_charbig = '####updated per insert trigger####';
462
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
464
SET new.f_int1 = @my_max1 + @counter,
465
new.f_int2 = @my_min2 - @counter,
466
new.f_charbig = '####updated per insert trigger####';
467
SET @counter = @counter + 1;
470
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
471
INSERT INTO t1 (f_char1, f_char2, f_charbig)
472
SELECT CAST(f_int1 AS CHAR),
473
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
474
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
478
# check trigger-12 success: 1
480
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
481
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
482
AND f_charbig = '####updated per insert trigger####';
484
Table Op Msg_type Msg_text
485
test.t1 analyze note The storage engine for the table doesn't support analyze
486
CHECK TABLE t1 EXTENDED;
487
Table Op Msg_type Msg_text
488
test.t1 check note The storage engine for the table doesn't support check
489
CHECKSUM TABLE t1 EXTENDED;
493
Table Op Msg_type Msg_text
494
test.t1 optimize note The storage engine for the table doesn't support optimize
495
# check layout success: 1
496
REPAIR TABLE t1 EXTENDED;
497
Table Op Msg_type Msg_text
498
test.t1 repair note The storage engine for the table doesn't support repair
499
# check layout success: 1
502
# check TRUNCATE success: 1
503
# check layout success: 1
504
# End usability test (inc/partition_check.inc)
511
f_charbig VARCHAR(1000)
514
PARTITION BY KEY(f_int1) PARTITIONS 5;
515
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
516
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
517
# Start usability test (inc/partition_check.inc)
519
SHOW CREATE TABLE t1;
521
t1 CREATE TABLE `t1` (
522
`f_int1` int(11) DEFAULT NULL,
523
`f_int2` int(11) DEFAULT NULL,
524
`f_char1` char(20) DEFAULT NULL,
525
`f_char2` char(20) DEFAULT NULL,
526
`f_charbig` varchar(1000) DEFAULT NULL
527
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) PARTITIONS 5 */
530
$MYSQLTEST_VARDIR/master-data/test/t1.frm
531
$MYSQLTEST_VARDIR/master-data/test/t1.par
533
# check prerequisites-1 success: 1
534
# check COUNT(*) success: 1
535
# check MIN/MAX(f_int1) success: 1
536
# check MIN/MAX(f_int2) success: 1
537
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
538
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
539
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
540
WHERE f_int1 IN (2,3);
541
# check prerequisites-3 success: 1
542
DELETE FROM t1 WHERE f_charbig = 'delete me';
543
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
544
# check read via f_int1 success: 1
545
# check read via f_int2 success: 1
547
# check multiple-1 success: 1
548
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
550
# check multiple-2 success: 1
551
INSERT INTO t1 SELECT * FROM t0_template
552
WHERE MOD(f_int1,3) = 0;
554
# check multiple-3 success: 1
555
UPDATE t1 SET f_int1 = f_int1 + @max_row
556
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
557
AND @max_row_div2 + @max_row_div4;
559
# check multiple-4 success: 1
561
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
562
AND @max_row_div2 + @max_row_div4 + @max_row;
564
# check multiple-5 success: 1
565
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
567
SET f_int1 = @cur_value , f_int2 = @cur_value,
568
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
569
f_charbig = '#SINGLE#';
571
# check single-1 success: 1
572
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
574
SET f_int1 = @cur_value , f_int2 = @cur_value,
575
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
576
f_charbig = '#SINGLE#';
578
# check single-2 success: 1
579
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
580
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
581
UPDATE t1 SET f_int1 = @cur_value2
582
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
584
# check single-3 success: 1
586
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
587
UPDATE t1 SET f_int1 = @cur_value1
588
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
590
# check single-4 success: 1
591
SELECT MAX(f_int1) INTO @cur_value FROM t1;
592
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
594
# check single-5 success: 1
595
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
597
# check single-6 success: 1
598
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
600
# check single-7 success: 1
601
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
602
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
603
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
604
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
605
f_charbig = '#NULL#';
607
SET f_int1 = NULL , f_int2 = -@max_row,
608
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
609
f_charbig = '#NULL#';
610
# check null success: 1
612
# check null-1 success: 1
613
UPDATE t1 SET f_int1 = -@max_row
614
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
615
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
617
# check null-2 success: 1
618
UPDATE t1 SET f_int1 = NULL
619
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
620
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
622
# check null-3 success: 1
624
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
625
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
627
# check null-4 success: 1
629
WHERE f_int1 = 0 AND f_int2 = 0
630
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
631
AND f_charbig = '#NULL#';
633
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
634
SELECT f_int1, f_int1, '', '', 'was inserted'
635
FROM t0_template source_tab
636
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
638
# check transactions-1 success: 1
641
# check transactions-2 success: 1
644
# check transactions-3 success: 1
645
DELETE FROM t1 WHERE f_charbig = 'was inserted';
649
# check transactions-4 success: 1
650
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
651
SELECT f_int1, f_int1, '', '', 'was inserted'
652
FROM t0_template source_tab
653
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
655
# check transactions-5 success: 1
658
# check transactions-6 success: 1
659
# INFO: Storage engine used for t1 seems to be transactional.
662
# check transactions-7 success: 1
663
DELETE FROM t1 WHERE f_charbig = 'was inserted';
665
SET @@session.sql_mode = 'traditional';
666
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
667
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
668
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
669
'', '', 'was inserted' FROM t0_template
670
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
671
ERROR 22012: Division by 0
674
# check transactions-8 success: 1
675
# INFO: Storage engine used for t1 seems to be able to revert
676
# changes made by the failing statement.
677
SET @@session.sql_mode = '';
679
DELETE FROM t1 WHERE f_charbig = 'was inserted';
681
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
683
# check special-1 success: 1
684
UPDATE t1 SET f_charbig = '';
686
# check special-2 success: 1
687
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
688
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
689
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
690
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
691
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
692
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
693
'just inserted' FROM t0_template
694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
695
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
697
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
698
f_charbig = 'updated by trigger'
699
WHERE f_int1 = new.f_int1;
701
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
702
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
705
# check trigger-1 success: 1
707
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
708
f_int2 = CAST(f_char1 AS SIGNED INT),
709
f_charbig = 'just inserted'
710
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
712
WHERE ABS(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 AFTER 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-2 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 BEFORE UPDATE 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
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
746
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
748
# check trigger-3 success: 1
750
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
751
f_int2 = CAST(f_char1 AS SIGNED INT),
752
f_charbig = 'just inserted'
753
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
755
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
756
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
757
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
758
'just inserted' FROM t0_template
759
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
760
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
762
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
763
f_charbig = 'updated by trigger'
764
WHERE f_int1 = - old.f_int1;
766
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
767
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
769
# check trigger-4 success: 1
771
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
772
f_int2 = CAST(f_char1 AS SIGNED INT),
773
f_charbig = 'just inserted'
774
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
776
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
777
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
778
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
779
'just inserted' FROM t0_template
780
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
781
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
783
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
784
f_charbig = 'updated by trigger'
785
WHERE f_int1 = new.f_int1;
787
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
788
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
790
# check trigger-5 success: 1
792
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
793
f_int2 = CAST(f_char1 AS SIGNED INT),
794
f_charbig = 'just inserted'
795
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
797
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
798
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
799
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
800
'just inserted' FROM t0_template
801
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
802
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
804
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
805
f_charbig = 'updated by trigger'
806
WHERE f_int1 = - old.f_int1;
808
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
809
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
811
# check trigger-6 success: 1
813
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
814
f_int2 = CAST(f_char1 AS SIGNED INT),
815
f_charbig = 'just inserted'
816
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
818
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
819
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
820
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
821
'just inserted' FROM t0_template
822
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
823
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
825
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
826
f_charbig = 'updated by trigger'
827
WHERE f_int1 = - old.f_int1;
830
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
832
# check trigger-7 success: 1
834
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
835
f_int2 = CAST(f_char1 AS SIGNED INT),
836
f_charbig = 'just inserted'
837
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
839
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
840
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
841
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
842
'just inserted' FROM t0_template
843
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
844
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
846
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
847
f_charbig = 'updated by trigger'
848
WHERE f_int1 = - old.f_int1;
851
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
853
# check trigger-8 success: 1
855
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
856
f_int2 = CAST(f_char1 AS SIGNED INT),
857
f_charbig = 'just inserted'
858
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
860
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
862
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
863
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
865
SET new.f_int1 = old.f_int1 + @max_row,
866
new.f_int2 = old.f_int2 - @max_row,
867
new.f_charbig = '####updated per update trigger####';
870
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
871
f_charbig = '####updated per update statement itself####';
873
# check trigger-9 success: 1
875
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
876
f_int2 = CAST(f_char1 AS SIGNED INT),
877
f_charbig = CONCAT('===',f_char1,'===');
878
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
880
SET new.f_int1 = new.f_int1 + @max_row,
881
new.f_int2 = new.f_int2 - @max_row,
882
new.f_charbig = '####updated per update trigger####';
885
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
886
f_charbig = '####updated per update statement itself####';
888
# check trigger-10 success: 1
890
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
891
f_int2 = CAST(f_char1 AS SIGNED INT),
892
f_charbig = CONCAT('===',f_char1,'===');
893
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
895
SET new.f_int1 = @my_max1 + @counter,
896
new.f_int2 = @my_min2 - @counter,
897
new.f_charbig = '####updated per insert trigger####';
898
SET @counter = @counter + 1;
901
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
902
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
903
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
904
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
905
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
909
# check trigger-11 success: 1
911
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
912
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
913
AND f_charbig = '####updated per insert trigger####';
914
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
916
SET new.f_int1 = @my_max1 + @counter,
917
new.f_int2 = @my_min2 - @counter,
918
new.f_charbig = '####updated per insert trigger####';
919
SET @counter = @counter + 1;
922
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
923
INSERT INTO t1 (f_char1, f_char2, f_charbig)
924
SELECT CAST(f_int1 AS CHAR),
925
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
926
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
930
# check trigger-12 success: 1
932
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
933
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
934
AND f_charbig = '####updated per insert trigger####';
936
Table Op Msg_type Msg_text
937
test.t1 analyze note The storage engine for the table doesn't support analyze
938
CHECK TABLE t1 EXTENDED;
939
Table Op Msg_type Msg_text
940
test.t1 check note The storage engine for the table doesn't support check
941
CHECKSUM TABLE t1 EXTENDED;
945
Table Op Msg_type Msg_text
946
test.t1 optimize note The storage engine for the table doesn't support optimize
947
# check layout success: 1
948
REPAIR TABLE t1 EXTENDED;
949
Table Op Msg_type Msg_text
950
test.t1 repair note The storage engine for the table doesn't support repair
951
# check layout success: 1
954
# check TRUNCATE success: 1
955
# check layout success: 1
956
# End usability test (inc/partition_check.inc)
963
f_charbig VARCHAR(1000)
966
PARTITION BY LIST(MOD(f_int1,4))
967
(PARTITION part_3 VALUES IN (-3),
968
PARTITION part_2 VALUES IN (-2),
969
PARTITION part_1 VALUES IN (-1),
970
PARTITION part_N VALUES IN (NULL),
971
PARTITION part0 VALUES IN (0),
972
PARTITION part1 VALUES IN (1),
973
PARTITION part2 VALUES IN (2),
974
PARTITION part3 VALUES IN (3));
975
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
976
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
977
# Start usability test (inc/partition_check.inc)
979
SHOW CREATE TABLE t1;
981
t1 CREATE TABLE `t1` (
982
`f_int1` int(11) DEFAULT NULL,
983
`f_int2` int(11) DEFAULT NULL,
984
`f_char1` char(20) DEFAULT NULL,
985
`f_char2` char(20) DEFAULT NULL,
986
`f_charbig` varchar(1000) DEFAULT NULL
987
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
990
$MYSQLTEST_VARDIR/master-data/test/t1.frm
991
$MYSQLTEST_VARDIR/master-data/test/t1.par
993
# check prerequisites-1 success: 1
994
# check COUNT(*) success: 1
995
# check MIN/MAX(f_int1) success: 1
996
# check MIN/MAX(f_int2) success: 1
997
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
998
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
999
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1000
WHERE f_int1 IN (2,3);
1001
# check prerequisites-3 success: 1
1002
DELETE FROM t1 WHERE f_charbig = 'delete me';
1003
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1004
# check read via f_int1 success: 1
1005
# check read via f_int2 success: 1
1007
# check multiple-1 success: 1
1008
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1010
# check multiple-2 success: 1
1011
INSERT INTO t1 SELECT * FROM t0_template
1012
WHERE MOD(f_int1,3) = 0;
1014
# check multiple-3 success: 1
1015
UPDATE t1 SET f_int1 = f_int1 + @max_row
1016
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1017
AND @max_row_div2 + @max_row_div4;
1019
# check multiple-4 success: 1
1021
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1022
AND @max_row_div2 + @max_row_div4 + @max_row;
1024
# check multiple-5 success: 1
1025
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1027
SET f_int1 = @cur_value , f_int2 = @cur_value,
1028
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1029
f_charbig = '#SINGLE#';
1031
# check single-1 success: 1
1032
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1034
SET f_int1 = @cur_value , f_int2 = @cur_value,
1035
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1036
f_charbig = '#SINGLE#';
1038
# check single-2 success: 1
1039
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1040
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1041
UPDATE t1 SET f_int1 = @cur_value2
1042
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1044
# check single-3 success: 1
1045
SET @cur_value1= -1;
1046
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1047
UPDATE t1 SET f_int1 = @cur_value1
1048
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1050
# check single-4 success: 1
1051
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1052
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1054
# check single-5 success: 1
1055
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1057
# check single-6 success: 1
1058
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1060
# check single-7 success: 1
1061
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1062
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1063
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1064
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1065
f_charbig = '#NULL#';
1067
SET f_int1 = NULL , f_int2 = -@max_row,
1068
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1069
f_charbig = '#NULL#';
1070
# check null success: 1
1072
# check null-1 success: 1
1073
UPDATE t1 SET f_int1 = -@max_row
1074
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1075
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1077
# check null-2 success: 1
1078
UPDATE t1 SET f_int1 = NULL
1079
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1080
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1082
# check null-3 success: 1
1084
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1085
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1087
# check null-4 success: 1
1089
WHERE f_int1 = 0 AND f_int2 = 0
1090
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1091
AND f_charbig = '#NULL#';
1093
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1094
SELECT f_int1, f_int1, '', '', 'was inserted'
1095
FROM t0_template source_tab
1096
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1098
# check transactions-1 success: 1
1101
# check transactions-2 success: 1
1104
# check transactions-3 success: 1
1105
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1109
# check transactions-4 success: 1
1110
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1111
SELECT f_int1, f_int1, '', '', 'was inserted'
1112
FROM t0_template source_tab
1113
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1115
# check transactions-5 success: 1
1118
# check transactions-6 success: 1
1119
# INFO: Storage engine used for t1 seems to be transactional.
1122
# check transactions-7 success: 1
1123
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1125
SET @@session.sql_mode = 'traditional';
1126
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1127
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1128
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1129
'', '', 'was inserted' FROM t0_template
1130
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1131
ERROR 22012: Division by 0
1134
# check transactions-8 success: 1
1135
# INFO: Storage engine used for t1 seems to be able to revert
1136
# changes made by the failing statement.
1137
SET @@session.sql_mode = '';
1139
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1141
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1143
# check special-1 success: 1
1144
UPDATE t1 SET f_charbig = '';
1146
# check special-2 success: 1
1147
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1148
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1149
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1151
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1152
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1153
'just inserted' FROM t0_template
1154
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1155
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1157
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1158
f_charbig = 'updated by trigger'
1159
WHERE f_int1 = new.f_int1;
1161
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1162
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1163
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1165
# check trigger-1 success: 1
1167
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1168
f_int2 = CAST(f_char1 AS SIGNED INT),
1169
f_charbig = 'just inserted'
1170
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1172
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1173
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1174
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1175
'just inserted' FROM t0_template
1176
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1177
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1179
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1180
f_charbig = 'updated by trigger'
1181
WHERE f_int1 = new.f_int1;
1183
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1184
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1185
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1187
# check trigger-2 success: 1
1189
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1190
f_int2 = CAST(f_char1 AS SIGNED INT),
1191
f_charbig = 'just inserted'
1192
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1194
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1195
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1196
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1197
'just inserted' FROM t0_template
1198
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1199
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1201
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1202
f_charbig = 'updated by trigger'
1203
WHERE f_int1 = new.f_int1;
1205
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1206
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1208
# check trigger-3 success: 1
1210
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1211
f_int2 = CAST(f_char1 AS SIGNED INT),
1212
f_charbig = 'just inserted'
1213
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1215
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1216
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1217
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1218
'just inserted' FROM t0_template
1219
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1220
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1222
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1223
f_charbig = 'updated by trigger'
1224
WHERE f_int1 = - old.f_int1;
1226
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1227
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1229
# check trigger-4 success: 1
1231
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1232
f_int2 = CAST(f_char1 AS SIGNED INT),
1233
f_charbig = 'just inserted'
1234
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1236
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1237
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1238
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1239
'just inserted' FROM t0_template
1240
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1241
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1243
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1244
f_charbig = 'updated by trigger'
1245
WHERE f_int1 = new.f_int1;
1247
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1248
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1250
# check trigger-5 success: 1
1252
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1253
f_int2 = CAST(f_char1 AS SIGNED INT),
1254
f_charbig = 'just inserted'
1255
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1257
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1258
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1259
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1260
'just inserted' FROM t0_template
1261
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1262
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1264
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1265
f_charbig = 'updated by trigger'
1266
WHERE f_int1 = - old.f_int1;
1268
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1269
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1271
# check trigger-6 success: 1
1273
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1274
f_int2 = CAST(f_char1 AS SIGNED INT),
1275
f_charbig = 'just inserted'
1276
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1278
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1279
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1280
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1281
'just inserted' FROM t0_template
1282
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1283
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1285
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1286
f_charbig = 'updated by trigger'
1287
WHERE f_int1 = - old.f_int1;
1290
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1292
# check trigger-7 success: 1
1294
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1295
f_int2 = CAST(f_char1 AS SIGNED INT),
1296
f_charbig = 'just inserted'
1297
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1299
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1300
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1301
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1302
'just inserted' FROM t0_template
1303
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1304
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1306
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1307
f_charbig = 'updated by trigger'
1308
WHERE f_int1 = - old.f_int1;
1311
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1313
# check trigger-8 success: 1
1315
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1316
f_int2 = CAST(f_char1 AS SIGNED INT),
1317
f_charbig = 'just inserted'
1318
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1320
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1322
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1323
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1325
SET new.f_int1 = old.f_int1 + @max_row,
1326
new.f_int2 = old.f_int2 - @max_row,
1327
new.f_charbig = '####updated per update trigger####';
1330
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1331
f_charbig = '####updated per update statement itself####';
1333
# check trigger-9 success: 1
1335
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1336
f_int2 = CAST(f_char1 AS SIGNED INT),
1337
f_charbig = CONCAT('===',f_char1,'===');
1338
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1340
SET new.f_int1 = new.f_int1 + @max_row,
1341
new.f_int2 = new.f_int2 - @max_row,
1342
new.f_charbig = '####updated per update trigger####';
1345
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1346
f_charbig = '####updated per update statement itself####';
1348
# check trigger-10 success: 1
1350
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1351
f_int2 = CAST(f_char1 AS SIGNED INT),
1352
f_charbig = CONCAT('===',f_char1,'===');
1353
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1355
SET new.f_int1 = @my_max1 + @counter,
1356
new.f_int2 = @my_min2 - @counter,
1357
new.f_charbig = '####updated per insert trigger####';
1358
SET @counter = @counter + 1;
1361
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1362
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1363
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1364
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1365
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1369
# check trigger-11 success: 1
1371
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1372
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1373
AND f_charbig = '####updated per insert trigger####';
1374
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1376
SET new.f_int1 = @my_max1 + @counter,
1377
new.f_int2 = @my_min2 - @counter,
1378
new.f_charbig = '####updated per insert trigger####';
1379
SET @counter = @counter + 1;
1382
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1383
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1384
SELECT CAST(f_int1 AS CHAR),
1385
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1386
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1390
# check trigger-12 success: 1
1392
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1393
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1394
AND f_charbig = '####updated per insert trigger####';
1396
Table Op Msg_type Msg_text
1397
test.t1 analyze note The storage engine for the table doesn't support analyze
1398
CHECK TABLE t1 EXTENDED;
1399
Table Op Msg_type Msg_text
1400
test.t1 check note The storage engine for the table doesn't support check
1401
CHECKSUM TABLE t1 EXTENDED;
1403
test.t1 <some_value>
1405
Table Op Msg_type Msg_text
1406
test.t1 optimize note The storage engine for the table doesn't support optimize
1407
# check layout success: 1
1408
REPAIR TABLE t1 EXTENDED;
1409
Table Op Msg_type Msg_text
1410
test.t1 repair note The storage engine for the table doesn't support repair
1411
# check layout success: 1
1414
# check TRUNCATE success: 1
1415
# check layout success: 1
1416
# End usability test (inc/partition_check.inc)
1423
f_charbig VARCHAR(1000)
1426
PARTITION BY RANGE(f_int1)
1427
(PARTITION parta VALUES LESS THAN (0),
1428
PARTITION partb VALUES LESS THAN (5),
1429
PARTITION partc VALUES LESS THAN (10),
1430
PARTITION partd VALUES LESS THAN (10 + 5),
1431
PARTITION parte VALUES LESS THAN (20),
1432
PARTITION partf VALUES LESS THAN (2147483646));
1433
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1434
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
1435
# Start usability test (inc/partition_check.inc)
1437
SHOW CREATE TABLE t1;
1439
t1 CREATE TABLE `t1` (
1440
`f_int1` int(11) DEFAULT NULL,
1441
`f_int2` int(11) DEFAULT NULL,
1442
`f_char1` char(20) DEFAULT NULL,
1443
`f_char2` char(20) DEFAULT NULL,
1444
`f_charbig` varchar(1000) DEFAULT NULL
1445
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
1448
$MYSQLTEST_VARDIR/master-data/test/t1.frm
1449
$MYSQLTEST_VARDIR/master-data/test/t1.par
1451
# check prerequisites-1 success: 1
1452
# check COUNT(*) success: 1
1453
# check MIN/MAX(f_int1) success: 1
1454
# check MIN/MAX(f_int2) success: 1
1455
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1456
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1457
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1458
WHERE f_int1 IN (2,3);
1459
# check prerequisites-3 success: 1
1460
DELETE FROM t1 WHERE f_charbig = 'delete me';
1461
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1462
# check read via f_int1 success: 1
1463
# check read via f_int2 success: 1
1465
# check multiple-1 success: 1
1466
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1468
# check multiple-2 success: 1
1469
INSERT INTO t1 SELECT * FROM t0_template
1470
WHERE MOD(f_int1,3) = 0;
1472
# check multiple-3 success: 1
1473
UPDATE t1 SET f_int1 = f_int1 + @max_row
1474
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1475
AND @max_row_div2 + @max_row_div4;
1477
# check multiple-4 success: 1
1479
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1480
AND @max_row_div2 + @max_row_div4 + @max_row;
1482
# check multiple-5 success: 1
1483
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1485
SET f_int1 = @cur_value , f_int2 = @cur_value,
1486
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1487
f_charbig = '#SINGLE#';
1489
# check single-1 success: 1
1490
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1492
SET f_int1 = @cur_value , f_int2 = @cur_value,
1493
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1494
f_charbig = '#SINGLE#';
1496
# check single-2 success: 1
1497
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1498
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1499
UPDATE t1 SET f_int1 = @cur_value2
1500
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1502
# check single-3 success: 1
1503
SET @cur_value1= -1;
1504
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1505
UPDATE t1 SET f_int1 = @cur_value1
1506
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1508
# check single-4 success: 1
1509
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1510
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1512
# check single-5 success: 1
1513
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1515
# check single-6 success: 1
1516
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1517
ERROR HY000: Table has no partition for value 2147483647
1518
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1519
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1520
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1521
f_charbig = '#NULL#';
1523
SET f_int1 = NULL , f_int2 = -@max_row,
1524
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1525
f_charbig = '#NULL#';
1526
# check null success: 1
1528
# check null-1 success: 1
1529
UPDATE t1 SET f_int1 = -@max_row
1530
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1531
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1533
# check null-2 success: 1
1534
UPDATE t1 SET f_int1 = NULL
1535
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1536
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1538
# check null-3 success: 1
1540
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1541
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1543
# check null-4 success: 1
1545
WHERE f_int1 = 0 AND f_int2 = 0
1546
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1547
AND f_charbig = '#NULL#';
1549
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1550
SELECT f_int1, f_int1, '', '', 'was inserted'
1551
FROM t0_template source_tab
1552
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1554
# check transactions-1 success: 1
1557
# check transactions-2 success: 1
1560
# check transactions-3 success: 1
1561
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1565
# check transactions-4 success: 1
1566
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1567
SELECT f_int1, f_int1, '', '', 'was inserted'
1568
FROM t0_template source_tab
1569
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1571
# check transactions-5 success: 1
1574
# check transactions-6 success: 1
1575
# INFO: Storage engine used for t1 seems to be transactional.
1578
# check transactions-7 success: 1
1579
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1581
SET @@session.sql_mode = 'traditional';
1582
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1583
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1584
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1585
'', '', 'was inserted' FROM t0_template
1586
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1587
ERROR 22012: Division by 0
1590
# check transactions-8 success: 1
1591
# INFO: Storage engine used for t1 seems to be able to revert
1592
# changes made by the failing statement.
1593
SET @@session.sql_mode = '';
1595
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1597
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1599
# check special-1 success: 1
1600
UPDATE t1 SET f_charbig = '';
1602
# check special-2 success: 1
1603
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1604
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1605
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1606
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1607
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1608
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1609
'just inserted' FROM t0_template
1610
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1611
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1613
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1614
f_charbig = 'updated by trigger'
1615
WHERE f_int1 = new.f_int1;
1617
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1618
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1619
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1621
# check trigger-1 success: 1
1623
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1624
f_int2 = CAST(f_char1 AS SIGNED INT),
1625
f_charbig = 'just inserted'
1626
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1628
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1629
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1630
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1631
'just inserted' FROM t0_template
1632
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1633
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1635
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1636
f_charbig = 'updated by trigger'
1637
WHERE f_int1 = new.f_int1;
1639
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1640
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1641
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1643
# check trigger-2 success: 1
1645
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1646
f_int2 = CAST(f_char1 AS SIGNED INT),
1647
f_charbig = 'just inserted'
1648
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1650
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1651
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1652
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1653
'just inserted' FROM t0_template
1654
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1655
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1657
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1658
f_charbig = 'updated by trigger'
1659
WHERE f_int1 = new.f_int1;
1661
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1662
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1664
# check trigger-3 success: 1
1666
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1667
f_int2 = CAST(f_char1 AS SIGNED INT),
1668
f_charbig = 'just inserted'
1669
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1671
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1672
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1673
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1674
'just inserted' FROM t0_template
1675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1676
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1678
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1679
f_charbig = 'updated by trigger'
1680
WHERE f_int1 = - old.f_int1;
1682
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1683
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1685
# check trigger-4 success: 1
1687
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1688
f_int2 = CAST(f_char1 AS SIGNED INT),
1689
f_charbig = 'just inserted'
1690
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1692
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1693
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1694
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1695
'just inserted' FROM t0_template
1696
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1697
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1699
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1700
f_charbig = 'updated by trigger'
1701
WHERE f_int1 = new.f_int1;
1703
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1704
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1706
# check trigger-5 success: 1
1708
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1709
f_int2 = CAST(f_char1 AS SIGNED INT),
1710
f_charbig = 'just inserted'
1711
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1713
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1714
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1715
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1716
'just inserted' FROM t0_template
1717
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1718
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1720
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1721
f_charbig = 'updated by trigger'
1722
WHERE f_int1 = - old.f_int1;
1724
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1725
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1727
# check trigger-6 success: 1
1729
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1730
f_int2 = CAST(f_char1 AS SIGNED INT),
1731
f_charbig = 'just inserted'
1732
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1734
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1735
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1736
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1737
'just inserted' FROM t0_template
1738
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1739
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1741
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1742
f_charbig = 'updated by trigger'
1743
WHERE f_int1 = - old.f_int1;
1746
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1748
# check trigger-7 success: 1
1750
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1751
f_int2 = CAST(f_char1 AS SIGNED INT),
1752
f_charbig = 'just inserted'
1753
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1755
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1756
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1757
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1758
'just inserted' FROM t0_template
1759
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1760
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1762
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1763
f_charbig = 'updated by trigger'
1764
WHERE f_int1 = - old.f_int1;
1767
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1769
# check trigger-8 success: 1
1771
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1772
f_int2 = CAST(f_char1 AS SIGNED INT),
1773
f_charbig = 'just inserted'
1774
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1776
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1778
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1779
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1781
SET new.f_int1 = old.f_int1 + @max_row,
1782
new.f_int2 = old.f_int2 - @max_row,
1783
new.f_charbig = '####updated per update trigger####';
1786
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1787
f_charbig = '####updated per update statement itself####';
1789
# check trigger-9 success: 1
1791
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1792
f_int2 = CAST(f_char1 AS SIGNED INT),
1793
f_charbig = CONCAT('===',f_char1,'===');
1794
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1796
SET new.f_int1 = new.f_int1 + @max_row,
1797
new.f_int2 = new.f_int2 - @max_row,
1798
new.f_charbig = '####updated per update trigger####';
1801
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1802
f_charbig = '####updated per update statement itself####';
1804
# check trigger-10 success: 1
1806
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1807
f_int2 = CAST(f_char1 AS SIGNED INT),
1808
f_charbig = CONCAT('===',f_char1,'===');
1809
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1811
SET new.f_int1 = @my_max1 + @counter,
1812
new.f_int2 = @my_min2 - @counter,
1813
new.f_charbig = '####updated per insert trigger####';
1814
SET @counter = @counter + 1;
1817
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1818
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1819
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1820
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1821
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1825
# check trigger-11 success: 1
1827
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1828
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1829
AND f_charbig = '####updated per insert trigger####';
1830
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1832
SET new.f_int1 = @my_max1 + @counter,
1833
new.f_int2 = @my_min2 - @counter,
1834
new.f_charbig = '####updated per insert trigger####';
1835
SET @counter = @counter + 1;
1838
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1839
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1840
SELECT CAST(f_int1 AS CHAR),
1841
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1842
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1846
# check trigger-12 success: 1
1848
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1849
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1850
AND f_charbig = '####updated per insert trigger####';
1852
Table Op Msg_type Msg_text
1853
test.t1 analyze note The storage engine for the table doesn't support analyze
1854
CHECK TABLE t1 EXTENDED;
1855
Table Op Msg_type Msg_text
1856
test.t1 check note The storage engine for the table doesn't support check
1857
CHECKSUM TABLE t1 EXTENDED;
1859
test.t1 <some_value>
1861
Table Op Msg_type Msg_text
1862
test.t1 optimize note The storage engine for the table doesn't support optimize
1863
# check layout success: 1
1864
REPAIR TABLE t1 EXTENDED;
1865
Table Op Msg_type Msg_text
1866
test.t1 repair note The storage engine for the table doesn't support repair
1867
# check layout success: 1
1870
# check TRUNCATE success: 1
1871
# check layout success: 1
1872
# End usability test (inc/partition_check.inc)
1879
f_charbig VARCHAR(1000)
1882
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
1883
(PARTITION parta VALUES LESS THAN (0),
1884
PARTITION partb VALUES LESS THAN (5),
1885
PARTITION partc VALUES LESS THAN (10),
1886
PARTITION partd VALUES LESS THAN (2147483646));
1887
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1888
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
1889
# Start usability test (inc/partition_check.inc)
1891
SHOW CREATE TABLE t1;
1893
t1 CREATE TABLE `t1` (
1894
`f_int1` int(11) DEFAULT NULL,
1895
`f_int2` int(11) DEFAULT NULL,
1896
`f_char1` char(20) DEFAULT NULL,
1897
`f_char2` char(20) DEFAULT NULL,
1898
`f_charbig` varchar(1000) DEFAULT NULL
1899
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
1902
$MYSQLTEST_VARDIR/master-data/test/t1.frm
1903
$MYSQLTEST_VARDIR/master-data/test/t1.par
1905
# check prerequisites-1 success: 1
1906
# check COUNT(*) success: 1
1907
# check MIN/MAX(f_int1) success: 1
1908
# check MIN/MAX(f_int2) success: 1
1909
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1910
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1911
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1912
WHERE f_int1 IN (2,3);
1913
# check prerequisites-3 success: 1
1914
DELETE FROM t1 WHERE f_charbig = 'delete me';
1915
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1916
# check read via f_int1 success: 1
1917
# check read via f_int2 success: 1
1919
# check multiple-1 success: 1
1920
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1922
# check multiple-2 success: 1
1923
INSERT INTO t1 SELECT * FROM t0_template
1924
WHERE MOD(f_int1,3) = 0;
1926
# check multiple-3 success: 1
1927
UPDATE t1 SET f_int1 = f_int1 + @max_row
1928
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1929
AND @max_row_div2 + @max_row_div4;
1931
# check multiple-4 success: 1
1933
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1934
AND @max_row_div2 + @max_row_div4 + @max_row;
1936
# check multiple-5 success: 1
1937
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1939
SET f_int1 = @cur_value , f_int2 = @cur_value,
1940
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1941
f_charbig = '#SINGLE#';
1943
# check single-1 success: 1
1944
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1946
SET f_int1 = @cur_value , f_int2 = @cur_value,
1947
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1948
f_charbig = '#SINGLE#';
1950
# check single-2 success: 1
1951
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1952
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1953
UPDATE t1 SET f_int1 = @cur_value2
1954
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1956
# check single-3 success: 1
1957
SET @cur_value1= -1;
1958
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1959
UPDATE t1 SET f_int1 = @cur_value1
1960
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1962
# check single-4 success: 1
1963
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1964
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1966
# check single-5 success: 1
1967
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1969
# check single-6 success: 1
1970
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1972
# check single-7 success: 1
1973
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1974
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1975
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1976
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1977
f_charbig = '#NULL#';
1979
SET f_int1 = NULL , f_int2 = -@max_row,
1980
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1981
f_charbig = '#NULL#';
1982
# check null success: 1
1984
# check null-1 success: 1
1985
UPDATE t1 SET f_int1 = -@max_row
1986
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1987
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1989
# check null-2 success: 1
1990
UPDATE t1 SET f_int1 = NULL
1991
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1992
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1994
# check null-3 success: 1
1996
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
1997
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
1999
# check null-4 success: 1
2001
WHERE f_int1 = 0 AND f_int2 = 0
2002
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2003
AND f_charbig = '#NULL#';
2005
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2006
SELECT f_int1, f_int1, '', '', 'was inserted'
2007
FROM t0_template source_tab
2008
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2010
# check transactions-1 success: 1
2013
# check transactions-2 success: 1
2016
# check transactions-3 success: 1
2017
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2021
# check transactions-4 success: 1
2022
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2023
SELECT f_int1, f_int1, '', '', 'was inserted'
2024
FROM t0_template source_tab
2025
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2027
# check transactions-5 success: 1
2030
# check transactions-6 success: 1
2031
# INFO: Storage engine used for t1 seems to be transactional.
2034
# check transactions-7 success: 1
2035
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2037
SET @@session.sql_mode = 'traditional';
2038
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2039
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2040
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2041
'', '', 'was inserted' FROM t0_template
2042
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2043
ERROR 22012: Division by 0
2046
# check transactions-8 success: 1
2047
# INFO: Storage engine used for t1 seems to be able to revert
2048
# changes made by the failing statement.
2049
SET @@session.sql_mode = '';
2051
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2053
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2055
# check special-1 success: 1
2056
UPDATE t1 SET f_charbig = '';
2058
# check special-2 success: 1
2059
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2060
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2061
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2062
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2063
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2064
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2065
'just inserted' FROM t0_template
2066
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2067
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2069
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2070
f_charbig = 'updated by trigger'
2071
WHERE f_int1 = new.f_int1;
2073
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2074
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2075
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2077
# check trigger-1 success: 1
2079
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2080
f_int2 = CAST(f_char1 AS SIGNED INT),
2081
f_charbig = 'just inserted'
2082
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2084
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2085
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2086
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2087
'just inserted' FROM t0_template
2088
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2089
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2091
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2092
f_charbig = 'updated by trigger'
2093
WHERE f_int1 = new.f_int1;
2095
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2096
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2097
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2099
# check trigger-2 success: 1
2101
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2102
f_int2 = CAST(f_char1 AS SIGNED INT),
2103
f_charbig = 'just inserted'
2104
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2106
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2107
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2108
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2109
'just inserted' FROM t0_template
2110
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2111
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2113
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2114
f_charbig = 'updated by trigger'
2115
WHERE f_int1 = new.f_int1;
2117
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2118
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2120
# check trigger-3 success: 1
2122
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2123
f_int2 = CAST(f_char1 AS SIGNED INT),
2124
f_charbig = 'just inserted'
2125
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2127
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2128
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2129
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2130
'just inserted' FROM t0_template
2131
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2132
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2134
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2135
f_charbig = 'updated by trigger'
2136
WHERE f_int1 = - old.f_int1;
2138
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2139
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2141
# check trigger-4 success: 1
2143
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2144
f_int2 = CAST(f_char1 AS SIGNED INT),
2145
f_charbig = 'just inserted'
2146
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2148
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2149
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2150
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2151
'just inserted' FROM t0_template
2152
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2153
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2155
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2156
f_charbig = 'updated by trigger'
2157
WHERE f_int1 = new.f_int1;
2159
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2160
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2162
# check trigger-5 success: 1
2164
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2165
f_int2 = CAST(f_char1 AS SIGNED INT),
2166
f_charbig = 'just inserted'
2167
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2169
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2170
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2171
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2172
'just inserted' FROM t0_template
2173
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2174
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2176
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2177
f_charbig = 'updated by trigger'
2178
WHERE f_int1 = - old.f_int1;
2180
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2181
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2183
# check trigger-6 success: 1
2185
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2186
f_int2 = CAST(f_char1 AS SIGNED INT),
2187
f_charbig = 'just inserted'
2188
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2190
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2191
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2192
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2193
'just inserted' FROM t0_template
2194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2195
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2197
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2198
f_charbig = 'updated by trigger'
2199
WHERE f_int1 = - old.f_int1;
2202
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2204
# check trigger-7 success: 1
2206
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2207
f_int2 = CAST(f_char1 AS SIGNED INT),
2208
f_charbig = 'just inserted'
2209
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2211
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2212
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2213
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2214
'just inserted' FROM t0_template
2215
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2216
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2218
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2219
f_charbig = 'updated by trigger'
2220
WHERE f_int1 = - old.f_int1;
2223
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2225
# check trigger-8 success: 1
2227
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2228
f_int2 = CAST(f_char1 AS SIGNED INT),
2229
f_charbig = 'just inserted'
2230
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2232
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2234
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2235
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2237
SET new.f_int1 = old.f_int1 + @max_row,
2238
new.f_int2 = old.f_int2 - @max_row,
2239
new.f_charbig = '####updated per update trigger####';
2242
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2243
f_charbig = '####updated per update statement itself####';
2245
# check trigger-9 success: 1
2247
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2248
f_int2 = CAST(f_char1 AS SIGNED INT),
2249
f_charbig = CONCAT('===',f_char1,'===');
2250
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2252
SET new.f_int1 = new.f_int1 + @max_row,
2253
new.f_int2 = new.f_int2 - @max_row,
2254
new.f_charbig = '####updated per update trigger####';
2257
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2258
f_charbig = '####updated per update statement itself####';
2260
# check trigger-10 success: 1
2262
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2263
f_int2 = CAST(f_char1 AS SIGNED INT),
2264
f_charbig = CONCAT('===',f_char1,'===');
2265
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2267
SET new.f_int1 = @my_max1 + @counter,
2268
new.f_int2 = @my_min2 - @counter,
2269
new.f_charbig = '####updated per insert trigger####';
2270
SET @counter = @counter + 1;
2273
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2274
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2275
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2276
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2281
# check trigger-11 success: 1
2283
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2284
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2285
AND f_charbig = '####updated per insert trigger####';
2286
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2288
SET new.f_int1 = @my_max1 + @counter,
2289
new.f_int2 = @my_min2 - @counter,
2290
new.f_charbig = '####updated per insert trigger####';
2291
SET @counter = @counter + 1;
2294
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2295
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2296
SELECT CAST(f_int1 AS CHAR),
2297
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2298
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2302
# check trigger-12 success: 1
2304
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2305
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2306
AND f_charbig = '####updated per insert trigger####';
2308
Table Op Msg_type Msg_text
2309
test.t1 analyze note The storage engine for the table doesn't support analyze
2310
CHECK TABLE t1 EXTENDED;
2311
Table Op Msg_type Msg_text
2312
test.t1 check note The storage engine for the table doesn't support check
2313
CHECKSUM TABLE t1 EXTENDED;
2315
test.t1 <some_value>
2317
Table Op Msg_type Msg_text
2318
test.t1 optimize note The storage engine for the table doesn't support optimize
2319
# check layout success: 1
2320
REPAIR TABLE t1 EXTENDED;
2321
Table Op Msg_type Msg_text
2322
test.t1 repair note The storage engine for the table doesn't support repair
2323
# check layout success: 1
2326
# check TRUNCATE success: 1
2327
# check layout success: 1
2328
# End usability test (inc/partition_check.inc)
2335
f_charbig VARCHAR(1000)
2338
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
2339
(PARTITION part1 VALUES LESS THAN (0)
2340
(SUBPARTITION subpart11, SUBPARTITION subpart12),
2341
PARTITION part2 VALUES LESS THAN (5)
2342
(SUBPARTITION subpart21, SUBPARTITION subpart22),
2343
PARTITION part3 VALUES LESS THAN (10)
2344
(SUBPARTITION subpart31, SUBPARTITION subpart32),
2345
PARTITION part4 VALUES LESS THAN (2147483646)
2346
(SUBPARTITION subpart41, SUBPARTITION subpart42));
2347
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2348
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
2349
# Start usability test (inc/partition_check.inc)
2351
SHOW CREATE TABLE t1;
2353
t1 CREATE TABLE `t1` (
2354
`f_int1` int(11) DEFAULT NULL,
2355
`f_int2` int(11) DEFAULT NULL,
2356
`f_char1` char(20) DEFAULT NULL,
2357
`f_char2` char(20) DEFAULT NULL,
2358
`f_charbig` varchar(1000) DEFAULT NULL
2359
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
2362
$MYSQLTEST_VARDIR/master-data/test/t1.frm
2363
$MYSQLTEST_VARDIR/master-data/test/t1.par
2365
# check prerequisites-1 success: 1
2366
# check COUNT(*) success: 1
2367
# check MIN/MAX(f_int1) success: 1
2368
# check MIN/MAX(f_int2) success: 1
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), 'delete me' FROM t0_template
2372
WHERE f_int1 IN (2,3);
2373
# check prerequisites-3 success: 1
2374
DELETE FROM t1 WHERE f_charbig = 'delete me';
2375
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2376
# check read via f_int1 success: 1
2377
# check read via f_int2 success: 1
2379
# check multiple-1 success: 1
2380
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2382
# check multiple-2 success: 1
2383
INSERT INTO t1 SELECT * FROM t0_template
2384
WHERE MOD(f_int1,3) = 0;
2386
# check multiple-3 success: 1
2387
UPDATE t1 SET f_int1 = f_int1 + @max_row
2388
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2389
AND @max_row_div2 + @max_row_div4;
2391
# check multiple-4 success: 1
2393
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2394
AND @max_row_div2 + @max_row_div4 + @max_row;
2396
# check multiple-5 success: 1
2397
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2399
SET f_int1 = @cur_value , f_int2 = @cur_value,
2400
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2401
f_charbig = '#SINGLE#';
2403
# check single-1 success: 1
2404
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2406
SET f_int1 = @cur_value , f_int2 = @cur_value,
2407
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2408
f_charbig = '#SINGLE#';
2410
# check single-2 success: 1
2411
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2412
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2413
UPDATE t1 SET f_int1 = @cur_value2
2414
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2416
# check single-3 success: 1
2417
SET @cur_value1= -1;
2418
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2419
UPDATE t1 SET f_int1 = @cur_value1
2420
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2422
# check single-4 success: 1
2423
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2424
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2426
# check single-5 success: 1
2427
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2429
# check single-6 success: 1
2430
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2431
ERROR HY000: Table has no partition for value 2147483647
2432
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2433
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2434
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2435
f_charbig = '#NULL#';
2437
SET f_int1 = NULL , f_int2 = -@max_row,
2438
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2439
f_charbig = '#NULL#';
2440
# check null success: 1
2442
# check null-1 success: 1
2443
UPDATE t1 SET f_int1 = -@max_row
2444
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2445
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2447
# check null-2 success: 1
2448
UPDATE t1 SET f_int1 = NULL
2449
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2450
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2452
# check null-3 success: 1
2454
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2455
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2457
# check null-4 success: 1
2459
WHERE f_int1 = 0 AND f_int2 = 0
2460
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2461
AND f_charbig = '#NULL#';
2463
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2464
SELECT f_int1, f_int1, '', '', 'was inserted'
2465
FROM t0_template source_tab
2466
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2468
# check transactions-1 success: 1
2471
# check transactions-2 success: 1
2474
# check transactions-3 success: 1
2475
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2479
# check transactions-4 success: 1
2480
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2481
SELECT f_int1, f_int1, '', '', 'was inserted'
2482
FROM t0_template source_tab
2483
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2485
# check transactions-5 success: 1
2488
# check transactions-6 success: 1
2489
# INFO: Storage engine used for t1 seems to be transactional.
2492
# check transactions-7 success: 1
2493
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2495
SET @@session.sql_mode = 'traditional';
2496
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2497
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2498
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2499
'', '', 'was inserted' FROM t0_template
2500
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2501
ERROR 22012: Division by 0
2504
# check transactions-8 success: 1
2505
# INFO: Storage engine used for t1 seems to be able to revert
2506
# changes made by the failing statement.
2507
SET @@session.sql_mode = '';
2509
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2511
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2513
# check special-1 success: 1
2514
UPDATE t1 SET f_charbig = '';
2516
# check special-2 success: 1
2517
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2518
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2519
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2520
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2521
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2522
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2523
'just inserted' FROM t0_template
2524
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2525
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2527
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2528
f_charbig = 'updated by trigger'
2529
WHERE f_int1 = new.f_int1;
2531
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2532
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2533
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2535
# check trigger-1 success: 1
2537
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2538
f_int2 = CAST(f_char1 AS SIGNED INT),
2539
f_charbig = 'just inserted'
2540
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2542
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2543
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2544
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2545
'just inserted' FROM t0_template
2546
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2547
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2549
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2550
f_charbig = 'updated by trigger'
2551
WHERE f_int1 = new.f_int1;
2553
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2554
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2555
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2557
# check trigger-2 success: 1
2559
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2560
f_int2 = CAST(f_char1 AS SIGNED INT),
2561
f_charbig = 'just inserted'
2562
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2564
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2565
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2566
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2567
'just inserted' FROM t0_template
2568
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2569
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2571
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2572
f_charbig = 'updated by trigger'
2573
WHERE f_int1 = new.f_int1;
2575
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2576
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2578
# check trigger-3 success: 1
2580
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2581
f_int2 = CAST(f_char1 AS SIGNED INT),
2582
f_charbig = 'just inserted'
2583
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2585
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2586
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2587
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2588
'just inserted' FROM t0_template
2589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2590
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2592
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2593
f_charbig = 'updated by trigger'
2594
WHERE f_int1 = - old.f_int1;
2596
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2597
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2599
# check trigger-4 success: 1
2601
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2602
f_int2 = CAST(f_char1 AS SIGNED INT),
2603
f_charbig = 'just inserted'
2604
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2606
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2607
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2608
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2609
'just inserted' FROM t0_template
2610
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2611
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2613
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2614
f_charbig = 'updated by trigger'
2615
WHERE f_int1 = new.f_int1;
2617
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2618
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2620
# check trigger-5 success: 1
2622
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2623
f_int2 = CAST(f_char1 AS SIGNED INT),
2624
f_charbig = 'just inserted'
2625
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2627
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2628
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2629
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2630
'just inserted' FROM t0_template
2631
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2632
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2634
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2635
f_charbig = 'updated by trigger'
2636
WHERE f_int1 = - old.f_int1;
2638
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2639
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2641
# check trigger-6 success: 1
2643
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2644
f_int2 = CAST(f_char1 AS SIGNED INT),
2645
f_charbig = 'just inserted'
2646
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2648
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2649
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2650
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2651
'just inserted' FROM t0_template
2652
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2653
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2655
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2656
f_charbig = 'updated by trigger'
2657
WHERE f_int1 = - old.f_int1;
2660
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2662
# check trigger-7 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 DELETE 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 = - old.f_int1;
2681
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2683
# check trigger-8 success: 1
2685
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2686
f_int2 = CAST(f_char1 AS SIGNED INT),
2687
f_charbig = 'just inserted'
2688
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2690
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2692
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2693
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2695
SET new.f_int1 = old.f_int1 + @max_row,
2696
new.f_int2 = old.f_int2 - @max_row,
2697
new.f_charbig = '####updated per update trigger####';
2700
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2701
f_charbig = '####updated per update statement itself####';
2703
# check trigger-9 success: 1
2705
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2706
f_int2 = CAST(f_char1 AS SIGNED INT),
2707
f_charbig = CONCAT('===',f_char1,'===');
2708
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2710
SET new.f_int1 = new.f_int1 + @max_row,
2711
new.f_int2 = new.f_int2 - @max_row,
2712
new.f_charbig = '####updated per update trigger####';
2715
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2716
f_charbig = '####updated per update statement itself####';
2718
# check trigger-10 success: 1
2720
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2721
f_int2 = CAST(f_char1 AS SIGNED INT),
2722
f_charbig = CONCAT('===',f_char1,'===');
2723
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2725
SET new.f_int1 = @my_max1 + @counter,
2726
new.f_int2 = @my_min2 - @counter,
2727
new.f_charbig = '####updated per insert trigger####';
2728
SET @counter = @counter + 1;
2731
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2732
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2733
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2734
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2735
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2739
# check trigger-11 success: 1
2741
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2742
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2743
AND f_charbig = '####updated per insert trigger####';
2744
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2746
SET new.f_int1 = @my_max1 + @counter,
2747
new.f_int2 = @my_min2 - @counter,
2748
new.f_charbig = '####updated per insert trigger####';
2749
SET @counter = @counter + 1;
2752
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2753
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2754
SELECT CAST(f_int1 AS CHAR),
2755
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2756
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2760
# check trigger-12 success: 1
2762
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2763
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2764
AND f_charbig = '####updated per insert trigger####';
2766
Table Op Msg_type Msg_text
2767
test.t1 analyze note The storage engine for the table doesn't support analyze
2768
CHECK TABLE t1 EXTENDED;
2769
Table Op Msg_type Msg_text
2770
test.t1 check note The storage engine for the table doesn't support check
2771
CHECKSUM TABLE t1 EXTENDED;
2773
test.t1 <some_value>
2775
Table Op Msg_type Msg_text
2776
test.t1 optimize note The storage engine for the table doesn't support optimize
2777
# check layout success: 1
2778
REPAIR TABLE t1 EXTENDED;
2779
Table Op Msg_type Msg_text
2780
test.t1 repair note The storage engine for the table doesn't support repair
2781
# check layout success: 1
2784
# check TRUNCATE success: 1
2785
# check layout success: 1
2786
# End usability test (inc/partition_check.inc)
2793
f_charbig VARCHAR(1000)
2796
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
2797
(PARTITION part1 VALUES IN (0)
2800
PARTITION part2 VALUES IN (1)
2803
PARTITION part3 VALUES IN (2)
2806
PARTITION part4 VALUES IN (NULL)
2808
SUBPARTITION sp42));
2809
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2810
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
2811
# Start usability test (inc/partition_check.inc)
2813
SHOW CREATE TABLE t1;
2815
t1 CREATE TABLE `t1` (
2816
`f_int1` int(11) DEFAULT NULL,
2817
`f_int2` int(11) DEFAULT NULL,
2818
`f_char1` char(20) DEFAULT NULL,
2819
`f_char2` char(20) DEFAULT NULL,
2820
`f_charbig` varchar(1000) DEFAULT NULL
2821
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
2824
$MYSQLTEST_VARDIR/master-data/test/t1.frm
2825
$MYSQLTEST_VARDIR/master-data/test/t1.par
2827
# check prerequisites-1 success: 1
2828
# check COUNT(*) success: 1
2829
# check MIN/MAX(f_int1) success: 1
2830
# check MIN/MAX(f_int2) success: 1
2831
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2832
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2833
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2834
WHERE f_int1 IN (2,3);
2835
# check prerequisites-3 success: 1
2836
DELETE FROM t1 WHERE f_charbig = 'delete me';
2837
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2838
# check read via f_int1 success: 1
2839
# check read via f_int2 success: 1
2841
# check multiple-1 success: 1
2842
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2844
# check multiple-2 success: 1
2845
INSERT INTO t1 SELECT * FROM t0_template
2846
WHERE MOD(f_int1,3) = 0;
2848
# check multiple-3 success: 1
2849
UPDATE t1 SET f_int1 = f_int1 + @max_row
2850
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2851
AND @max_row_div2 + @max_row_div4;
2853
# check multiple-4 success: 1
2855
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2856
AND @max_row_div2 + @max_row_div4 + @max_row;
2858
# check multiple-5 success: 1
2859
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2861
SET f_int1 = @cur_value , f_int2 = @cur_value,
2862
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2863
f_charbig = '#SINGLE#';
2865
# check single-1 success: 1
2866
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2868
SET f_int1 = @cur_value , f_int2 = @cur_value,
2869
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2870
f_charbig = '#SINGLE#';
2872
# check single-2 success: 1
2873
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2874
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2875
UPDATE t1 SET f_int1 = @cur_value2
2876
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2878
# check single-3 success: 1
2879
SET @cur_value1= -1;
2880
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2881
UPDATE t1 SET f_int1 = @cur_value1
2882
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2884
# check single-4 success: 1
2885
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2886
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2888
# check single-5 success: 1
2889
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2891
# check single-6 success: 1
2892
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2894
# check single-7 success: 1
2895
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2896
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2897
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2898
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2899
f_charbig = '#NULL#';
2901
SET f_int1 = NULL , f_int2 = -@max_row,
2902
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2903
f_charbig = '#NULL#';
2904
# check null success: 1
2906
# check null-1 success: 1
2907
UPDATE t1 SET f_int1 = -@max_row
2908
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2909
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2911
# check null-2 success: 1
2912
UPDATE t1 SET f_int1 = NULL
2913
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2914
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2916
# check null-3 success: 1
2918
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
2919
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
2921
# check null-4 success: 1
2923
WHERE f_int1 = 0 AND f_int2 = 0
2924
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2925
AND f_charbig = '#NULL#';
2927
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2928
SELECT f_int1, f_int1, '', '', 'was inserted'
2929
FROM t0_template source_tab
2930
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2932
# check transactions-1 success: 1
2935
# check transactions-2 success: 1
2938
# check transactions-3 success: 1
2939
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2943
# check transactions-4 success: 1
2944
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2945
SELECT f_int1, f_int1, '', '', 'was inserted'
2946
FROM t0_template source_tab
2947
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2949
# check transactions-5 success: 1
2952
# check transactions-6 success: 1
2953
# INFO: Storage engine used for t1 seems to be transactional.
2956
# check transactions-7 success: 1
2957
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2959
SET @@session.sql_mode = 'traditional';
2960
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2961
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2962
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2963
'', '', 'was inserted' FROM t0_template
2964
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2965
ERROR 22012: Division by 0
2968
# check transactions-8 success: 1
2969
# INFO: Storage engine used for t1 seems to be able to revert
2970
# changes made by the failing statement.
2971
SET @@session.sql_mode = '';
2973
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2975
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2977
# check special-1 success: 1
2978
UPDATE t1 SET f_charbig = '';
2980
# check special-2 success: 1
2981
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2982
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2983
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2984
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2985
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2986
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2987
'just inserted' FROM t0_template
2988
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2989
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2991
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2992
f_charbig = 'updated by trigger'
2993
WHERE f_int1 = new.f_int1;
2995
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2996
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2997
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2999
# check trigger-1 success: 1
3001
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3002
f_int2 = CAST(f_char1 AS SIGNED INT),
3003
f_charbig = 'just inserted'
3004
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3006
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3007
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3008
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3009
'just inserted' FROM t0_template
3010
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3011
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3013
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3014
f_charbig = 'updated by trigger'
3015
WHERE f_int1 = new.f_int1;
3017
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3018
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3019
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3021
# check trigger-2 success: 1
3023
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3024
f_int2 = CAST(f_char1 AS SIGNED INT),
3025
f_charbig = 'just inserted'
3026
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3028
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3029
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3030
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3031
'just inserted' FROM t0_template
3032
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3033
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3035
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3036
f_charbig = 'updated by trigger'
3037
WHERE f_int1 = new.f_int1;
3039
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3040
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3042
# check trigger-3 success: 1
3044
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3045
f_int2 = CAST(f_char1 AS SIGNED INT),
3046
f_charbig = 'just inserted'
3047
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3049
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3050
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3051
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3052
'just inserted' FROM t0_template
3053
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3054
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3056
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3057
f_charbig = 'updated by trigger'
3058
WHERE f_int1 = - old.f_int1;
3060
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3061
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3063
# check trigger-4 success: 1
3065
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3066
f_int2 = CAST(f_char1 AS SIGNED INT),
3067
f_charbig = 'just inserted'
3068
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3070
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3071
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3072
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3073
'just inserted' FROM t0_template
3074
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3075
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3077
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3078
f_charbig = 'updated by trigger'
3079
WHERE f_int1 = new.f_int1;
3081
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3082
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3084
# check trigger-5 success: 1
3086
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3087
f_int2 = CAST(f_char1 AS SIGNED INT),
3088
f_charbig = 'just inserted'
3089
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3091
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3092
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3093
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3094
'just inserted' FROM t0_template
3095
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3096
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3098
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3099
f_charbig = 'updated by trigger'
3100
WHERE f_int1 = - old.f_int1;
3102
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3103
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3105
# check trigger-6 success: 1
3107
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3108
f_int2 = CAST(f_char1 AS SIGNED INT),
3109
f_charbig = 'just inserted'
3110
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3112
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3113
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3114
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3115
'just inserted' FROM t0_template
3116
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3117
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3119
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3120
f_charbig = 'updated by trigger'
3121
WHERE f_int1 = - old.f_int1;
3124
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3126
# check trigger-7 success: 1
3128
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3129
f_int2 = CAST(f_char1 AS SIGNED INT),
3130
f_charbig = 'just inserted'
3131
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3133
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3134
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3135
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3136
'just inserted' FROM t0_template
3137
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3138
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3140
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3141
f_charbig = 'updated by trigger'
3142
WHERE f_int1 = - old.f_int1;
3145
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3147
# check trigger-8 success: 1
3149
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3150
f_int2 = CAST(f_char1 AS SIGNED INT),
3151
f_charbig = 'just inserted'
3152
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3154
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3156
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3157
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3159
SET new.f_int1 = old.f_int1 + @max_row,
3160
new.f_int2 = old.f_int2 - @max_row,
3161
new.f_charbig = '####updated per update trigger####';
3164
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3165
f_charbig = '####updated per update statement itself####';
3167
# check trigger-9 success: 1
3169
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3170
f_int2 = CAST(f_char1 AS SIGNED INT),
3171
f_charbig = CONCAT('===',f_char1,'===');
3172
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3174
SET new.f_int1 = new.f_int1 + @max_row,
3175
new.f_int2 = new.f_int2 - @max_row,
3176
new.f_charbig = '####updated per update trigger####';
3179
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3180
f_charbig = '####updated per update statement itself####';
3182
# check trigger-10 success: 1
3184
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3185
f_int2 = CAST(f_char1 AS SIGNED INT),
3186
f_charbig = CONCAT('===',f_char1,'===');
3187
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3189
SET new.f_int1 = @my_max1 + @counter,
3190
new.f_int2 = @my_min2 - @counter,
3191
new.f_charbig = '####updated per insert trigger####';
3192
SET @counter = @counter + 1;
3195
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3196
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3197
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3198
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3199
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3203
# check trigger-11 success: 1
3205
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3206
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3207
AND f_charbig = '####updated per insert trigger####';
3208
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3210
SET new.f_int1 = @my_max1 + @counter,
3211
new.f_int2 = @my_min2 - @counter,
3212
new.f_charbig = '####updated per insert trigger####';
3213
SET @counter = @counter + 1;
3216
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3217
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3218
SELECT CAST(f_int1 AS CHAR),
3219
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3220
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3224
# check trigger-12 success: 1
3226
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3227
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3228
AND f_charbig = '####updated per insert trigger####';
3230
Table Op Msg_type Msg_text
3231
test.t1 analyze note The storage engine for the table doesn't support analyze
3232
CHECK TABLE t1 EXTENDED;
3233
Table Op Msg_type Msg_text
3234
test.t1 check note The storage engine for the table doesn't support check
3235
CHECKSUM TABLE t1 EXTENDED;
3237
test.t1 <some_value>
3239
Table Op Msg_type Msg_text
3240
test.t1 optimize note The storage engine for the table doesn't support optimize
3241
# check layout success: 1
3242
REPAIR TABLE t1 EXTENDED;
3243
Table Op Msg_type Msg_text
3244
test.t1 repair note The storage engine for the table doesn't support repair
3245
# check layout success: 1
3248
# check TRUNCATE success: 1
3249
# check layout success: 1
3250
# End usability test (inc/partition_check.inc)
3257
f_charbig VARCHAR(1000)
3260
PARTITION BY LIST(ABS(MOD(f_int1,2)))
3261
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
3262
(PARTITION part1 VALUES IN (0),
3263
PARTITION part2 VALUES IN (1),
3264
PARTITION part3 VALUES IN (NULL));
3265
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3266
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
3267
# Start usability test (inc/partition_check.inc)
3269
SHOW CREATE TABLE t1;
3271
t1 CREATE TABLE `t1` (
3272
`f_int1` int(11) DEFAULT NULL,
3273
`f_int2` int(11) DEFAULT NULL,
3274
`f_char1` char(20) DEFAULT NULL,
3275
`f_char2` char(20) DEFAULT NULL,
3276
`f_charbig` varchar(1000) DEFAULT NULL
3277
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
3280
$MYSQLTEST_VARDIR/master-data/test/t1.frm
3281
$MYSQLTEST_VARDIR/master-data/test/t1.par
3283
# check prerequisites-1 success: 1
3284
# check COUNT(*) success: 1
3285
# check MIN/MAX(f_int1) success: 1
3286
# check MIN/MAX(f_int2) success: 1
3287
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3288
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3289
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3290
WHERE f_int1 IN (2,3);
3291
# check prerequisites-3 success: 1
3292
DELETE FROM t1 WHERE f_charbig = 'delete me';
3293
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3294
# check read via f_int1 success: 1
3295
# check read via f_int2 success: 1
3297
# check multiple-1 success: 1
3298
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3300
# check multiple-2 success: 1
3301
INSERT INTO t1 SELECT * FROM t0_template
3302
WHERE MOD(f_int1,3) = 0;
3304
# check multiple-3 success: 1
3305
UPDATE t1 SET f_int1 = f_int1 + @max_row
3306
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3307
AND @max_row_div2 + @max_row_div4;
3309
# check multiple-4 success: 1
3311
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3312
AND @max_row_div2 + @max_row_div4 + @max_row;
3314
# check multiple-5 success: 1
3315
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3317
SET f_int1 = @cur_value , f_int2 = @cur_value,
3318
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3319
f_charbig = '#SINGLE#';
3321
# check single-1 success: 1
3322
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3324
SET f_int1 = @cur_value , f_int2 = @cur_value,
3325
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3326
f_charbig = '#SINGLE#';
3328
# check single-2 success: 1
3329
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3330
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3331
UPDATE t1 SET f_int1 = @cur_value2
3332
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3334
# check single-3 success: 1
3335
SET @cur_value1= -1;
3336
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3337
UPDATE t1 SET f_int1 = @cur_value1
3338
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3340
# check single-4 success: 1
3341
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3342
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3344
# check single-5 success: 1
3345
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3347
# check single-6 success: 1
3348
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3350
# check single-7 success: 1
3351
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3352
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3353
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3354
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3355
f_charbig = '#NULL#';
3357
SET f_int1 = NULL , f_int2 = -@max_row,
3358
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3359
f_charbig = '#NULL#';
3360
# check null success: 1
3362
# check null-1 success: 1
3363
UPDATE t1 SET f_int1 = -@max_row
3364
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3365
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3367
# check null-2 success: 1
3368
UPDATE t1 SET f_int1 = NULL
3369
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3370
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3372
# check null-3 success: 1
3374
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3375
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3377
# check null-4 success: 1
3379
WHERE f_int1 = 0 AND f_int2 = 0
3380
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3381
AND f_charbig = '#NULL#';
3383
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3384
SELECT f_int1, f_int1, '', '', 'was inserted'
3385
FROM t0_template source_tab
3386
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3388
# check transactions-1 success: 1
3391
# check transactions-2 success: 1
3394
# check transactions-3 success: 1
3395
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3399
# check transactions-4 success: 1
3400
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3401
SELECT f_int1, f_int1, '', '', 'was inserted'
3402
FROM t0_template source_tab
3403
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3405
# check transactions-5 success: 1
3408
# check transactions-6 success: 1
3409
# INFO: Storage engine used for t1 seems to be transactional.
3412
# check transactions-7 success: 1
3413
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3415
SET @@session.sql_mode = 'traditional';
3416
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3417
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3418
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3419
'', '', 'was inserted' FROM t0_template
3420
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3421
ERROR 22012: Division by 0
3424
# check transactions-8 success: 1
3425
# INFO: Storage engine used for t1 seems to be able to revert
3426
# changes made by the failing statement.
3427
SET @@session.sql_mode = '';
3429
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3431
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3433
# check special-1 success: 1
3434
UPDATE t1 SET f_charbig = '';
3436
# check special-2 success: 1
3437
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3438
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3439
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3440
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3441
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3442
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3443
'just inserted' FROM t0_template
3444
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3445
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3447
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3448
f_charbig = 'updated by trigger'
3449
WHERE f_int1 = new.f_int1;
3451
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3452
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3453
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3455
# check trigger-1 success: 1
3457
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3458
f_int2 = CAST(f_char1 AS SIGNED INT),
3459
f_charbig = 'just inserted'
3460
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3462
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3463
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3464
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3465
'just inserted' FROM t0_template
3466
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3467
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3469
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3470
f_charbig = 'updated by trigger'
3471
WHERE f_int1 = new.f_int1;
3473
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3474
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3475
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3477
# check trigger-2 success: 1
3479
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3480
f_int2 = CAST(f_char1 AS SIGNED INT),
3481
f_charbig = 'just inserted'
3482
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3484
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3485
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3486
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3487
'just inserted' FROM t0_template
3488
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3489
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3491
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3492
f_charbig = 'updated by trigger'
3493
WHERE f_int1 = new.f_int1;
3495
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3496
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3498
# check trigger-3 success: 1
3500
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3501
f_int2 = CAST(f_char1 AS SIGNED INT),
3502
f_charbig = 'just inserted'
3503
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3505
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3506
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3507
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3508
'just inserted' FROM t0_template
3509
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3510
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3512
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3513
f_charbig = 'updated by trigger'
3514
WHERE f_int1 = - old.f_int1;
3516
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3517
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3519
# check trigger-4 success: 1
3521
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3522
f_int2 = CAST(f_char1 AS SIGNED INT),
3523
f_charbig = 'just inserted'
3524
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3526
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3527
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3528
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3529
'just inserted' FROM t0_template
3530
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3531
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3533
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3534
f_charbig = 'updated by trigger'
3535
WHERE f_int1 = new.f_int1;
3537
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3538
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3540
# check trigger-5 success: 1
3542
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3543
f_int2 = CAST(f_char1 AS SIGNED INT),
3544
f_charbig = 'just inserted'
3545
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3547
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3548
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3549
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3550
'just inserted' FROM t0_template
3551
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3552
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3554
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3555
f_charbig = 'updated by trigger'
3556
WHERE f_int1 = - old.f_int1;
3558
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3559
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3561
# check trigger-6 success: 1
3563
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3564
f_int2 = CAST(f_char1 AS SIGNED INT),
3565
f_charbig = 'just inserted'
3566
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3568
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3569
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3570
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3571
'just inserted' FROM t0_template
3572
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3573
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3575
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3576
f_charbig = 'updated by trigger'
3577
WHERE f_int1 = - old.f_int1;
3580
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3582
# check trigger-7 success: 1
3584
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3585
f_int2 = CAST(f_char1 AS SIGNED INT),
3586
f_charbig = 'just inserted'
3587
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3589
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3590
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3591
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3592
'just inserted' FROM t0_template
3593
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3594
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3596
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3597
f_charbig = 'updated by trigger'
3598
WHERE f_int1 = - old.f_int1;
3601
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3603
# check trigger-8 success: 1
3605
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3606
f_int2 = CAST(f_char1 AS SIGNED INT),
3607
f_charbig = 'just inserted'
3608
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3610
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3612
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3613
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3615
SET new.f_int1 = old.f_int1 + @max_row,
3616
new.f_int2 = old.f_int2 - @max_row,
3617
new.f_charbig = '####updated per update trigger####';
3620
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3621
f_charbig = '####updated per update statement itself####';
3623
# check trigger-9 success: 1
3625
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3626
f_int2 = CAST(f_char1 AS SIGNED INT),
3627
f_charbig = CONCAT('===',f_char1,'===');
3628
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3630
SET new.f_int1 = new.f_int1 + @max_row,
3631
new.f_int2 = new.f_int2 - @max_row,
3632
new.f_charbig = '####updated per update trigger####';
3635
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3636
f_charbig = '####updated per update statement itself####';
3638
# check trigger-10 success: 1
3640
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3641
f_int2 = CAST(f_char1 AS SIGNED INT),
3642
f_charbig = CONCAT('===',f_char1,'===');
3643
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3645
SET new.f_int1 = @my_max1 + @counter,
3646
new.f_int2 = @my_min2 - @counter,
3647
new.f_charbig = '####updated per insert trigger####';
3648
SET @counter = @counter + 1;
3651
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3652
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3653
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3654
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3655
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3659
# check trigger-11 success: 1
3661
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3662
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3663
AND f_charbig = '####updated per insert trigger####';
3664
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3666
SET new.f_int1 = @my_max1 + @counter,
3667
new.f_int2 = @my_min2 - @counter,
3668
new.f_charbig = '####updated per insert trigger####';
3669
SET @counter = @counter + 1;
3672
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3673
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3674
SELECT CAST(f_int1 AS CHAR),
3675
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3676
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3680
# check trigger-12 success: 1
3682
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3683
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3684
AND f_charbig = '####updated per insert trigger####';
3686
Table Op Msg_type Msg_text
3687
test.t1 analyze note The storage engine for the table doesn't support analyze
3688
CHECK TABLE t1 EXTENDED;
3689
Table Op Msg_type Msg_text
3690
test.t1 check note The storage engine for the table doesn't support check
3691
CHECKSUM TABLE t1 EXTENDED;
3693
test.t1 <some_value>
3695
Table Op Msg_type Msg_text
3696
test.t1 optimize note The storage engine for the table doesn't support optimize
3697
# check layout success: 1
3698
REPAIR TABLE t1 EXTENDED;
3699
Table Op Msg_type Msg_text
3700
test.t1 repair note The storage engine for the table doesn't support repair
3701
# check layout success: 1
3704
# check TRUNCATE success: 1
3705
# check layout success: 1
3706
# End usability test (inc/partition_check.inc)
3708
# 1.2 The partitioning function contains two columns.
3709
DROP TABLE IF EXISTS t1;
3715
f_charbig VARCHAR(1000)
3718
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
3719
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3720
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
3721
# Start usability test (inc/partition_check.inc)
3723
SHOW CREATE TABLE t1;
3725
t1 CREATE TABLE `t1` (
3726
`f_int1` int(11) DEFAULT NULL,
3727
`f_int2` int(11) DEFAULT NULL,
3728
`f_char1` char(20) DEFAULT NULL,
3729
`f_char2` char(20) DEFAULT NULL,
3730
`f_charbig` varchar(1000) DEFAULT NULL
3731
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
3734
$MYSQLTEST_VARDIR/master-data/test/t1.frm
3735
$MYSQLTEST_VARDIR/master-data/test/t1.par
3737
# check prerequisites-1 success: 1
3738
# check COUNT(*) success: 1
3739
# check MIN/MAX(f_int1) success: 1
3740
# check MIN/MAX(f_int2) success: 1
3741
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3742
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3743
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3744
WHERE f_int1 IN (2,3);
3745
# check prerequisites-3 success: 1
3746
DELETE FROM t1 WHERE f_charbig = 'delete me';
3747
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3748
# check read via f_int1 success: 1
3749
# check read via f_int2 success: 1
3751
# check multiple-1 success: 1
3752
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3754
# check multiple-2 success: 1
3755
INSERT INTO t1 SELECT * FROM t0_template
3756
WHERE MOD(f_int1,3) = 0;
3758
# check multiple-3 success: 1
3759
UPDATE t1 SET f_int1 = f_int1 + @max_row
3760
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3761
AND @max_row_div2 + @max_row_div4;
3763
# check multiple-4 success: 1
3765
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3766
AND @max_row_div2 + @max_row_div4 + @max_row;
3768
# check multiple-5 success: 1
3769
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3771
SET f_int1 = @cur_value , f_int2 = @cur_value,
3772
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3773
f_charbig = '#SINGLE#';
3775
# check single-1 success: 1
3776
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3778
SET f_int1 = @cur_value , f_int2 = @cur_value,
3779
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3780
f_charbig = '#SINGLE#';
3782
# check single-2 success: 1
3783
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3784
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3785
UPDATE t1 SET f_int1 = @cur_value2
3786
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3788
# check single-3 success: 1
3789
SET @cur_value1= -1;
3790
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3791
UPDATE t1 SET f_int1 = @cur_value1
3792
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3794
# check single-4 success: 1
3795
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3796
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3798
# check single-5 success: 1
3799
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3801
# check single-6 success: 1
3802
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3804
# check single-7 success: 1
3805
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3806
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3807
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3808
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3809
f_charbig = '#NULL#';
3811
SET f_int1 = NULL , f_int2 = -@max_row,
3812
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3813
f_charbig = '#NULL#';
3814
# check null success: 1
3816
# check null-1 success: 1
3817
UPDATE t1 SET f_int1 = -@max_row
3818
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3819
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3821
# check null-2 success: 1
3822
UPDATE t1 SET f_int1 = NULL
3823
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3824
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3826
# check null-3 success: 1
3828
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
3829
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
3831
# check null-4 success: 1
3833
WHERE f_int1 = 0 AND f_int2 = 0
3834
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3835
AND f_charbig = '#NULL#';
3837
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3838
SELECT f_int1, f_int1, '', '', 'was inserted'
3839
FROM t0_template source_tab
3840
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3842
# check transactions-1 success: 1
3845
# check transactions-2 success: 1
3848
# check transactions-3 success: 1
3849
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3853
# check transactions-4 success: 1
3854
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3855
SELECT f_int1, f_int1, '', '', 'was inserted'
3856
FROM t0_template source_tab
3857
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3859
# check transactions-5 success: 1
3862
# check transactions-6 success: 1
3863
# INFO: Storage engine used for t1 seems to be transactional.
3866
# check transactions-7 success: 1
3867
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3869
SET @@session.sql_mode = 'traditional';
3870
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3871
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3872
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3873
'', '', 'was inserted' FROM t0_template
3874
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3875
ERROR 22012: Division by 0
3878
# check transactions-8 success: 1
3879
# INFO: Storage engine used for t1 seems to be able to revert
3880
# changes made by the failing statement.
3881
SET @@session.sql_mode = '';
3883
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3885
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3887
# check special-1 success: 1
3888
UPDATE t1 SET f_charbig = '';
3890
# check special-2 success: 1
3891
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3892
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3893
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3894
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3895
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3896
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3897
'just inserted' FROM t0_template
3898
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3899
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3901
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3902
f_charbig = 'updated by trigger'
3903
WHERE f_int1 = new.f_int1;
3905
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3906
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3907
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3909
# check trigger-1 success: 1
3911
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3912
f_int2 = CAST(f_char1 AS SIGNED INT),
3913
f_charbig = 'just inserted'
3914
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3916
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3917
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3918
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3919
'just inserted' FROM t0_template
3920
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3921
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3923
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3924
f_charbig = 'updated by trigger'
3925
WHERE f_int1 = new.f_int1;
3927
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3928
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3929
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3931
# check trigger-2 success: 1
3933
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3934
f_int2 = CAST(f_char1 AS SIGNED INT),
3935
f_charbig = 'just inserted'
3936
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3938
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3939
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3940
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3941
'just inserted' FROM t0_template
3942
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3943
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3945
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3946
f_charbig = 'updated by trigger'
3947
WHERE f_int1 = new.f_int1;
3949
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3950
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3952
# check trigger-3 success: 1
3954
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3955
f_int2 = CAST(f_char1 AS SIGNED INT),
3956
f_charbig = 'just inserted'
3957
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3959
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3960
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3961
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3962
'just inserted' FROM t0_template
3963
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3964
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3966
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3967
f_charbig = 'updated by trigger'
3968
WHERE f_int1 = - old.f_int1;
3970
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3971
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3973
# check trigger-4 success: 1
3975
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3976
f_int2 = CAST(f_char1 AS SIGNED INT),
3977
f_charbig = 'just inserted'
3978
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3980
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3981
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3982
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3983
'just inserted' FROM t0_template
3984
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3985
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3987
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3988
f_charbig = 'updated by trigger'
3989
WHERE f_int1 = new.f_int1;
3991
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3992
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3994
# check trigger-5 success: 1
3996
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3997
f_int2 = CAST(f_char1 AS SIGNED INT),
3998
f_charbig = 'just inserted'
3999
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4001
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4002
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4003
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4004
'just inserted' FROM t0_template
4005
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4006
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4008
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4009
f_charbig = 'updated by trigger'
4010
WHERE f_int1 = - old.f_int1;
4012
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4013
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4015
# check trigger-6 success: 1
4017
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4018
f_int2 = CAST(f_char1 AS SIGNED INT),
4019
f_charbig = 'just inserted'
4020
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4022
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4023
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4024
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4025
'just inserted' FROM t0_template
4026
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4027
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4029
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4030
f_charbig = 'updated by trigger'
4031
WHERE f_int1 = - old.f_int1;
4034
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4036
# check trigger-7 success: 1
4038
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4039
f_int2 = CAST(f_char1 AS SIGNED INT),
4040
f_charbig = 'just inserted'
4041
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4043
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4044
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4045
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4046
'just inserted' FROM t0_template
4047
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4048
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4050
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4051
f_charbig = 'updated by trigger'
4052
WHERE f_int1 = - old.f_int1;
4055
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4057
# check trigger-8 success: 1
4059
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4060
f_int2 = CAST(f_char1 AS SIGNED INT),
4061
f_charbig = 'just inserted'
4062
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4064
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4066
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4067
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4069
SET new.f_int1 = old.f_int1 + @max_row,
4070
new.f_int2 = old.f_int2 - @max_row,
4071
new.f_charbig = '####updated per update trigger####';
4074
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4075
f_charbig = '####updated per update statement itself####';
4077
# check trigger-9 success: 1
4079
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4080
f_int2 = CAST(f_char1 AS SIGNED INT),
4081
f_charbig = CONCAT('===',f_char1,'===');
4082
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4084
SET new.f_int1 = new.f_int1 + @max_row,
4085
new.f_int2 = new.f_int2 - @max_row,
4086
new.f_charbig = '####updated per update trigger####';
4089
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4090
f_charbig = '####updated per update statement itself####';
4092
# check trigger-10 success: 1
4094
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4095
f_int2 = CAST(f_char1 AS SIGNED INT),
4096
f_charbig = CONCAT('===',f_char1,'===');
4097
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4099
SET new.f_int1 = @my_max1 + @counter,
4100
new.f_int2 = @my_min2 - @counter,
4101
new.f_charbig = '####updated per insert trigger####';
4102
SET @counter = @counter + 1;
4105
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4106
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4107
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4108
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4109
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4113
# check trigger-11 success: 1
4115
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4116
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4117
AND f_charbig = '####updated per insert trigger####';
4118
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4120
SET new.f_int1 = @my_max1 + @counter,
4121
new.f_int2 = @my_min2 - @counter,
4122
new.f_charbig = '####updated per insert trigger####';
4123
SET @counter = @counter + 1;
4126
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4127
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4128
SELECT CAST(f_int1 AS CHAR),
4129
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4130
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4134
# check trigger-12 success: 1
4136
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4137
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4138
AND f_charbig = '####updated per insert trigger####';
4140
Table Op Msg_type Msg_text
4141
test.t1 analyze note The storage engine for the table doesn't support analyze
4142
CHECK TABLE t1 EXTENDED;
4143
Table Op Msg_type Msg_text
4144
test.t1 check note The storage engine for the table doesn't support check
4145
CHECKSUM TABLE t1 EXTENDED;
4147
test.t1 <some_value>
4149
Table Op Msg_type Msg_text
4150
test.t1 optimize note The storage engine for the table doesn't support optimize
4151
# check layout success: 1
4152
REPAIR TABLE t1 EXTENDED;
4153
Table Op Msg_type Msg_text
4154
test.t1 repair note The storage engine for the table doesn't support repair
4155
# check layout success: 1
4158
# check TRUNCATE success: 1
4159
# check layout success: 1
4160
# End usability test (inc/partition_check.inc)
4167
f_charbig VARCHAR(1000)
4170
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
4171
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4172
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
4173
# Start usability test (inc/partition_check.inc)
4175
SHOW CREATE TABLE t1;
4177
t1 CREATE TABLE `t1` (
4178
`f_int1` int(11) DEFAULT NULL,
4179
`f_int2` int(11) DEFAULT NULL,
4180
`f_char1` char(20) DEFAULT NULL,
4181
`f_char2` char(20) DEFAULT NULL,
4182
`f_charbig` varchar(1000) DEFAULT NULL
4183
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
4186
$MYSQLTEST_VARDIR/master-data/test/t1.frm
4187
$MYSQLTEST_VARDIR/master-data/test/t1.par
4189
# check prerequisites-1 success: 1
4190
# check COUNT(*) success: 1
4191
# check MIN/MAX(f_int1) success: 1
4192
# check MIN/MAX(f_int2) success: 1
4193
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4194
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4195
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4196
WHERE f_int1 IN (2,3);
4197
# check prerequisites-3 success: 1
4198
DELETE FROM t1 WHERE f_charbig = 'delete me';
4199
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4200
# check read via f_int1 success: 1
4201
# check read via f_int2 success: 1
4203
# check multiple-1 success: 1
4204
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4206
# check multiple-2 success: 1
4207
INSERT INTO t1 SELECT * FROM t0_template
4208
WHERE MOD(f_int1,3) = 0;
4210
# check multiple-3 success: 1
4211
UPDATE t1 SET f_int1 = f_int1 + @max_row
4212
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4213
AND @max_row_div2 + @max_row_div4;
4215
# check multiple-4 success: 1
4217
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4218
AND @max_row_div2 + @max_row_div4 + @max_row;
4220
# check multiple-5 success: 1
4221
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4223
SET f_int1 = @cur_value , f_int2 = @cur_value,
4224
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4225
f_charbig = '#SINGLE#';
4227
# check single-1 success: 1
4228
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4230
SET f_int1 = @cur_value , f_int2 = @cur_value,
4231
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4232
f_charbig = '#SINGLE#';
4234
# check single-2 success: 1
4235
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4236
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4237
UPDATE t1 SET f_int1 = @cur_value2
4238
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4240
# check single-3 success: 1
4241
SET @cur_value1= -1;
4242
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4243
UPDATE t1 SET f_int1 = @cur_value1
4244
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4246
# check single-4 success: 1
4247
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4248
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4250
# check single-5 success: 1
4251
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4253
# check single-6 success: 1
4254
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4256
# check single-7 success: 1
4257
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4258
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4259
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4260
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4261
f_charbig = '#NULL#';
4263
SET f_int1 = NULL , f_int2 = -@max_row,
4264
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4265
f_charbig = '#NULL#';
4266
# check null success: 1
4268
# check null-1 success: 1
4269
UPDATE t1 SET f_int1 = -@max_row
4270
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4271
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4273
# check null-2 success: 1
4274
UPDATE t1 SET f_int1 = NULL
4275
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4276
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4278
# check null-3 success: 1
4280
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4281
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4283
# check null-4 success: 1
4285
WHERE f_int1 = 0 AND f_int2 = 0
4286
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4287
AND f_charbig = '#NULL#';
4289
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4290
SELECT f_int1, f_int1, '', '', 'was inserted'
4291
FROM t0_template source_tab
4292
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4294
# check transactions-1 success: 1
4297
# check transactions-2 success: 1
4300
# check transactions-3 success: 1
4301
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4305
# check transactions-4 success: 1
4306
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4307
SELECT f_int1, f_int1, '', '', 'was inserted'
4308
FROM t0_template source_tab
4309
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4311
# check transactions-5 success: 1
4314
# check transactions-6 success: 1
4315
# INFO: Storage engine used for t1 seems to be transactional.
4318
# check transactions-7 success: 1
4319
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4321
SET @@session.sql_mode = 'traditional';
4322
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4323
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4324
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4325
'', '', 'was inserted' FROM t0_template
4326
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4327
ERROR 22012: Division by 0
4330
# check transactions-8 success: 1
4331
# INFO: Storage engine used for t1 seems to be able to revert
4332
# changes made by the failing statement.
4333
SET @@session.sql_mode = '';
4335
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4337
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4339
# check special-1 success: 1
4340
UPDATE t1 SET f_charbig = '';
4342
# check special-2 success: 1
4343
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4344
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4345
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4346
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4347
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4348
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4349
'just inserted' FROM t0_template
4350
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4351
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4353
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4354
f_charbig = 'updated by trigger'
4355
WHERE f_int1 = new.f_int1;
4357
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4358
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4359
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4361
# check trigger-1 success: 1
4363
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4364
f_int2 = CAST(f_char1 AS SIGNED INT),
4365
f_charbig = 'just inserted'
4366
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4368
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4369
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4370
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4371
'just inserted' FROM t0_template
4372
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4373
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4375
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4376
f_charbig = 'updated by trigger'
4377
WHERE f_int1 = new.f_int1;
4379
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4380
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4381
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4383
# check trigger-2 success: 1
4385
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4386
f_int2 = CAST(f_char1 AS SIGNED INT),
4387
f_charbig = 'just inserted'
4388
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4390
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4391
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4392
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4393
'just inserted' FROM t0_template
4394
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4395
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4397
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4398
f_charbig = 'updated by trigger'
4399
WHERE f_int1 = new.f_int1;
4401
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4402
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4404
# check trigger-3 success: 1
4406
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4407
f_int2 = CAST(f_char1 AS SIGNED INT),
4408
f_charbig = 'just inserted'
4409
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4411
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4412
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4413
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4414
'just inserted' FROM t0_template
4415
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4416
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4418
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4419
f_charbig = 'updated by trigger'
4420
WHERE f_int1 = - old.f_int1;
4422
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4423
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4425
# check trigger-4 success: 1
4427
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4428
f_int2 = CAST(f_char1 AS SIGNED INT),
4429
f_charbig = 'just inserted'
4430
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4432
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4433
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4434
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4435
'just inserted' FROM t0_template
4436
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4437
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4439
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4440
f_charbig = 'updated by trigger'
4441
WHERE f_int1 = new.f_int1;
4443
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4444
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4446
# check trigger-5 success: 1
4448
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4449
f_int2 = CAST(f_char1 AS SIGNED INT),
4450
f_charbig = 'just inserted'
4451
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4453
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4454
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4455
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4456
'just inserted' FROM t0_template
4457
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4458
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4460
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4461
f_charbig = 'updated by trigger'
4462
WHERE f_int1 = - old.f_int1;
4464
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4465
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4467
# check trigger-6 success: 1
4469
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4470
f_int2 = CAST(f_char1 AS SIGNED INT),
4471
f_charbig = 'just inserted'
4472
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4474
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4475
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4476
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4477
'just inserted' FROM t0_template
4478
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4479
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4481
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4482
f_charbig = 'updated by trigger'
4483
WHERE f_int1 = - old.f_int1;
4486
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4488
# check trigger-7 success: 1
4490
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4491
f_int2 = CAST(f_char1 AS SIGNED INT),
4492
f_charbig = 'just inserted'
4493
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4495
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4496
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4497
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4498
'just inserted' FROM t0_template
4499
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4500
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4502
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4503
f_charbig = 'updated by trigger'
4504
WHERE f_int1 = - old.f_int1;
4507
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4509
# check trigger-8 success: 1
4511
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4512
f_int2 = CAST(f_char1 AS SIGNED INT),
4513
f_charbig = 'just inserted'
4514
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4516
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4518
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4519
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4521
SET new.f_int1 = old.f_int1 + @max_row,
4522
new.f_int2 = old.f_int2 - @max_row,
4523
new.f_charbig = '####updated per update trigger####';
4526
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4527
f_charbig = '####updated per update statement itself####';
4529
# check trigger-9 success: 1
4531
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4532
f_int2 = CAST(f_char1 AS SIGNED INT),
4533
f_charbig = CONCAT('===',f_char1,'===');
4534
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4536
SET new.f_int1 = new.f_int1 + @max_row,
4537
new.f_int2 = new.f_int2 - @max_row,
4538
new.f_charbig = '####updated per update trigger####';
4541
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4542
f_charbig = '####updated per update statement itself####';
4544
# check trigger-10 success: 1
4546
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4547
f_int2 = CAST(f_char1 AS SIGNED INT),
4548
f_charbig = CONCAT('===',f_char1,'===');
4549
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4551
SET new.f_int1 = @my_max1 + @counter,
4552
new.f_int2 = @my_min2 - @counter,
4553
new.f_charbig = '####updated per insert trigger####';
4554
SET @counter = @counter + 1;
4557
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4558
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4559
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4560
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4561
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4565
# check trigger-11 success: 1
4567
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4568
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4569
AND f_charbig = '####updated per insert trigger####';
4570
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4572
SET new.f_int1 = @my_max1 + @counter,
4573
new.f_int2 = @my_min2 - @counter,
4574
new.f_charbig = '####updated per insert trigger####';
4575
SET @counter = @counter + 1;
4578
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4579
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4580
SELECT CAST(f_int1 AS CHAR),
4581
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4582
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4586
# check trigger-12 success: 1
4588
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4589
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4590
AND f_charbig = '####updated per insert trigger####';
4592
Table Op Msg_type Msg_text
4593
test.t1 analyze note The storage engine for the table doesn't support analyze
4594
CHECK TABLE t1 EXTENDED;
4595
Table Op Msg_type Msg_text
4596
test.t1 check note The storage engine for the table doesn't support check
4597
CHECKSUM TABLE t1 EXTENDED;
4599
test.t1 <some_value>
4601
Table Op Msg_type Msg_text
4602
test.t1 optimize note The storage engine for the table doesn't support optimize
4603
# check layout success: 1
4604
REPAIR TABLE t1 EXTENDED;
4605
Table Op Msg_type Msg_text
4606
test.t1 repair note The storage engine for the table doesn't support repair
4607
# check layout success: 1
4610
# check TRUNCATE success: 1
4611
# check layout success: 1
4612
# End usability test (inc/partition_check.inc)
4619
f_charbig VARCHAR(1000)
4622
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
4623
(PARTITION part_3 VALUES IN (-3),
4624
PARTITION part_2 VALUES IN (-2),
4625
PARTITION part_1 VALUES IN (-1),
4626
PARTITION part_N VALUES IN (NULL),
4627
PARTITION part0 VALUES IN (0),
4628
PARTITION part1 VALUES IN (1),
4629
PARTITION part2 VALUES IN (2),
4630
PARTITION part3 VALUES IN (3));
4631
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4632
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
4633
# Start usability test (inc/partition_check.inc)
4635
SHOW CREATE TABLE t1;
4637
t1 CREATE TABLE `t1` (
4638
`f_int1` int(11) DEFAULT NULL,
4639
`f_int2` int(11) DEFAULT NULL,
4640
`f_char1` char(20) DEFAULT NULL,
4641
`f_char2` char(20) DEFAULT NULL,
4642
`f_charbig` varchar(1000) DEFAULT NULL
4643
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
4646
$MYSQLTEST_VARDIR/master-data/test/t1.frm
4647
$MYSQLTEST_VARDIR/master-data/test/t1.par
4649
# check prerequisites-1 success: 1
4650
# check COUNT(*) success: 1
4651
# check MIN/MAX(f_int1) success: 1
4652
# check MIN/MAX(f_int2) success: 1
4653
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4654
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4655
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4656
WHERE f_int1 IN (2,3);
4657
# check prerequisites-3 success: 1
4658
DELETE FROM t1 WHERE f_charbig = 'delete me';
4659
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4660
# check read via f_int1 success: 1
4661
# check read via f_int2 success: 1
4663
# check multiple-1 success: 1
4664
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4666
# check multiple-2 success: 1
4667
INSERT INTO t1 SELECT * FROM t0_template
4668
WHERE MOD(f_int1,3) = 0;
4670
# check multiple-3 success: 1
4671
UPDATE t1 SET f_int1 = f_int1 + @max_row
4672
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4673
AND @max_row_div2 + @max_row_div4;
4675
# check multiple-4 success: 1
4677
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4678
AND @max_row_div2 + @max_row_div4 + @max_row;
4680
# check multiple-5 success: 1
4681
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4683
SET f_int1 = @cur_value , f_int2 = @cur_value,
4684
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4685
f_charbig = '#SINGLE#';
4687
# check single-1 success: 1
4688
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4690
SET f_int1 = @cur_value , f_int2 = @cur_value,
4691
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4692
f_charbig = '#SINGLE#';
4694
# check single-2 success: 1
4695
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4696
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4697
UPDATE t1 SET f_int1 = @cur_value2
4698
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4700
# check single-3 success: 1
4701
SET @cur_value1= -1;
4702
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4703
UPDATE t1 SET f_int1 = @cur_value1
4704
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4706
# check single-4 success: 1
4707
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4708
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4710
# check single-5 success: 1
4711
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4713
# check single-6 success: 1
4714
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4716
# check single-7 success: 1
4717
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4718
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4719
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4720
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4721
f_charbig = '#NULL#';
4723
SET f_int1 = NULL , f_int2 = -@max_row,
4724
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4725
f_charbig = '#NULL#';
4726
# check null success: 1
4728
# check null-1 success: 1
4729
UPDATE t1 SET f_int1 = -@max_row
4730
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4731
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4733
# check null-2 success: 1
4734
UPDATE t1 SET f_int1 = NULL
4735
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4736
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4738
# check null-3 success: 1
4740
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
4741
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
4743
# check null-4 success: 1
4745
WHERE f_int1 = 0 AND f_int2 = 0
4746
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4747
AND f_charbig = '#NULL#';
4749
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4750
SELECT f_int1, f_int1, '', '', 'was inserted'
4751
FROM t0_template source_tab
4752
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4754
# check transactions-1 success: 1
4757
# check transactions-2 success: 1
4760
# check transactions-3 success: 1
4761
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4765
# check transactions-4 success: 1
4766
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4767
SELECT f_int1, f_int1, '', '', 'was inserted'
4768
FROM t0_template source_tab
4769
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4771
# check transactions-5 success: 1
4774
# check transactions-6 success: 1
4775
# INFO: Storage engine used for t1 seems to be transactional.
4778
# check transactions-7 success: 1
4779
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4781
SET @@session.sql_mode = 'traditional';
4782
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4783
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4784
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4785
'', '', 'was inserted' FROM t0_template
4786
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4787
ERROR 22012: Division by 0
4790
# check transactions-8 success: 1
4791
# INFO: Storage engine used for t1 seems to be able to revert
4792
# changes made by the failing statement.
4793
SET @@session.sql_mode = '';
4795
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4797
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4799
# check special-1 success: 1
4800
UPDATE t1 SET f_charbig = '';
4802
# check special-2 success: 1
4803
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4804
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4805
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4806
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4807
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4808
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4809
'just inserted' FROM t0_template
4810
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4811
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4813
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4814
f_charbig = 'updated by trigger'
4815
WHERE f_int1 = new.f_int1;
4817
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4818
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4819
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4821
# check trigger-1 success: 1
4823
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4824
f_int2 = CAST(f_char1 AS SIGNED INT),
4825
f_charbig = 'just inserted'
4826
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4828
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4829
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4830
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4831
'just inserted' FROM t0_template
4832
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4833
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4835
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4836
f_charbig = 'updated by trigger'
4837
WHERE f_int1 = new.f_int1;
4839
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4840
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4841
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4843
# check trigger-2 success: 1
4845
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4846
f_int2 = CAST(f_char1 AS SIGNED INT),
4847
f_charbig = 'just inserted'
4848
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4850
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4851
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4852
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4853
'just inserted' FROM t0_template
4854
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4855
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4857
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4858
f_charbig = 'updated by trigger'
4859
WHERE f_int1 = new.f_int1;
4861
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4862
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4864
# check trigger-3 success: 1
4866
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4867
f_int2 = CAST(f_char1 AS SIGNED INT),
4868
f_charbig = 'just inserted'
4869
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4871
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4872
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4873
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4874
'just inserted' FROM t0_template
4875
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4876
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4878
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4879
f_charbig = 'updated by trigger'
4880
WHERE f_int1 = - old.f_int1;
4882
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4883
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4885
# check trigger-4 success: 1
4887
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4888
f_int2 = CAST(f_char1 AS SIGNED INT),
4889
f_charbig = 'just inserted'
4890
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4892
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4893
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4894
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4895
'just inserted' FROM t0_template
4896
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4897
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4899
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4900
f_charbig = 'updated by trigger'
4901
WHERE f_int1 = new.f_int1;
4903
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4904
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4906
# check trigger-5 success: 1
4908
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4909
f_int2 = CAST(f_char1 AS SIGNED INT),
4910
f_charbig = 'just inserted'
4911
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4913
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4914
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4915
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4916
'just inserted' FROM t0_template
4917
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4918
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4920
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4921
f_charbig = 'updated by trigger'
4922
WHERE f_int1 = - old.f_int1;
4924
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4925
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4927
# check trigger-6 success: 1
4929
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4930
f_int2 = CAST(f_char1 AS SIGNED INT),
4931
f_charbig = 'just inserted'
4932
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4934
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4935
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4936
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4937
'just inserted' FROM t0_template
4938
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4939
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4941
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4942
f_charbig = 'updated by trigger'
4943
WHERE f_int1 = - old.f_int1;
4946
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4948
# check trigger-7 success: 1
4950
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4951
f_int2 = CAST(f_char1 AS SIGNED INT),
4952
f_charbig = 'just inserted'
4953
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4955
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4956
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4957
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4958
'just inserted' FROM t0_template
4959
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4960
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4962
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4963
f_charbig = 'updated by trigger'
4964
WHERE f_int1 = - old.f_int1;
4967
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4969
# check trigger-8 success: 1
4971
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4972
f_int2 = CAST(f_char1 AS SIGNED INT),
4973
f_charbig = 'just inserted'
4974
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4976
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4978
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4979
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4981
SET new.f_int1 = old.f_int1 + @max_row,
4982
new.f_int2 = old.f_int2 - @max_row,
4983
new.f_charbig = '####updated per update trigger####';
4986
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4987
f_charbig = '####updated per update statement itself####';
4989
# check trigger-9 success: 1
4991
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4992
f_int2 = CAST(f_char1 AS SIGNED INT),
4993
f_charbig = CONCAT('===',f_char1,'===');
4994
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4996
SET new.f_int1 = new.f_int1 + @max_row,
4997
new.f_int2 = new.f_int2 - @max_row,
4998
new.f_charbig = '####updated per update trigger####';
5001
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5002
f_charbig = '####updated per update statement itself####';
5004
# check trigger-10 success: 1
5006
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5007
f_int2 = CAST(f_char1 AS SIGNED INT),
5008
f_charbig = CONCAT('===',f_char1,'===');
5009
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5011
SET new.f_int1 = @my_max1 + @counter,
5012
new.f_int2 = @my_min2 - @counter,
5013
new.f_charbig = '####updated per insert trigger####';
5014
SET @counter = @counter + 1;
5017
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5018
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5019
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5020
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5021
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5025
# check trigger-11 success: 1
5027
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5028
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5029
AND f_charbig = '####updated per insert trigger####';
5030
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5032
SET new.f_int1 = @my_max1 + @counter,
5033
new.f_int2 = @my_min2 - @counter,
5034
new.f_charbig = '####updated per insert trigger####';
5035
SET @counter = @counter + 1;
5038
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5039
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5040
SELECT CAST(f_int1 AS CHAR),
5041
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5042
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5046
# check trigger-12 success: 1
5048
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5049
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5050
AND f_charbig = '####updated per insert trigger####';
5052
Table Op Msg_type Msg_text
5053
test.t1 analyze note The storage engine for the table doesn't support analyze
5054
CHECK TABLE t1 EXTENDED;
5055
Table Op Msg_type Msg_text
5056
test.t1 check note The storage engine for the table doesn't support check
5057
CHECKSUM TABLE t1 EXTENDED;
5059
test.t1 <some_value>
5061
Table Op Msg_type Msg_text
5062
test.t1 optimize note The storage engine for the table doesn't support optimize
5063
# check layout success: 1
5064
REPAIR TABLE t1 EXTENDED;
5065
Table Op Msg_type Msg_text
5066
test.t1 repair note The storage engine for the table doesn't support repair
5067
# check layout success: 1
5070
# check TRUNCATE success: 1
5071
# check layout success: 1
5072
# End usability test (inc/partition_check.inc)
5079
f_charbig VARCHAR(1000)
5082
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
5083
(PARTITION parta VALUES LESS THAN (0),
5084
PARTITION partb VALUES LESS THAN (5),
5085
PARTITION partc VALUES LESS THAN (10),
5086
PARTITION partd VALUES LESS THAN (10 + 5),
5087
PARTITION parte VALUES LESS THAN (20),
5088
PARTITION partf VALUES LESS THAN (2147483646));
5089
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5090
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
5091
# Start usability test (inc/partition_check.inc)
5093
SHOW CREATE TABLE t1;
5095
t1 CREATE TABLE `t1` (
5096
`f_int1` int(11) DEFAULT NULL,
5097
`f_int2` int(11) DEFAULT NULL,
5098
`f_char1` char(20) DEFAULT NULL,
5099
`f_char2` char(20) DEFAULT NULL,
5100
`f_charbig` varchar(1000) DEFAULT NULL
5101
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
5104
$MYSQLTEST_VARDIR/master-data/test/t1.frm
5105
$MYSQLTEST_VARDIR/master-data/test/t1.par
5107
# check prerequisites-1 success: 1
5108
# check COUNT(*) success: 1
5109
# check MIN/MAX(f_int1) success: 1
5110
# check MIN/MAX(f_int2) success: 1
5111
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5112
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5113
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5114
WHERE f_int1 IN (2,3);
5115
# check prerequisites-3 success: 1
5116
DELETE FROM t1 WHERE f_charbig = 'delete me';
5117
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5118
# check read via f_int1 success: 1
5119
# check read via f_int2 success: 1
5121
# check multiple-1 success: 1
5122
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5124
# check multiple-2 success: 1
5125
INSERT INTO t1 SELECT * FROM t0_template
5126
WHERE MOD(f_int1,3) = 0;
5128
# check multiple-3 success: 1
5129
UPDATE t1 SET f_int1 = f_int1 + @max_row
5130
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5131
AND @max_row_div2 + @max_row_div4;
5133
# check multiple-4 success: 1
5135
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5136
AND @max_row_div2 + @max_row_div4 + @max_row;
5138
# check multiple-5 success: 1
5139
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5141
SET f_int1 = @cur_value , f_int2 = @cur_value,
5142
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5143
f_charbig = '#SINGLE#';
5145
# check single-1 success: 1
5146
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5148
SET f_int1 = @cur_value , f_int2 = @cur_value,
5149
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5150
f_charbig = '#SINGLE#';
5152
# check single-2 success: 1
5153
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5154
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5155
UPDATE t1 SET f_int1 = @cur_value2
5156
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5158
# check single-3 success: 1
5159
SET @cur_value1= -1;
5160
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5161
UPDATE t1 SET f_int1 = @cur_value1
5162
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5164
# check single-4 success: 1
5165
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5166
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5168
# check single-5 success: 1
5169
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5171
# check single-6 success: 1
5172
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5173
ERROR HY000: Table has no partition for value 2147483647
5174
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5175
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5176
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5177
f_charbig = '#NULL#';
5179
SET f_int1 = NULL , f_int2 = -@max_row,
5180
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5181
f_charbig = '#NULL#';
5182
# check null success: 1
5184
# check null-1 success: 1
5185
UPDATE t1 SET f_int1 = -@max_row
5186
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5187
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5189
# check null-2 success: 1
5190
UPDATE t1 SET f_int1 = NULL
5191
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5192
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5194
# check null-3 success: 1
5196
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5197
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5199
# check null-4 success: 1
5201
WHERE f_int1 = 0 AND f_int2 = 0
5202
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5203
AND f_charbig = '#NULL#';
5205
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5206
SELECT f_int1, f_int1, '', '', 'was inserted'
5207
FROM t0_template source_tab
5208
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5210
# check transactions-1 success: 1
5213
# check transactions-2 success: 1
5216
# check transactions-3 success: 1
5217
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5221
# check transactions-4 success: 1
5222
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5223
SELECT f_int1, f_int1, '', '', 'was inserted'
5224
FROM t0_template source_tab
5225
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5227
# check transactions-5 success: 1
5230
# check transactions-6 success: 1
5231
# INFO: Storage engine used for t1 seems to be transactional.
5234
# check transactions-7 success: 1
5235
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5237
SET @@session.sql_mode = 'traditional';
5238
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5239
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5240
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5241
'', '', 'was inserted' FROM t0_template
5242
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5243
ERROR 22012: Division by 0
5246
# check transactions-8 success: 1
5247
# INFO: Storage engine used for t1 seems to be able to revert
5248
# changes made by the failing statement.
5249
SET @@session.sql_mode = '';
5251
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5253
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5255
# check special-1 success: 1
5256
UPDATE t1 SET f_charbig = '';
5258
# check special-2 success: 1
5259
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5260
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5261
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5262
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5263
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5264
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5265
'just inserted' FROM t0_template
5266
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5267
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5269
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5270
f_charbig = 'updated by trigger'
5271
WHERE f_int1 = new.f_int1;
5273
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5274
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5275
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5277
# check trigger-1 success: 1
5279
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5280
f_int2 = CAST(f_char1 AS SIGNED INT),
5281
f_charbig = 'just inserted'
5282
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5284
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5285
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5286
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5287
'just inserted' FROM t0_template
5288
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5289
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5291
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5292
f_charbig = 'updated by trigger'
5293
WHERE f_int1 = new.f_int1;
5295
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5296
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5297
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5299
# check trigger-2 success: 1
5301
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5302
f_int2 = CAST(f_char1 AS SIGNED INT),
5303
f_charbig = 'just inserted'
5304
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5306
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5307
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5308
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5309
'just inserted' FROM t0_template
5310
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5311
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5313
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5314
f_charbig = 'updated by trigger'
5315
WHERE f_int1 = new.f_int1;
5317
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5318
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5320
# check trigger-3 success: 1
5322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5323
f_int2 = CAST(f_char1 AS SIGNED INT),
5324
f_charbig = 'just inserted'
5325
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5327
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5328
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5329
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5330
'just inserted' FROM t0_template
5331
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5332
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5334
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5335
f_charbig = 'updated by trigger'
5336
WHERE f_int1 = - old.f_int1;
5338
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5339
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5341
# check trigger-4 success: 1
5343
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5344
f_int2 = CAST(f_char1 AS SIGNED INT),
5345
f_charbig = 'just inserted'
5346
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5348
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5349
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5350
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5351
'just inserted' FROM t0_template
5352
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5353
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5355
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5356
f_charbig = 'updated by trigger'
5357
WHERE f_int1 = new.f_int1;
5359
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5360
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5362
# check trigger-5 success: 1
5364
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5365
f_int2 = CAST(f_char1 AS SIGNED INT),
5366
f_charbig = 'just inserted'
5367
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5369
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5370
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5371
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5372
'just inserted' FROM t0_template
5373
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5374
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5376
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5377
f_charbig = 'updated by trigger'
5378
WHERE f_int1 = - old.f_int1;
5380
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5381
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5383
# check trigger-6 success: 1
5385
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5386
f_int2 = CAST(f_char1 AS SIGNED INT),
5387
f_charbig = 'just inserted'
5388
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5390
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5391
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5392
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5393
'just inserted' FROM t0_template
5394
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5395
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5397
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5398
f_charbig = 'updated by trigger'
5399
WHERE f_int1 = - old.f_int1;
5402
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5404
# check trigger-7 success: 1
5406
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5407
f_int2 = CAST(f_char1 AS SIGNED INT),
5408
f_charbig = 'just inserted'
5409
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5411
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5412
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5413
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5414
'just inserted' FROM t0_template
5415
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5416
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5418
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5419
f_charbig = 'updated by trigger'
5420
WHERE f_int1 = - old.f_int1;
5423
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5425
# check trigger-8 success: 1
5427
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5428
f_int2 = CAST(f_char1 AS SIGNED INT),
5429
f_charbig = 'just inserted'
5430
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5432
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5434
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5435
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5437
SET new.f_int1 = old.f_int1 + @max_row,
5438
new.f_int2 = old.f_int2 - @max_row,
5439
new.f_charbig = '####updated per update trigger####';
5442
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5443
f_charbig = '####updated per update statement itself####';
5445
# check trigger-9 success: 1
5447
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5448
f_int2 = CAST(f_char1 AS SIGNED INT),
5449
f_charbig = CONCAT('===',f_char1,'===');
5450
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5452
SET new.f_int1 = new.f_int1 + @max_row,
5453
new.f_int2 = new.f_int2 - @max_row,
5454
new.f_charbig = '####updated per update trigger####';
5457
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5458
f_charbig = '####updated per update statement itself####';
5460
# check trigger-10 success: 1
5462
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5463
f_int2 = CAST(f_char1 AS SIGNED INT),
5464
f_charbig = CONCAT('===',f_char1,'===');
5465
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5467
SET new.f_int1 = @my_max1 + @counter,
5468
new.f_int2 = @my_min2 - @counter,
5469
new.f_charbig = '####updated per insert trigger####';
5470
SET @counter = @counter + 1;
5473
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5474
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5475
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5476
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5477
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5481
# check trigger-11 success: 1
5483
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5484
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5485
AND f_charbig = '####updated per insert trigger####';
5486
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5488
SET new.f_int1 = @my_max1 + @counter,
5489
new.f_int2 = @my_min2 - @counter,
5490
new.f_charbig = '####updated per insert trigger####';
5491
SET @counter = @counter + 1;
5494
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5495
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5496
SELECT CAST(f_int1 AS CHAR),
5497
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5498
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5502
# check trigger-12 success: 1
5504
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5505
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5506
AND f_charbig = '####updated per insert trigger####';
5508
Table Op Msg_type Msg_text
5509
test.t1 analyze note The storage engine for the table doesn't support analyze
5510
CHECK TABLE t1 EXTENDED;
5511
Table Op Msg_type Msg_text
5512
test.t1 check note The storage engine for the table doesn't support check
5513
CHECKSUM TABLE t1 EXTENDED;
5515
test.t1 <some_value>
5517
Table Op Msg_type Msg_text
5518
test.t1 optimize note The storage engine for the table doesn't support optimize
5519
# check layout success: 1
5520
REPAIR TABLE t1 EXTENDED;
5521
Table Op Msg_type Msg_text
5522
test.t1 repair note The storage engine for the table doesn't support repair
5523
# check layout success: 1
5526
# check TRUNCATE success: 1
5527
# check layout success: 1
5528
# End usability test (inc/partition_check.inc)
5535
f_charbig VARCHAR(1000)
5538
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
5539
(PARTITION parta VALUES LESS THAN (0),
5540
PARTITION partb VALUES LESS THAN (5),
5541
PARTITION partc VALUES LESS THAN (10),
5542
PARTITION partd VALUES LESS THAN (2147483646));
5543
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5544
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
5545
# Start usability test (inc/partition_check.inc)
5547
SHOW CREATE TABLE t1;
5549
t1 CREATE TABLE `t1` (
5550
`f_int1` int(11) DEFAULT NULL,
5551
`f_int2` int(11) DEFAULT NULL,
5552
`f_char1` char(20) DEFAULT NULL,
5553
`f_char2` char(20) DEFAULT NULL,
5554
`f_charbig` varchar(1000) DEFAULT NULL
5555
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
5558
$MYSQLTEST_VARDIR/master-data/test/t1.frm
5559
$MYSQLTEST_VARDIR/master-data/test/t1.par
5561
# check prerequisites-1 success: 1
5562
# check COUNT(*) success: 1
5563
# check MIN/MAX(f_int1) success: 1
5564
# check MIN/MAX(f_int2) success: 1
5565
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5566
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5567
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5568
WHERE f_int1 IN (2,3);
5569
# check prerequisites-3 success: 1
5570
DELETE FROM t1 WHERE f_charbig = 'delete me';
5571
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5572
# check read via f_int1 success: 1
5573
# check read via f_int2 success: 1
5575
# check multiple-1 success: 1
5576
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5578
# check multiple-2 success: 1
5579
INSERT INTO t1 SELECT * FROM t0_template
5580
WHERE MOD(f_int1,3) = 0;
5582
# check multiple-3 success: 1
5583
UPDATE t1 SET f_int1 = f_int1 + @max_row
5584
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5585
AND @max_row_div2 + @max_row_div4;
5587
# check multiple-4 success: 1
5589
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5590
AND @max_row_div2 + @max_row_div4 + @max_row;
5592
# check multiple-5 success: 1
5593
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5595
SET f_int1 = @cur_value , f_int2 = @cur_value,
5596
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5597
f_charbig = '#SINGLE#';
5599
# check single-1 success: 1
5600
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5602
SET f_int1 = @cur_value , f_int2 = @cur_value,
5603
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5604
f_charbig = '#SINGLE#';
5606
# check single-2 success: 1
5607
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5608
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5609
UPDATE t1 SET f_int1 = @cur_value2
5610
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5612
# check single-3 success: 1
5613
SET @cur_value1= -1;
5614
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5615
UPDATE t1 SET f_int1 = @cur_value1
5616
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5618
# check single-4 success: 1
5619
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5620
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5622
# check single-5 success: 1
5623
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5625
# check single-6 success: 1
5626
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5627
ERROR HY000: Table has no partition for value 2147483647
5628
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5629
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5630
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5631
f_charbig = '#NULL#';
5633
SET f_int1 = NULL , f_int2 = -@max_row,
5634
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5635
f_charbig = '#NULL#';
5636
# check null success: 1
5638
# check null-1 success: 1
5639
UPDATE t1 SET f_int1 = -@max_row
5640
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5641
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5643
# check null-2 success: 1
5644
UPDATE t1 SET f_int1 = NULL
5645
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5646
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5648
# check null-3 success: 1
5650
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
5651
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
5653
# check null-4 success: 1
5655
WHERE f_int1 = 0 AND f_int2 = 0
5656
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5657
AND f_charbig = '#NULL#';
5659
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5660
SELECT f_int1, f_int1, '', '', 'was inserted'
5661
FROM t0_template source_tab
5662
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5664
# check transactions-1 success: 1
5667
# check transactions-2 success: 1
5670
# check transactions-3 success: 1
5671
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5675
# check transactions-4 success: 1
5676
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5677
SELECT f_int1, f_int1, '', '', 'was inserted'
5678
FROM t0_template source_tab
5679
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5681
# check transactions-5 success: 1
5684
# check transactions-6 success: 1
5685
# INFO: Storage engine used for t1 seems to be transactional.
5688
# check transactions-7 success: 1
5689
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5691
SET @@session.sql_mode = 'traditional';
5692
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5693
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5694
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5695
'', '', 'was inserted' FROM t0_template
5696
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5697
ERROR 22012: Division by 0
5700
# check transactions-8 success: 1
5701
# INFO: Storage engine used for t1 seems to be able to revert
5702
# changes made by the failing statement.
5703
SET @@session.sql_mode = '';
5705
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5707
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5709
# check special-1 success: 1
5710
UPDATE t1 SET f_charbig = '';
5712
# check special-2 success: 1
5713
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5714
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5715
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5716
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5717
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5718
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5719
'just inserted' FROM t0_template
5720
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5721
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5723
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5724
f_charbig = 'updated by trigger'
5725
WHERE f_int1 = new.f_int1;
5727
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5728
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5729
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5731
# check trigger-1 success: 1
5733
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5734
f_int2 = CAST(f_char1 AS SIGNED INT),
5735
f_charbig = 'just inserted'
5736
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5738
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5739
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5740
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5741
'just inserted' FROM t0_template
5742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5743
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5745
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5746
f_charbig = 'updated by trigger'
5747
WHERE f_int1 = new.f_int1;
5749
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5750
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5751
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5753
# check trigger-2 success: 1
5755
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5756
f_int2 = CAST(f_char1 AS SIGNED INT),
5757
f_charbig = 'just inserted'
5758
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5760
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5761
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5762
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5763
'just inserted' FROM t0_template
5764
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5765
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5767
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5768
f_charbig = 'updated by trigger'
5769
WHERE f_int1 = new.f_int1;
5771
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5772
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5774
# check trigger-3 success: 1
5776
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5777
f_int2 = CAST(f_char1 AS SIGNED INT),
5778
f_charbig = 'just inserted'
5779
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5781
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5782
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5783
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5784
'just inserted' FROM t0_template
5785
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5786
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5788
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5789
f_charbig = 'updated by trigger'
5790
WHERE f_int1 = - old.f_int1;
5792
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5793
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5795
# check trigger-4 success: 1
5797
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5798
f_int2 = CAST(f_char1 AS SIGNED INT),
5799
f_charbig = 'just inserted'
5800
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5802
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5803
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5804
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5805
'just inserted' FROM t0_template
5806
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5807
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5809
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5810
f_charbig = 'updated by trigger'
5811
WHERE f_int1 = new.f_int1;
5813
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5814
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5816
# check trigger-5 success: 1
5818
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5819
f_int2 = CAST(f_char1 AS SIGNED INT),
5820
f_charbig = 'just inserted'
5821
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5823
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5824
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5825
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5826
'just inserted' FROM t0_template
5827
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5828
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5830
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5831
f_charbig = 'updated by trigger'
5832
WHERE f_int1 = - old.f_int1;
5834
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5835
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5837
# check trigger-6 success: 1
5839
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5840
f_int2 = CAST(f_char1 AS SIGNED INT),
5841
f_charbig = 'just inserted'
5842
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5844
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5845
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5846
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5847
'just inserted' FROM t0_template
5848
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5849
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5851
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5852
f_charbig = 'updated by trigger'
5853
WHERE f_int1 = - old.f_int1;
5856
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5858
# check trigger-7 success: 1
5860
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5861
f_int2 = CAST(f_char1 AS SIGNED INT),
5862
f_charbig = 'just inserted'
5863
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5865
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5866
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5867
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5868
'just inserted' FROM t0_template
5869
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5870
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5872
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5873
f_charbig = 'updated by trigger'
5874
WHERE f_int1 = - old.f_int1;
5877
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5879
# check trigger-8 success: 1
5881
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5882
f_int2 = CAST(f_char1 AS SIGNED INT),
5883
f_charbig = 'just inserted'
5884
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5886
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5888
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5889
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5891
SET new.f_int1 = old.f_int1 + @max_row,
5892
new.f_int2 = old.f_int2 - @max_row,
5893
new.f_charbig = '####updated per update trigger####';
5896
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5897
f_charbig = '####updated per update statement itself####';
5899
# check trigger-9 success: 1
5901
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5902
f_int2 = CAST(f_char1 AS SIGNED INT),
5903
f_charbig = CONCAT('===',f_char1,'===');
5904
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5906
SET new.f_int1 = new.f_int1 + @max_row,
5907
new.f_int2 = new.f_int2 - @max_row,
5908
new.f_charbig = '####updated per update trigger####';
5911
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5912
f_charbig = '####updated per update statement itself####';
5914
# check trigger-10 success: 1
5916
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5917
f_int2 = CAST(f_char1 AS SIGNED INT),
5918
f_charbig = CONCAT('===',f_char1,'===');
5919
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5921
SET new.f_int1 = @my_max1 + @counter,
5922
new.f_int2 = @my_min2 - @counter,
5923
new.f_charbig = '####updated per insert trigger####';
5924
SET @counter = @counter + 1;
5927
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5928
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5929
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5930
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5931
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5935
# check trigger-11 success: 1
5937
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5938
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5939
AND f_charbig = '####updated per insert trigger####';
5940
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5942
SET new.f_int1 = @my_max1 + @counter,
5943
new.f_int2 = @my_min2 - @counter,
5944
new.f_charbig = '####updated per insert trigger####';
5945
SET @counter = @counter + 1;
5948
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5949
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5950
SELECT CAST(f_int1 AS CHAR),
5951
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5952
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5956
# check trigger-12 success: 1
5958
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5959
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5960
AND f_charbig = '####updated per insert trigger####';
5962
Table Op Msg_type Msg_text
5963
test.t1 analyze note The storage engine for the table doesn't support analyze
5964
CHECK TABLE t1 EXTENDED;
5965
Table Op Msg_type Msg_text
5966
test.t1 check note The storage engine for the table doesn't support check
5967
CHECKSUM TABLE t1 EXTENDED;
5969
test.t1 <some_value>
5971
Table Op Msg_type Msg_text
5972
test.t1 optimize note The storage engine for the table doesn't support optimize
5973
# check layout success: 1
5974
REPAIR TABLE t1 EXTENDED;
5975
Table Op Msg_type Msg_text
5976
test.t1 repair note The storage engine for the table doesn't support repair
5977
# check layout success: 1
5980
# check TRUNCATE success: 1
5981
# check layout success: 1
5982
# End usability test (inc/partition_check.inc)
5989
f_charbig VARCHAR(1000)
5992
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
5993
(PARTITION part1 VALUES LESS THAN (0)
5994
(SUBPARTITION subpart11, SUBPARTITION subpart12),
5995
PARTITION part2 VALUES LESS THAN (5)
5996
(SUBPARTITION subpart21, SUBPARTITION subpart22),
5997
PARTITION part3 VALUES LESS THAN (10)
5998
(SUBPARTITION subpart31, SUBPARTITION subpart32),
5999
PARTITION part4 VALUES LESS THAN (2147483646)
6000
(SUBPARTITION subpart41, SUBPARTITION subpart42));
6001
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6002
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
6003
# Start usability test (inc/partition_check.inc)
6005
SHOW CREATE TABLE t1;
6007
t1 CREATE TABLE `t1` (
6008
`f_int1` int(11) DEFAULT NULL,
6009
`f_int2` int(11) DEFAULT NULL,
6010
`f_char1` char(20) DEFAULT NULL,
6011
`f_char2` char(20) DEFAULT NULL,
6012
`f_charbig` varchar(1000) DEFAULT NULL
6013
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
6016
$MYSQLTEST_VARDIR/master-data/test/t1.frm
6017
$MYSQLTEST_VARDIR/master-data/test/t1.par
6019
# check prerequisites-1 success: 1
6020
# check COUNT(*) success: 1
6021
# check MIN/MAX(f_int1) success: 1
6022
# check MIN/MAX(f_int2) success: 1
6023
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6024
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6025
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6026
WHERE f_int1 IN (2,3);
6027
# check prerequisites-3 success: 1
6028
DELETE FROM t1 WHERE f_charbig = 'delete me';
6029
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6030
# check read via f_int1 success: 1
6031
# check read via f_int2 success: 1
6033
# check multiple-1 success: 1
6034
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6036
# check multiple-2 success: 1
6037
INSERT INTO t1 SELECT * FROM t0_template
6038
WHERE MOD(f_int1,3) = 0;
6040
# check multiple-3 success: 1
6041
UPDATE t1 SET f_int1 = f_int1 + @max_row
6042
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6043
AND @max_row_div2 + @max_row_div4;
6045
# check multiple-4 success: 1
6047
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6048
AND @max_row_div2 + @max_row_div4 + @max_row;
6050
# check multiple-5 success: 1
6051
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6053
SET f_int1 = @cur_value , f_int2 = @cur_value,
6054
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6055
f_charbig = '#SINGLE#';
6057
# check single-1 success: 1
6058
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6060
SET f_int1 = @cur_value , f_int2 = @cur_value,
6061
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6062
f_charbig = '#SINGLE#';
6064
# check single-2 success: 1
6065
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6066
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6067
UPDATE t1 SET f_int1 = @cur_value2
6068
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6070
# check single-3 success: 1
6071
SET @cur_value1= -1;
6072
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6073
UPDATE t1 SET f_int1 = @cur_value1
6074
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6076
# check single-4 success: 1
6077
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6078
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6080
# check single-5 success: 1
6081
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6083
# check single-6 success: 1
6084
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6085
ERROR HY000: Table has no partition for value 2147483647
6086
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6087
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6088
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6089
f_charbig = '#NULL#';
6091
SET f_int1 = NULL , f_int2 = -@max_row,
6092
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6093
f_charbig = '#NULL#';
6094
# check null success: 1
6096
# check null-1 success: 1
6097
UPDATE t1 SET f_int1 = -@max_row
6098
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6099
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6101
# check null-2 success: 1
6102
UPDATE t1 SET f_int1 = NULL
6103
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6104
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6106
# check null-3 success: 1
6108
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6109
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6111
# check null-4 success: 1
6113
WHERE f_int1 = 0 AND f_int2 = 0
6114
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6115
AND f_charbig = '#NULL#';
6117
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6118
SELECT f_int1, f_int1, '', '', 'was inserted'
6119
FROM t0_template source_tab
6120
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6122
# check transactions-1 success: 1
6125
# check transactions-2 success: 1
6128
# check transactions-3 success: 1
6129
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6133
# check transactions-4 success: 1
6134
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6135
SELECT f_int1, f_int1, '', '', 'was inserted'
6136
FROM t0_template source_tab
6137
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6139
# check transactions-5 success: 1
6142
# check transactions-6 success: 1
6143
# INFO: Storage engine used for t1 seems to be transactional.
6146
# check transactions-7 success: 1
6147
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6149
SET @@session.sql_mode = 'traditional';
6150
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6151
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6152
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6153
'', '', 'was inserted' FROM t0_template
6154
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6155
ERROR 22012: Division by 0
6158
# check transactions-8 success: 1
6159
# INFO: Storage engine used for t1 seems to be able to revert
6160
# changes made by the failing statement.
6161
SET @@session.sql_mode = '';
6163
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6165
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6167
# check special-1 success: 1
6168
UPDATE t1 SET f_charbig = '';
6170
# check special-2 success: 1
6171
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6172
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6173
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6174
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6175
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6176
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6177
'just inserted' FROM t0_template
6178
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6179
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6181
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6182
f_charbig = 'updated by trigger'
6183
WHERE f_int1 = new.f_int1;
6185
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6186
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6187
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6189
# check trigger-1 success: 1
6191
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6192
f_int2 = CAST(f_char1 AS SIGNED INT),
6193
f_charbig = 'just inserted'
6194
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6196
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6197
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6198
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6199
'just inserted' FROM t0_template
6200
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6201
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6203
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6204
f_charbig = 'updated by trigger'
6205
WHERE f_int1 = new.f_int1;
6207
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6208
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6209
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6211
# check trigger-2 success: 1
6213
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6214
f_int2 = CAST(f_char1 AS SIGNED INT),
6215
f_charbig = 'just inserted'
6216
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6218
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6219
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6220
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6221
'just inserted' FROM t0_template
6222
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6223
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6225
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6226
f_charbig = 'updated by trigger'
6227
WHERE f_int1 = new.f_int1;
6229
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6230
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6232
# check trigger-3 success: 1
6234
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6235
f_int2 = CAST(f_char1 AS SIGNED INT),
6236
f_charbig = 'just inserted'
6237
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6239
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6240
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6241
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6242
'just inserted' FROM t0_template
6243
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6244
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6246
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6247
f_charbig = 'updated by trigger'
6248
WHERE f_int1 = - old.f_int1;
6250
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6251
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6253
# check trigger-4 success: 1
6255
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6256
f_int2 = CAST(f_char1 AS SIGNED INT),
6257
f_charbig = 'just inserted'
6258
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6260
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6261
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6262
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6263
'just inserted' FROM t0_template
6264
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6265
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6267
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6268
f_charbig = 'updated by trigger'
6269
WHERE f_int1 = new.f_int1;
6271
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6272
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6274
# check trigger-5 success: 1
6276
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6277
f_int2 = CAST(f_char1 AS SIGNED INT),
6278
f_charbig = 'just inserted'
6279
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6281
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6282
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6283
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6284
'just inserted' FROM t0_template
6285
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6286
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6288
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6289
f_charbig = 'updated by trigger'
6290
WHERE f_int1 = - old.f_int1;
6292
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6293
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6295
# check trigger-6 success: 1
6297
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6298
f_int2 = CAST(f_char1 AS SIGNED INT),
6299
f_charbig = 'just inserted'
6300
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6302
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6303
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6304
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6305
'just inserted' FROM t0_template
6306
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6307
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6309
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6310
f_charbig = 'updated by trigger'
6311
WHERE f_int1 = - old.f_int1;
6314
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6316
# check trigger-7 success: 1
6318
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6319
f_int2 = CAST(f_char1 AS SIGNED INT),
6320
f_charbig = 'just inserted'
6321
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6323
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6324
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6325
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6326
'just inserted' FROM t0_template
6327
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6328
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6330
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6331
f_charbig = 'updated by trigger'
6332
WHERE f_int1 = - old.f_int1;
6335
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6337
# check trigger-8 success: 1
6339
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6340
f_int2 = CAST(f_char1 AS SIGNED INT),
6341
f_charbig = 'just inserted'
6342
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6344
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6346
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6347
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6349
SET new.f_int1 = old.f_int1 + @max_row,
6350
new.f_int2 = old.f_int2 - @max_row,
6351
new.f_charbig = '####updated per update trigger####';
6354
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6355
f_charbig = '####updated per update statement itself####';
6357
# check trigger-9 success: 1
6359
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6360
f_int2 = CAST(f_char1 AS SIGNED INT),
6361
f_charbig = CONCAT('===',f_char1,'===');
6362
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6364
SET new.f_int1 = new.f_int1 + @max_row,
6365
new.f_int2 = new.f_int2 - @max_row,
6366
new.f_charbig = '####updated per update trigger####';
6369
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6370
f_charbig = '####updated per update statement itself####';
6372
# check trigger-10 success: 1
6374
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6375
f_int2 = CAST(f_char1 AS SIGNED INT),
6376
f_charbig = CONCAT('===',f_char1,'===');
6377
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6379
SET new.f_int1 = @my_max1 + @counter,
6380
new.f_int2 = @my_min2 - @counter,
6381
new.f_charbig = '####updated per insert trigger####';
6382
SET @counter = @counter + 1;
6385
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6386
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6387
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6388
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6389
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6393
# check trigger-11 success: 1
6395
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6396
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6397
AND f_charbig = '####updated per insert trigger####';
6398
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6400
SET new.f_int1 = @my_max1 + @counter,
6401
new.f_int2 = @my_min2 - @counter,
6402
new.f_charbig = '####updated per insert trigger####';
6403
SET @counter = @counter + 1;
6406
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6407
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6408
SELECT CAST(f_int1 AS CHAR),
6409
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6410
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6414
# check trigger-12 success: 1
6416
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6417
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6418
AND f_charbig = '####updated per insert trigger####';
6420
Table Op Msg_type Msg_text
6421
test.t1 analyze note The storage engine for the table doesn't support analyze
6422
CHECK TABLE t1 EXTENDED;
6423
Table Op Msg_type Msg_text
6424
test.t1 check note The storage engine for the table doesn't support check
6425
CHECKSUM TABLE t1 EXTENDED;
6427
test.t1 <some_value>
6429
Table Op Msg_type Msg_text
6430
test.t1 optimize note The storage engine for the table doesn't support optimize
6431
# check layout success: 1
6432
REPAIR TABLE t1 EXTENDED;
6433
Table Op Msg_type Msg_text
6434
test.t1 repair note The storage engine for the table doesn't support repair
6435
# check layout success: 1
6438
# check TRUNCATE success: 1
6439
# check layout success: 1
6440
# End usability test (inc/partition_check.inc)
6447
f_charbig VARCHAR(1000)
6450
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
6451
(PARTITION part1 VALUES IN (0)
6452
(SUBPARTITION sp11, SUBPARTITION sp12),
6453
PARTITION part2 VALUES IN (1)
6454
(SUBPARTITION sp21, SUBPARTITION sp22),
6455
PARTITION part3 VALUES IN (2)
6456
(SUBPARTITION sp31, SUBPARTITION sp32),
6457
PARTITION part4 VALUES IN (NULL)
6458
(SUBPARTITION sp41, SUBPARTITION sp42));
6459
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6460
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
6461
# Start usability test (inc/partition_check.inc)
6463
SHOW CREATE TABLE t1;
6465
t1 CREATE TABLE `t1` (
6466
`f_int1` int(11) DEFAULT NULL,
6467
`f_int2` int(11) DEFAULT NULL,
6468
`f_char1` char(20) DEFAULT NULL,
6469
`f_char2` char(20) DEFAULT NULL,
6470
`f_charbig` varchar(1000) DEFAULT NULL
6471
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
6474
$MYSQLTEST_VARDIR/master-data/test/t1.frm
6475
$MYSQLTEST_VARDIR/master-data/test/t1.par
6477
# check prerequisites-1 success: 1
6478
# check COUNT(*) success: 1
6479
# check MIN/MAX(f_int1) success: 1
6480
# check MIN/MAX(f_int2) success: 1
6481
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6482
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6483
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6484
WHERE f_int1 IN (2,3);
6485
# check prerequisites-3 success: 1
6486
DELETE FROM t1 WHERE f_charbig = 'delete me';
6487
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6488
# check read via f_int1 success: 1
6489
# check read via f_int2 success: 1
6491
# check multiple-1 success: 1
6492
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6494
# check multiple-2 success: 1
6495
INSERT INTO t1 SELECT * FROM t0_template
6496
WHERE MOD(f_int1,3) = 0;
6498
# check multiple-3 success: 1
6499
UPDATE t1 SET f_int1 = f_int1 + @max_row
6500
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6501
AND @max_row_div2 + @max_row_div4;
6503
# check multiple-4 success: 1
6505
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6506
AND @max_row_div2 + @max_row_div4 + @max_row;
6508
# check multiple-5 success: 1
6509
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6511
SET f_int1 = @cur_value , f_int2 = @cur_value,
6512
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6513
f_charbig = '#SINGLE#';
6515
# check single-1 success: 1
6516
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6518
SET f_int1 = @cur_value , f_int2 = @cur_value,
6519
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6520
f_charbig = '#SINGLE#';
6522
# check single-2 success: 1
6523
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6524
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6525
UPDATE t1 SET f_int1 = @cur_value2
6526
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6528
# check single-3 success: 1
6529
SET @cur_value1= -1;
6530
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6531
UPDATE t1 SET f_int1 = @cur_value1
6532
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6534
# check single-4 success: 1
6535
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6536
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6538
# check single-5 success: 1
6539
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6541
# check single-6 success: 1
6542
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6544
# check single-7 success: 1
6545
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6546
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6547
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6548
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6549
f_charbig = '#NULL#';
6551
SET f_int1 = NULL , f_int2 = -@max_row,
6552
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6553
f_charbig = '#NULL#';
6554
# check null success: 1
6556
# check null-1 success: 1
6557
UPDATE t1 SET f_int1 = -@max_row
6558
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6559
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6561
# check null-2 success: 1
6562
UPDATE t1 SET f_int1 = NULL
6563
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6564
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6566
# check null-3 success: 1
6568
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
6569
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
6571
# check null-4 success: 1
6573
WHERE f_int1 = 0 AND f_int2 = 0
6574
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6575
AND f_charbig = '#NULL#';
6577
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6578
SELECT f_int1, f_int1, '', '', 'was inserted'
6579
FROM t0_template source_tab
6580
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6582
# check transactions-1 success: 1
6585
# check transactions-2 success: 1
6588
# check transactions-3 success: 1
6589
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6593
# check transactions-4 success: 1
6594
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6595
SELECT f_int1, f_int1, '', '', 'was inserted'
6596
FROM t0_template source_tab
6597
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6599
# check transactions-5 success: 1
6602
# check transactions-6 success: 1
6603
# INFO: Storage engine used for t1 seems to be transactional.
6606
# check transactions-7 success: 1
6607
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6609
SET @@session.sql_mode = 'traditional';
6610
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6611
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6612
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6613
'', '', 'was inserted' FROM t0_template
6614
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6615
ERROR 22012: Division by 0
6618
# check transactions-8 success: 1
6619
# INFO: Storage engine used for t1 seems to be able to revert
6620
# changes made by the failing statement.
6621
SET @@session.sql_mode = '';
6623
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6625
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6627
# check special-1 success: 1
6628
UPDATE t1 SET f_charbig = '';
6630
# check special-2 success: 1
6631
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6632
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6633
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6634
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6635
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6636
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6637
'just inserted' FROM t0_template
6638
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6639
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6641
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6642
f_charbig = 'updated by trigger'
6643
WHERE f_int1 = new.f_int1;
6645
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6646
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6647
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6649
# check trigger-1 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;
6657
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6658
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6659
'just inserted' FROM t0_template
6660
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6661
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6663
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6664
f_charbig = 'updated by trigger'
6665
WHERE f_int1 = new.f_int1;
6667
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6668
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6669
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6671
# check trigger-2 success: 1
6673
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6674
f_int2 = CAST(f_char1 AS SIGNED INT),
6675
f_charbig = 'just inserted'
6676
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6678
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6679
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6680
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6681
'just inserted' FROM t0_template
6682
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6683
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6685
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6686
f_charbig = 'updated by trigger'
6687
WHERE f_int1 = new.f_int1;
6689
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6690
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6692
# check trigger-3 success: 1
6694
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6695
f_int2 = CAST(f_char1 AS SIGNED INT),
6696
f_charbig = 'just inserted'
6697
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6699
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6702
'just inserted' FROM t0_template
6703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6704
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6707
f_charbig = 'updated by trigger'
6708
WHERE f_int1 = - old.f_int1;
6710
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6711
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6713
# check trigger-4 success: 1
6715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6716
f_int2 = CAST(f_char1 AS SIGNED INT),
6717
f_charbig = 'just inserted'
6718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6723
'just inserted' FROM t0_template
6724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6725
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6728
f_charbig = 'updated by trigger'
6729
WHERE f_int1 = new.f_int1;
6731
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6734
# check trigger-5 success: 1
6736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6737
f_int2 = CAST(f_char1 AS SIGNED INT),
6738
f_charbig = 'just inserted'
6739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6742
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6743
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6744
'just inserted' FROM t0_template
6745
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6746
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6748
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6749
f_charbig = 'updated by trigger'
6750
WHERE f_int1 = - old.f_int1;
6752
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6753
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6755
# check trigger-6 success: 1
6757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6758
f_int2 = CAST(f_char1 AS SIGNED INT),
6759
f_charbig = 'just inserted'
6760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6765
'just inserted' FROM t0_template
6766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6767
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6770
f_charbig = 'updated by trigger'
6771
WHERE f_int1 = - old.f_int1;
6774
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6776
# check trigger-7 success: 1
6778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6779
f_int2 = CAST(f_char1 AS SIGNED INT),
6780
f_charbig = 'just inserted'
6781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6783
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6785
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6786
'just inserted' FROM t0_template
6787
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6788
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6790
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6791
f_charbig = 'updated by trigger'
6792
WHERE f_int1 = - old.f_int1;
6795
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6797
# check trigger-8 success: 1
6799
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6800
f_int2 = CAST(f_char1 AS SIGNED INT),
6801
f_charbig = 'just inserted'
6802
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6804
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6806
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6807
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6809
SET new.f_int1 = old.f_int1 + @max_row,
6810
new.f_int2 = old.f_int2 - @max_row,
6811
new.f_charbig = '####updated per update trigger####';
6814
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6815
f_charbig = '####updated per update statement itself####';
6817
# check trigger-9 success: 1
6819
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6820
f_int2 = CAST(f_char1 AS SIGNED INT),
6821
f_charbig = CONCAT('===',f_char1,'===');
6822
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6824
SET new.f_int1 = new.f_int1 + @max_row,
6825
new.f_int2 = new.f_int2 - @max_row,
6826
new.f_charbig = '####updated per update trigger####';
6829
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6830
f_charbig = '####updated per update statement itself####';
6832
# check trigger-10 success: 1
6834
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6835
f_int2 = CAST(f_char1 AS SIGNED INT),
6836
f_charbig = CONCAT('===',f_char1,'===');
6837
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6839
SET new.f_int1 = @my_max1 + @counter,
6840
new.f_int2 = @my_min2 - @counter,
6841
new.f_charbig = '####updated per insert trigger####';
6842
SET @counter = @counter + 1;
6845
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6846
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6847
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6848
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6849
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6853
# check trigger-11 success: 1
6855
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6856
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6857
AND f_charbig = '####updated per insert trigger####';
6858
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6860
SET new.f_int1 = @my_max1 + @counter,
6861
new.f_int2 = @my_min2 - @counter,
6862
new.f_charbig = '####updated per insert trigger####';
6863
SET @counter = @counter + 1;
6866
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6867
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6868
SELECT CAST(f_int1 AS CHAR),
6869
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6870
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6874
# check trigger-12 success: 1
6876
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6877
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6878
AND f_charbig = '####updated per insert trigger####';
6880
Table Op Msg_type Msg_text
6881
test.t1 analyze note The storage engine for the table doesn't support analyze
6882
CHECK TABLE t1 EXTENDED;
6883
Table Op Msg_type Msg_text
6884
test.t1 check note The storage engine for the table doesn't support check
6885
CHECKSUM TABLE t1 EXTENDED;
6887
test.t1 <some_value>
6889
Table Op Msg_type Msg_text
6890
test.t1 optimize note The storage engine for the table doesn't support optimize
6891
# check layout success: 1
6892
REPAIR TABLE t1 EXTENDED;
6893
Table Op Msg_type Msg_text
6894
test.t1 repair note The storage engine for the table doesn't support repair
6895
# check layout success: 1
6898
# check TRUNCATE success: 1
6899
# check layout success: 1
6900
# End usability test (inc/partition_check.inc)
6907
f_charbig VARCHAR(1000)
6910
PARTITION BY LIST(ABS(MOD(f_int1,2)))
6911
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
6912
(PARTITION part1 VALUES IN (0),
6913
PARTITION part2 VALUES IN (1),
6914
PARTITION part3 VALUES IN (NULL));
6915
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6916
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
6917
# Start usability test (inc/partition_check.inc)
6919
SHOW CREATE TABLE t1;
6921
t1 CREATE TABLE `t1` (
6922
`f_int1` int(11) DEFAULT NULL,
6923
`f_int2` int(11) DEFAULT NULL,
6924
`f_char1` char(20) DEFAULT NULL,
6925
`f_char2` char(20) DEFAULT NULL,
6926
`f_charbig` varchar(1000) DEFAULT NULL
6927
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
6930
$MYSQLTEST_VARDIR/master-data/test/t1.frm
6931
$MYSQLTEST_VARDIR/master-data/test/t1.par
6933
# check prerequisites-1 success: 1
6934
# check COUNT(*) success: 1
6935
# check MIN/MAX(f_int1) success: 1
6936
# check MIN/MAX(f_int2) success: 1
6937
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6938
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6939
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6940
WHERE f_int1 IN (2,3);
6941
# check prerequisites-3 success: 1
6942
DELETE FROM t1 WHERE f_charbig = 'delete me';
6943
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6944
# check read via f_int1 success: 1
6945
# check read via f_int2 success: 1
6947
# check multiple-1 success: 1
6948
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6950
# check multiple-2 success: 1
6951
INSERT INTO t1 SELECT * FROM t0_template
6952
WHERE MOD(f_int1,3) = 0;
6954
# check multiple-3 success: 1
6955
UPDATE t1 SET f_int1 = f_int1 + @max_row
6956
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6957
AND @max_row_div2 + @max_row_div4;
6959
# check multiple-4 success: 1
6961
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6962
AND @max_row_div2 + @max_row_div4 + @max_row;
6964
# check multiple-5 success: 1
6965
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6967
SET f_int1 = @cur_value , f_int2 = @cur_value,
6968
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6969
f_charbig = '#SINGLE#';
6971
# check single-1 success: 1
6972
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6974
SET f_int1 = @cur_value , f_int2 = @cur_value,
6975
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6976
f_charbig = '#SINGLE#';
6978
# check single-2 success: 1
6979
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6980
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6981
UPDATE t1 SET f_int1 = @cur_value2
6982
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6984
# check single-3 success: 1
6985
SET @cur_value1= -1;
6986
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6987
UPDATE t1 SET f_int1 = @cur_value1
6988
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6990
# check single-4 success: 1
6991
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6992
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6994
# check single-5 success: 1
6995
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6997
# check single-6 success: 1
6998
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7000
# check single-7 success: 1
7001
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7002
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7003
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7004
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7005
f_charbig = '#NULL#';
7007
SET f_int1 = NULL , f_int2 = -@max_row,
7008
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7009
f_charbig = '#NULL#';
7010
# check null success: 1
7012
# check null-1 success: 1
7013
UPDATE t1 SET f_int1 = -@max_row
7014
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7015
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7017
# check null-2 success: 1
7018
UPDATE t1 SET f_int1 = NULL
7019
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7020
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7022
# check null-3 success: 1
7024
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7025
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7027
# check null-4 success: 1
7029
WHERE f_int1 = 0 AND f_int2 = 0
7030
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7031
AND f_charbig = '#NULL#';
7033
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7034
SELECT f_int1, f_int1, '', '', 'was inserted'
7035
FROM t0_template source_tab
7036
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7038
# check transactions-1 success: 1
7041
# check transactions-2 success: 1
7044
# check transactions-3 success: 1
7045
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7049
# check transactions-4 success: 1
7050
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7051
SELECT f_int1, f_int1, '', '', 'was inserted'
7052
FROM t0_template source_tab
7053
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7055
# check transactions-5 success: 1
7058
# check transactions-6 success: 1
7059
# INFO: Storage engine used for t1 seems to be transactional.
7062
# check transactions-7 success: 1
7063
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7065
SET @@session.sql_mode = 'traditional';
7066
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7067
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7068
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7069
'', '', 'was inserted' FROM t0_template
7070
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7071
ERROR 22012: Division by 0
7074
# check transactions-8 success: 1
7075
# INFO: Storage engine used for t1 seems to be able to revert
7076
# changes made by the failing statement.
7077
SET @@session.sql_mode = '';
7079
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7081
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7083
# check special-1 success: 1
7084
UPDATE t1 SET f_charbig = '';
7086
# check special-2 success: 1
7087
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7088
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7089
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7090
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7091
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7092
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7093
'just inserted' FROM t0_template
7094
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7095
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7097
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7098
f_charbig = 'updated by trigger'
7099
WHERE f_int1 = new.f_int1;
7101
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7102
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7105
# check trigger-1 success: 1
7107
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7108
f_int2 = CAST(f_char1 AS SIGNED INT),
7109
f_charbig = 'just inserted'
7110
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7112
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7113
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7114
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7115
'just inserted' FROM t0_template
7116
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7117
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7119
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7120
f_charbig = 'updated by trigger'
7121
WHERE f_int1 = new.f_int1;
7123
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7124
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7125
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7127
# check trigger-2 success: 1
7129
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7130
f_int2 = CAST(f_char1 AS SIGNED INT),
7131
f_charbig = 'just inserted'
7132
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7134
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7135
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7136
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7137
'just inserted' FROM t0_template
7138
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7139
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7141
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7142
f_charbig = 'updated by trigger'
7143
WHERE f_int1 = new.f_int1;
7145
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7146
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7148
# check trigger-3 success: 1
7150
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7151
f_int2 = CAST(f_char1 AS SIGNED INT),
7152
f_charbig = 'just inserted'
7153
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7155
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7156
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7157
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7158
'just inserted' FROM t0_template
7159
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7160
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7162
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7163
f_charbig = 'updated by trigger'
7164
WHERE f_int1 = - old.f_int1;
7166
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7167
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7169
# check trigger-4 success: 1
7171
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7172
f_int2 = CAST(f_char1 AS SIGNED INT),
7173
f_charbig = 'just inserted'
7174
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7176
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7177
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7178
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7179
'just inserted' FROM t0_template
7180
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7181
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7183
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7184
f_charbig = 'updated by trigger'
7185
WHERE f_int1 = new.f_int1;
7187
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7188
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7190
# check trigger-5 success: 1
7192
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7193
f_int2 = CAST(f_char1 AS SIGNED INT),
7194
f_charbig = 'just inserted'
7195
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7197
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7198
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7199
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7200
'just inserted' FROM t0_template
7201
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7202
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7204
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7205
f_charbig = 'updated by trigger'
7206
WHERE f_int1 = - old.f_int1;
7208
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7209
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7211
# check trigger-6 success: 1
7213
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7214
f_int2 = CAST(f_char1 AS SIGNED INT),
7215
f_charbig = 'just inserted'
7216
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7218
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7219
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7220
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7221
'just inserted' FROM t0_template
7222
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7223
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7225
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7226
f_charbig = 'updated by trigger'
7227
WHERE f_int1 = - old.f_int1;
7230
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7232
# check trigger-7 success: 1
7234
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7235
f_int2 = CAST(f_char1 AS SIGNED INT),
7236
f_charbig = 'just inserted'
7237
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7239
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7240
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7241
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7242
'just inserted' FROM t0_template
7243
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7244
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7246
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7247
f_charbig = 'updated by trigger'
7248
WHERE f_int1 = - old.f_int1;
7251
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7253
# check trigger-8 success: 1
7255
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7256
f_int2 = CAST(f_char1 AS SIGNED INT),
7257
f_charbig = 'just inserted'
7258
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7260
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7262
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7263
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7265
SET new.f_int1 = old.f_int1 + @max_row,
7266
new.f_int2 = old.f_int2 - @max_row,
7267
new.f_charbig = '####updated per update trigger####';
7270
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7271
f_charbig = '####updated per update statement itself####';
7273
# check trigger-9 success: 1
7275
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7276
f_int2 = CAST(f_char1 AS SIGNED INT),
7277
f_charbig = CONCAT('===',f_char1,'===');
7278
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7280
SET new.f_int1 = new.f_int1 + @max_row,
7281
new.f_int2 = new.f_int2 - @max_row,
7282
new.f_charbig = '####updated per update trigger####';
7285
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7286
f_charbig = '####updated per update statement itself####';
7288
# check trigger-10 success: 1
7290
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7291
f_int2 = CAST(f_char1 AS SIGNED INT),
7292
f_charbig = CONCAT('===',f_char1,'===');
7293
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7295
SET new.f_int1 = @my_max1 + @counter,
7296
new.f_int2 = @my_min2 - @counter,
7297
new.f_charbig = '####updated per insert trigger####';
7298
SET @counter = @counter + 1;
7301
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7302
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7303
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7304
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7305
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7309
# check trigger-11 success: 1
7311
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7312
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7313
AND f_charbig = '####updated per insert trigger####';
7314
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7316
SET new.f_int1 = @my_max1 + @counter,
7317
new.f_int2 = @my_min2 - @counter,
7318
new.f_charbig = '####updated per insert trigger####';
7319
SET @counter = @counter + 1;
7322
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7323
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7324
SELECT CAST(f_int1 AS CHAR),
7325
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7326
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7330
# check trigger-12 success: 1
7332
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7333
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7334
AND f_charbig = '####updated per insert trigger####';
7336
Table Op Msg_type Msg_text
7337
test.t1 analyze note The storage engine for the table doesn't support analyze
7338
CHECK TABLE t1 EXTENDED;
7339
Table Op Msg_type Msg_text
7340
test.t1 check note The storage engine for the table doesn't support check
7341
CHECKSUM TABLE t1 EXTENDED;
7343
test.t1 <some_value>
7345
Table Op Msg_type Msg_text
7346
test.t1 optimize note The storage engine for the table doesn't support optimize
7347
# check layout success: 1
7348
REPAIR TABLE t1 EXTENDED;
7349
Table Op Msg_type Msg_text
7350
test.t1 repair note The storage engine for the table doesn't support repair
7351
# check layout success: 1
7354
# check TRUNCATE success: 1
7355
# check layout success: 1
7356
# End usability test (inc/partition_check.inc)
7358
#------------------------------------------------------------------------
7359
# 2 Tables with PRIMARY KEY and/or UNIQUE INDEXes
7360
# The partitioning function contains one column.
7361
#------------------------------------------------------------------------
7362
# 2.5 PRIMARY KEY + UNIQUE INDEX consisting of two columns
7363
DROP TABLE IF EXISTS t1;
7369
f_charbig VARCHAR(1000)
7370
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
7372
PARTITION BY HASH(f_int1) PARTITIONS 2;
7373
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7374
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
7375
# Start usability test (inc/partition_check.inc)
7377
SHOW CREATE TABLE t1;
7379
t1 CREATE TABLE `t1` (
7380
`f_int1` int(11) NOT NULL DEFAULT '0',
7381
`f_int2` int(11) NOT NULL DEFAULT '0',
7382
`f_char1` char(20) DEFAULT NULL,
7383
`f_char2` char(20) DEFAULT NULL,
7384
`f_charbig` varchar(1000) DEFAULT NULL,
7385
PRIMARY KEY (`f_int2`,`f_int1`),
7386
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
7387
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) PARTITIONS 2 */
7390
$MYSQLTEST_VARDIR/master-data/test/t1.frm
7391
$MYSQLTEST_VARDIR/master-data/test/t1.par
7393
# check prerequisites-1 success: 1
7394
# check COUNT(*) success: 1
7395
# check MIN/MAX(f_int1) success: 1
7396
# check MIN/MAX(f_int2) success: 1
7397
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7398
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7399
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7400
WHERE f_int1 IN (2,3);
7401
ERROR 23000: Can't write; duplicate key in table 't1'
7402
# check prerequisites-3 success: 1
7403
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
7404
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7405
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7406
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7407
WHERE f_int1 IN (2,3);
7408
DELETE FROM t1 WHERE f_charbig = 'delete me';
7409
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7410
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7411
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7412
WHERE f_int1 IN (2,3);
7413
DELETE FROM t1 WHERE f_charbig = 'delete me';
7414
# check read via f_int1 success: 1
7415
# check read via f_int2 success: 1
7417
# check multiple-1 success: 1
7418
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7420
# check multiple-2 success: 1
7421
INSERT INTO t1 SELECT * FROM t0_template
7422
WHERE MOD(f_int1,3) = 0;
7424
# check multiple-3 success: 1
7425
UPDATE t1 SET f_int1 = f_int1 + @max_row
7426
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7427
AND @max_row_div2 + @max_row_div4;
7429
# check multiple-4 success: 1
7431
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7432
AND @max_row_div2 + @max_row_div4 + @max_row;
7434
# check multiple-5 success: 1
7435
SELECT COUNT(*) INTO @try_count FROM t0_template
7436
WHERE MOD(f_int1,3) = 0
7437
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7438
SELECT COUNT(*) INTO @clash_count
7439
FROM t1 INNER JOIN t0_template USING(f_int1)
7440
WHERE MOD(f_int1,3) = 0
7441
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7442
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7444
SET f_int1 = @cur_value , f_int2 = @cur_value,
7445
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7446
f_charbig = '#SINGLE#';
7448
# check single-1 success: 1
7449
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7451
SET f_int1 = @cur_value , f_int2 = @cur_value,
7452
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7453
f_charbig = '#SINGLE#';
7455
# check single-2 success: 1
7456
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7457
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7458
UPDATE t1 SET f_int1 = @cur_value2
7459
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7461
# check single-3 success: 1
7462
SET @cur_value1= -1;
7463
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7464
UPDATE t1 SET f_int1 = @cur_value1
7465
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7467
# check single-4 success: 1
7468
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7469
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7471
# check single-5 success: 1
7472
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7474
# check single-6 success: 1
7475
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7477
# check single-7 success: 1
7478
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7479
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7480
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7481
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7482
f_charbig = '#NULL#';
7484
SET f_int1 = NULL , f_int2 = -@max_row,
7485
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7486
f_charbig = '#NULL#';
7487
ERROR 23000: Column 'f_int1' cannot be null
7488
# check null success: 1
7490
WHERE f_int1 = 0 AND f_int2 = 0
7491
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7492
AND f_charbig = '#NULL#';
7493
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7494
SELECT f_int1, f_int1, '', '', 'was inserted'
7495
FROM t0_template source_tab
7496
WHERE MOD(f_int1,3) = 0
7497
AND f_int1 BETWEEN @max_row_div2 AND @max_row
7499
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
7500
f_int2 = 2 * @max_row + source_tab.f_int1,
7501
f_charbig = 'was updated';
7503
# check unique-1-a success: 1
7505
# check unique-1-b success: 1
7506
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7507
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7508
f_int2 = CAST(f_char1 AS SIGNED INT),
7509
f_charbig = CONCAT('===',f_char1,'===')
7510
WHERE f_charbig = 'was updated';
7511
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7512
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
7513
FROM t0_template source_tab
7514
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7516
# check replace success: 1
7518
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
7520
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
7521
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
7522
UPDATE t1 SET f_int2 = f_int1,
7523
f_char1 = CAST(f_int1 AS CHAR),
7524
f_char2 = CAST(f_int1 AS CHAR),
7525
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
7526
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
7528
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7529
SELECT f_int1, f_int1, '', '', 'was inserted'
7530
FROM t0_template source_tab
7531
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7533
# check transactions-1 success: 1
7536
# check transactions-2 success: 1
7539
# check transactions-3 success: 1
7540
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7544
# check transactions-4 success: 1
7545
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7546
SELECT f_int1, f_int1, '', '', 'was inserted'
7547
FROM t0_template source_tab
7548
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7550
# check transactions-5 success: 1
7553
# check transactions-6 success: 1
7554
# INFO: Storage engine used for t1 seems to be transactional.
7557
# check transactions-7 success: 1
7558
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7560
SET @@session.sql_mode = 'traditional';
7561
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7562
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7563
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7564
'', '', 'was inserted' FROM t0_template
7565
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7566
ERROR 22012: Division by 0
7569
# check transactions-8 success: 1
7570
# INFO: Storage engine used for t1 seems to be able to revert
7571
# changes made by the failing statement.
7572
SET @@session.sql_mode = '';
7574
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7576
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7578
# check special-1 success: 1
7579
UPDATE t1 SET f_charbig = '';
7581
# check special-2 success: 1
7582
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7583
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7584
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7585
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7586
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7587
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7588
'just inserted' FROM t0_template
7589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7590
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7592
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7593
f_charbig = 'updated by trigger'
7594
WHERE f_int1 = new.f_int1;
7596
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7597
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7598
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7600
# check trigger-1 success: 1
7602
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7603
f_int2 = CAST(f_char1 AS SIGNED INT),
7604
f_charbig = 'just inserted'
7605
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7607
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7608
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7609
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7610
'just inserted' FROM t0_template
7611
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7612
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7614
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7615
f_charbig = 'updated by trigger'
7616
WHERE f_int1 = new.f_int1;
7618
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7619
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7620
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7622
# check trigger-2 success: 1
7624
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7625
f_int2 = CAST(f_char1 AS SIGNED INT),
7626
f_charbig = 'just inserted'
7627
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7629
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7630
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7631
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7632
'just inserted' FROM t0_template
7633
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7634
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7636
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7637
f_charbig = 'updated by trigger'
7638
WHERE f_int1 = new.f_int1;
7640
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7641
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7643
# check trigger-3 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 = 'just inserted'
7648
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7650
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7651
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7652
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7653
'just inserted' FROM t0_template
7654
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7655
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7657
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7658
f_charbig = 'updated by trigger'
7659
WHERE f_int1 = - old.f_int1;
7661
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7662
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7664
# check trigger-4 success: 1
7666
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7667
f_int2 = CAST(f_char1 AS SIGNED INT),
7668
f_charbig = 'just inserted'
7669
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7671
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7672
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7673
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7674
'just inserted' FROM t0_template
7675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7676
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7678
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7679
f_charbig = 'updated by trigger'
7680
WHERE f_int1 = new.f_int1;
7682
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7683
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7685
# check trigger-5 success: 1
7687
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7688
f_int2 = CAST(f_char1 AS SIGNED INT),
7689
f_charbig = 'just inserted'
7690
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7692
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7693
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7694
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7695
'just inserted' FROM t0_template
7696
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7697
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7699
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7700
f_charbig = 'updated by trigger'
7701
WHERE f_int1 = - old.f_int1;
7703
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7704
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7706
# check trigger-6 success: 1
7708
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7709
f_int2 = CAST(f_char1 AS SIGNED INT),
7710
f_charbig = 'just inserted'
7711
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7713
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7714
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7715
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7716
'just inserted' FROM t0_template
7717
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7718
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7720
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7721
f_charbig = 'updated by trigger'
7722
WHERE f_int1 = - old.f_int1;
7725
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7727
# check trigger-7 success: 1
7729
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7730
f_int2 = CAST(f_char1 AS SIGNED INT),
7731
f_charbig = 'just inserted'
7732
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7734
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7735
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7736
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7737
'just inserted' FROM t0_template
7738
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7739
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7741
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7742
f_charbig = 'updated by trigger'
7743
WHERE f_int1 = - old.f_int1;
7746
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7748
# check trigger-8 success: 1
7750
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7751
f_int2 = CAST(f_char1 AS SIGNED INT),
7752
f_charbig = 'just inserted'
7753
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7755
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7757
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7758
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7760
SET new.f_int1 = old.f_int1 + @max_row,
7761
new.f_int2 = old.f_int2 - @max_row,
7762
new.f_charbig = '####updated per update trigger####';
7765
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7766
f_charbig = '####updated per update statement itself####';
7768
# check trigger-9 success: 1
7770
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7771
f_int2 = CAST(f_char1 AS SIGNED INT),
7772
f_charbig = CONCAT('===',f_char1,'===');
7773
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7775
SET new.f_int1 = new.f_int1 + @max_row,
7776
new.f_int2 = new.f_int2 - @max_row,
7777
new.f_charbig = '####updated per update trigger####';
7780
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7781
f_charbig = '####updated per update statement itself####';
7783
# check trigger-10 success: 1
7785
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7786
f_int2 = CAST(f_char1 AS SIGNED INT),
7787
f_charbig = CONCAT('===',f_char1,'===');
7788
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7790
SET new.f_int1 = @my_max1 + @counter,
7791
new.f_int2 = @my_min2 - @counter,
7792
new.f_charbig = '####updated per insert trigger####';
7793
SET @counter = @counter + 1;
7796
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7797
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7798
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7799
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7800
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7804
# check trigger-11 success: 1
7806
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7807
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7808
AND f_charbig = '####updated per insert trigger####';
7809
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7811
SET new.f_int1 = @my_max1 + @counter,
7812
new.f_int2 = @my_min2 - @counter,
7813
new.f_charbig = '####updated per insert trigger####';
7814
SET @counter = @counter + 1;
7817
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7818
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7819
SELECT CAST(f_int1 AS CHAR),
7820
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7821
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7825
# check trigger-12 success: 1
7827
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7828
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7829
AND f_charbig = '####updated per insert trigger####';
7831
Table Op Msg_type Msg_text
7832
test.t1 analyze note The storage engine for the table doesn't support analyze
7833
CHECK TABLE t1 EXTENDED;
7834
Table Op Msg_type Msg_text
7835
test.t1 check note The storage engine for the table doesn't support check
7836
CHECKSUM TABLE t1 EXTENDED;
7838
test.t1 <some_value>
7840
Table Op Msg_type Msg_text
7841
test.t1 optimize note The storage engine for the table doesn't support optimize
7842
# check layout success: 1
7843
REPAIR TABLE t1 EXTENDED;
7844
Table Op Msg_type Msg_text
7845
test.t1 repair note The storage engine for the table doesn't support repair
7846
# check layout success: 1
7849
# check TRUNCATE success: 1
7850
# check layout success: 1
7851
# End usability test (inc/partition_check.inc)
7858
f_charbig VARCHAR(1000)
7859
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
7861
PARTITION BY KEY(f_int1) PARTITIONS 5;
7862
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7863
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
7864
# Start usability test (inc/partition_check.inc)
7866
SHOW CREATE TABLE t1;
7868
t1 CREATE TABLE `t1` (
7869
`f_int1` int(11) NOT NULL DEFAULT '0',
7870
`f_int2` int(11) NOT NULL DEFAULT '0',
7871
`f_char1` char(20) DEFAULT NULL,
7872
`f_char2` char(20) DEFAULT NULL,
7873
`f_charbig` varchar(1000) DEFAULT NULL,
7874
PRIMARY KEY (`f_int2`,`f_int1`),
7875
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
7876
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) PARTITIONS 5 */
7879
$MYSQLTEST_VARDIR/master-data/test/t1.frm
7880
$MYSQLTEST_VARDIR/master-data/test/t1.par
7882
# check prerequisites-1 success: 1
7883
# check COUNT(*) success: 1
7884
# check MIN/MAX(f_int1) success: 1
7885
# check MIN/MAX(f_int2) success: 1
7886
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7887
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7888
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7889
WHERE f_int1 IN (2,3);
7890
ERROR 23000: Can't write; duplicate key in table 't1'
7891
# check prerequisites-3 success: 1
7892
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
7893
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7894
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7895
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7896
WHERE f_int1 IN (2,3);
7897
DELETE FROM t1 WHERE f_charbig = 'delete me';
7898
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7899
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
7900
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
7901
WHERE f_int1 IN (2,3);
7902
DELETE FROM t1 WHERE f_charbig = 'delete me';
7903
# check read via f_int1 success: 1
7904
# check read via f_int2 success: 1
7906
# check multiple-1 success: 1
7907
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7909
# check multiple-2 success: 1
7910
INSERT INTO t1 SELECT * FROM t0_template
7911
WHERE MOD(f_int1,3) = 0;
7913
# check multiple-3 success: 1
7914
UPDATE t1 SET f_int1 = f_int1 + @max_row
7915
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7916
AND @max_row_div2 + @max_row_div4;
7918
# check multiple-4 success: 1
7920
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7921
AND @max_row_div2 + @max_row_div4 + @max_row;
7923
# check multiple-5 success: 1
7924
SELECT COUNT(*) INTO @try_count FROM t0_template
7925
WHERE MOD(f_int1,3) = 0
7926
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7927
SELECT COUNT(*) INTO @clash_count
7928
FROM t1 INNER JOIN t0_template USING(f_int1)
7929
WHERE MOD(f_int1,3) = 0
7930
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
7931
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7933
SET f_int1 = @cur_value , f_int2 = @cur_value,
7934
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7935
f_charbig = '#SINGLE#';
7937
# check single-1 success: 1
7938
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7940
SET f_int1 = @cur_value , f_int2 = @cur_value,
7941
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7942
f_charbig = '#SINGLE#';
7944
# check single-2 success: 1
7945
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7946
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7947
UPDATE t1 SET f_int1 = @cur_value2
7948
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7950
# check single-3 success: 1
7951
SET @cur_value1= -1;
7952
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7953
UPDATE t1 SET f_int1 = @cur_value1
7954
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7956
# check single-4 success: 1
7957
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7958
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7960
# check single-5 success: 1
7961
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7963
# check single-6 success: 1
7964
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7966
# check single-7 success: 1
7967
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7968
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7969
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7970
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7971
f_charbig = '#NULL#';
7973
SET f_int1 = NULL , f_int2 = -@max_row,
7974
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7975
f_charbig = '#NULL#';
7976
ERROR 23000: Column 'f_int1' cannot be null
7977
# check null success: 1
7979
WHERE f_int1 = 0 AND f_int2 = 0
7980
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7981
AND f_charbig = '#NULL#';
7982
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7983
SELECT f_int1, f_int1, '', '', 'was inserted'
7984
FROM t0_template source_tab
7985
WHERE MOD(f_int1,3) = 0
7986
AND f_int1 BETWEEN @max_row_div2 AND @max_row
7988
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
7989
f_int2 = 2 * @max_row + source_tab.f_int1,
7990
f_charbig = 'was updated';
7992
# check unique-1-a success: 1
7994
# check unique-1-b success: 1
7995
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7996
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7997
f_int2 = CAST(f_char1 AS SIGNED INT),
7998
f_charbig = CONCAT('===',f_char1,'===')
7999
WHERE f_charbig = 'was updated';
8000
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8001
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8002
FROM t0_template source_tab
8003
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8005
# check replace success: 1
8007
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8009
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8010
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8011
UPDATE t1 SET f_int2 = f_int1,
8012
f_char1 = CAST(f_int1 AS CHAR),
8013
f_char2 = CAST(f_int1 AS CHAR),
8014
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8015
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
8017
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8018
SELECT f_int1, f_int1, '', '', 'was inserted'
8019
FROM t0_template source_tab
8020
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8022
# check transactions-1 success: 1
8025
# check transactions-2 success: 1
8028
# check transactions-3 success: 1
8029
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8033
# check transactions-4 success: 1
8034
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8035
SELECT f_int1, f_int1, '', '', 'was inserted'
8036
FROM t0_template source_tab
8037
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8039
# check transactions-5 success: 1
8042
# check transactions-6 success: 1
8043
# INFO: Storage engine used for t1 seems to be transactional.
8046
# check transactions-7 success: 1
8047
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8049
SET @@session.sql_mode = 'traditional';
8050
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8051
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8052
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8053
'', '', 'was inserted' FROM t0_template
8054
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8055
ERROR 22012: Division by 0
8058
# check transactions-8 success: 1
8059
# INFO: Storage engine used for t1 seems to be able to revert
8060
# changes made by the failing statement.
8061
SET @@session.sql_mode = '';
8063
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8065
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8067
# check special-1 success: 1
8068
UPDATE t1 SET f_charbig = '';
8070
# check special-2 success: 1
8071
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8072
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8073
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8074
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8075
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8076
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8077
'just inserted' FROM t0_template
8078
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8079
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8081
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8082
f_charbig = 'updated by trigger'
8083
WHERE f_int1 = new.f_int1;
8085
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8086
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8089
# check trigger-1 success: 1
8091
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8092
f_int2 = CAST(f_char1 AS SIGNED INT),
8093
f_charbig = 'just inserted'
8094
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8096
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8097
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8098
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8099
'just inserted' FROM t0_template
8100
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8101
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8103
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8104
f_charbig = 'updated by trigger'
8105
WHERE f_int1 = new.f_int1;
8107
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8108
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8109
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8111
# check trigger-2 success: 1
8113
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8114
f_int2 = CAST(f_char1 AS SIGNED INT),
8115
f_charbig = 'just inserted'
8116
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8118
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8119
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8120
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8121
'just inserted' FROM t0_template
8122
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8123
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8125
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8126
f_charbig = 'updated by trigger'
8127
WHERE f_int1 = new.f_int1;
8129
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8130
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8132
# check trigger-3 success: 1
8134
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8135
f_int2 = CAST(f_char1 AS SIGNED INT),
8136
f_charbig = 'just inserted'
8137
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8139
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8140
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8141
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8142
'just inserted' FROM t0_template
8143
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8144
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8146
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8147
f_charbig = 'updated by trigger'
8148
WHERE f_int1 = - old.f_int1;
8150
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8151
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8153
# check trigger-4 success: 1
8155
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8156
f_int2 = CAST(f_char1 AS SIGNED INT),
8157
f_charbig = 'just inserted'
8158
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8160
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8161
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8162
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8163
'just inserted' FROM t0_template
8164
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8165
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8167
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8168
f_charbig = 'updated by trigger'
8169
WHERE f_int1 = new.f_int1;
8171
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8172
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8174
# check trigger-5 success: 1
8176
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8177
f_int2 = CAST(f_char1 AS SIGNED INT),
8178
f_charbig = 'just inserted'
8179
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8181
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8182
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8183
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8184
'just inserted' FROM t0_template
8185
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8186
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8188
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8189
f_charbig = 'updated by trigger'
8190
WHERE f_int1 = - old.f_int1;
8192
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8193
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8195
# check trigger-6 success: 1
8197
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8198
f_int2 = CAST(f_char1 AS SIGNED INT),
8199
f_charbig = 'just inserted'
8200
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8202
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8203
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8204
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8205
'just inserted' FROM t0_template
8206
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8207
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8209
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8210
f_charbig = 'updated by trigger'
8211
WHERE f_int1 = - old.f_int1;
8214
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8216
# check trigger-7 success: 1
8218
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8219
f_int2 = CAST(f_char1 AS SIGNED INT),
8220
f_charbig = 'just inserted'
8221
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8223
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8224
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8225
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8226
'just inserted' FROM t0_template
8227
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8228
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8230
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8231
f_charbig = 'updated by trigger'
8232
WHERE f_int1 = - old.f_int1;
8235
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8237
# check trigger-8 success: 1
8239
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8240
f_int2 = CAST(f_char1 AS SIGNED INT),
8241
f_charbig = 'just inserted'
8242
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8244
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8246
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8247
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8249
SET new.f_int1 = old.f_int1 + @max_row,
8250
new.f_int2 = old.f_int2 - @max_row,
8251
new.f_charbig = '####updated per update trigger####';
8254
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8255
f_charbig = '####updated per update statement itself####';
8257
# check trigger-9 success: 1
8259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8260
f_int2 = CAST(f_char1 AS SIGNED INT),
8261
f_charbig = CONCAT('===',f_char1,'===');
8262
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8264
SET new.f_int1 = new.f_int1 + @max_row,
8265
new.f_int2 = new.f_int2 - @max_row,
8266
new.f_charbig = '####updated per update trigger####';
8269
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8270
f_charbig = '####updated per update statement itself####';
8272
# check trigger-10 success: 1
8274
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8275
f_int2 = CAST(f_char1 AS SIGNED INT),
8276
f_charbig = CONCAT('===',f_char1,'===');
8277
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8279
SET new.f_int1 = @my_max1 + @counter,
8280
new.f_int2 = @my_min2 - @counter,
8281
new.f_charbig = '####updated per insert trigger####';
8282
SET @counter = @counter + 1;
8285
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8286
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8287
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8288
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8289
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8293
# check trigger-11 success: 1
8295
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8296
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8297
AND f_charbig = '####updated per insert trigger####';
8298
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8300
SET new.f_int1 = @my_max1 + @counter,
8301
new.f_int2 = @my_min2 - @counter,
8302
new.f_charbig = '####updated per insert trigger####';
8303
SET @counter = @counter + 1;
8306
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8307
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8308
SELECT CAST(f_int1 AS CHAR),
8309
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8310
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8314
# check trigger-12 success: 1
8316
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8317
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8318
AND f_charbig = '####updated per insert trigger####';
8320
Table Op Msg_type Msg_text
8321
test.t1 analyze note The storage engine for the table doesn't support analyze
8322
CHECK TABLE t1 EXTENDED;
8323
Table Op Msg_type Msg_text
8324
test.t1 check note The storage engine for the table doesn't support check
8325
CHECKSUM TABLE t1 EXTENDED;
8327
test.t1 <some_value>
8329
Table Op Msg_type Msg_text
8330
test.t1 optimize note The storage engine for the table doesn't support optimize
8331
# check layout success: 1
8332
REPAIR TABLE t1 EXTENDED;
8333
Table Op Msg_type Msg_text
8334
test.t1 repair note The storage engine for the table doesn't support repair
8335
# check layout success: 1
8338
# check TRUNCATE success: 1
8339
# check layout success: 1
8340
# End usability test (inc/partition_check.inc)
8347
f_charbig VARCHAR(1000)
8348
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
8350
PARTITION BY LIST(MOD(f_int1,4))
8351
(PARTITION part_3 VALUES IN (-3),
8352
PARTITION part_2 VALUES IN (-2),
8353
PARTITION part_1 VALUES IN (-1),
8354
PARTITION part_N VALUES IN (NULL),
8355
PARTITION part0 VALUES IN (0),
8356
PARTITION part1 VALUES IN (1),
8357
PARTITION part2 VALUES IN (2),
8358
PARTITION part3 VALUES IN (3));
8359
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8360
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
8361
# Start usability test (inc/partition_check.inc)
8363
SHOW CREATE TABLE t1;
8365
t1 CREATE TABLE `t1` (
8366
`f_int1` int(11) NOT NULL DEFAULT '0',
8367
`f_int2` int(11) NOT NULL DEFAULT '0',
8368
`f_char1` char(20) DEFAULT NULL,
8369
`f_char2` char(20) DEFAULT NULL,
8370
`f_charbig` varchar(1000) DEFAULT NULL,
8371
PRIMARY KEY (`f_int2`,`f_int1`),
8372
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
8373
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
8376
$MYSQLTEST_VARDIR/master-data/test/t1.frm
8377
$MYSQLTEST_VARDIR/master-data/test/t1.par
8379
# check prerequisites-1 success: 1
8380
# check COUNT(*) success: 1
8381
# check MIN/MAX(f_int1) success: 1
8382
# check MIN/MAX(f_int2) success: 1
8383
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8384
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8385
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8386
WHERE f_int1 IN (2,3);
8387
ERROR 23000: Can't write; duplicate key in table 't1'
8388
# check prerequisites-3 success: 1
8389
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8390
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8391
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8392
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8393
WHERE f_int1 IN (2,3);
8394
DELETE FROM t1 WHERE f_charbig = 'delete me';
8395
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8396
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8397
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8398
WHERE f_int1 IN (2,3);
8399
DELETE FROM t1 WHERE f_charbig = 'delete me';
8400
# check read via f_int1 success: 1
8401
# check read via f_int2 success: 1
8403
# check multiple-1 success: 1
8404
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8406
# check multiple-2 success: 1
8407
INSERT INTO t1 SELECT * FROM t0_template
8408
WHERE MOD(f_int1,3) = 0;
8410
# check multiple-3 success: 1
8411
UPDATE t1 SET f_int1 = f_int1 + @max_row
8412
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8413
AND @max_row_div2 + @max_row_div4;
8415
# check multiple-4 success: 1
8417
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8418
AND @max_row_div2 + @max_row_div4 + @max_row;
8420
# check multiple-5 success: 1
8421
SELECT COUNT(*) INTO @try_count FROM t0_template
8422
WHERE MOD(f_int1,3) = 0
8423
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8424
SELECT COUNT(*) INTO @clash_count
8425
FROM t1 INNER JOIN t0_template USING(f_int1)
8426
WHERE MOD(f_int1,3) = 0
8427
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8428
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8430
SET f_int1 = @cur_value , f_int2 = @cur_value,
8431
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8432
f_charbig = '#SINGLE#';
8434
# check single-1 success: 1
8435
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8437
SET f_int1 = @cur_value , f_int2 = @cur_value,
8438
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8439
f_charbig = '#SINGLE#';
8441
# check single-2 success: 1
8442
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8443
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8444
UPDATE t1 SET f_int1 = @cur_value2
8445
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8447
# check single-3 success: 1
8448
SET @cur_value1= -1;
8449
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8450
UPDATE t1 SET f_int1 = @cur_value1
8451
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8453
# check single-4 success: 1
8454
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8455
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8457
# check single-5 success: 1
8458
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8460
# check single-6 success: 1
8461
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8463
# check single-7 success: 1
8464
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8465
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8466
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8467
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8468
f_charbig = '#NULL#';
8470
SET f_int1 = NULL , f_int2 = -@max_row,
8471
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8472
f_charbig = '#NULL#';
8473
ERROR 23000: Column 'f_int1' cannot be null
8474
# check null success: 1
8476
WHERE f_int1 = 0 AND f_int2 = 0
8477
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8478
AND f_charbig = '#NULL#';
8479
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8480
SELECT f_int1, f_int1, '', '', 'was inserted'
8481
FROM t0_template source_tab
8482
WHERE MOD(f_int1,3) = 0
8483
AND f_int1 BETWEEN @max_row_div2 AND @max_row
8485
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8486
f_int2 = 2 * @max_row + source_tab.f_int1,
8487
f_charbig = 'was updated';
8489
# check unique-1-a success: 1
8491
# check unique-1-b success: 1
8492
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8493
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8494
f_int2 = CAST(f_char1 AS SIGNED INT),
8495
f_charbig = CONCAT('===',f_char1,'===')
8496
WHERE f_charbig = 'was updated';
8497
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8498
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8499
FROM t0_template source_tab
8500
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8502
# check replace success: 1
8504
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8506
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
8507
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
8508
UPDATE t1 SET f_int2 = f_int1,
8509
f_char1 = CAST(f_int1 AS CHAR),
8510
f_char2 = CAST(f_int1 AS CHAR),
8511
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
8512
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
8514
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8515
SELECT f_int1, f_int1, '', '', 'was inserted'
8516
FROM t0_template source_tab
8517
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8519
# check transactions-1 success: 1
8522
# check transactions-2 success: 1
8525
# check transactions-3 success: 1
8526
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8530
# check transactions-4 success: 1
8531
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8532
SELECT f_int1, f_int1, '', '', 'was inserted'
8533
FROM t0_template source_tab
8534
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8536
# check transactions-5 success: 1
8539
# check transactions-6 success: 1
8540
# INFO: Storage engine used for t1 seems to be transactional.
8543
# check transactions-7 success: 1
8544
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8546
SET @@session.sql_mode = 'traditional';
8547
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8548
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8549
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8550
'', '', 'was inserted' FROM t0_template
8551
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8552
ERROR 22012: Division by 0
8555
# check transactions-8 success: 1
8556
# INFO: Storage engine used for t1 seems to be able to revert
8557
# changes made by the failing statement.
8558
SET @@session.sql_mode = '';
8560
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8562
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8564
# check special-1 success: 1
8565
UPDATE t1 SET f_charbig = '';
8567
# check special-2 success: 1
8568
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8569
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8570
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8571
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8572
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8573
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8574
'just inserted' FROM t0_template
8575
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8576
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8578
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8579
f_charbig = 'updated by trigger'
8580
WHERE f_int1 = new.f_int1;
8582
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8583
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8584
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8586
# check trigger-1 success: 1
8588
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8589
f_int2 = CAST(f_char1 AS SIGNED INT),
8590
f_charbig = 'just inserted'
8591
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8593
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8594
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8595
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8596
'just inserted' FROM t0_template
8597
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8598
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8600
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8601
f_charbig = 'updated by trigger'
8602
WHERE f_int1 = new.f_int1;
8604
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8605
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8606
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8608
# check trigger-2 success: 1
8610
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8611
f_int2 = CAST(f_char1 AS SIGNED INT),
8612
f_charbig = 'just inserted'
8613
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8615
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8616
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8617
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8618
'just inserted' FROM t0_template
8619
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8620
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8622
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8623
f_charbig = 'updated by trigger'
8624
WHERE f_int1 = new.f_int1;
8626
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8627
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8629
# check trigger-3 success: 1
8631
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8632
f_int2 = CAST(f_char1 AS SIGNED INT),
8633
f_charbig = 'just inserted'
8634
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8636
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8637
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8638
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8639
'just inserted' FROM t0_template
8640
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8641
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8643
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8644
f_charbig = 'updated by trigger'
8645
WHERE f_int1 = - old.f_int1;
8647
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8648
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8650
# check trigger-4 success: 1
8652
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8653
f_int2 = CAST(f_char1 AS SIGNED INT),
8654
f_charbig = 'just inserted'
8655
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8657
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8658
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8659
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8660
'just inserted' FROM t0_template
8661
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8662
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8664
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8665
f_charbig = 'updated by trigger'
8666
WHERE f_int1 = new.f_int1;
8668
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8669
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8671
# check trigger-5 success: 1
8673
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8674
f_int2 = CAST(f_char1 AS SIGNED INT),
8675
f_charbig = 'just inserted'
8676
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8678
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8679
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8680
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8681
'just inserted' FROM t0_template
8682
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8683
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8685
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8686
f_charbig = 'updated by trigger'
8687
WHERE f_int1 = - old.f_int1;
8689
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8690
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8692
# check trigger-6 success: 1
8694
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8695
f_int2 = CAST(f_char1 AS SIGNED INT),
8696
f_charbig = 'just inserted'
8697
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8699
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8702
'just inserted' FROM t0_template
8703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8704
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8707
f_charbig = 'updated by trigger'
8708
WHERE f_int1 = - old.f_int1;
8711
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8713
# check trigger-7 success: 1
8715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8716
f_int2 = CAST(f_char1 AS SIGNED INT),
8717
f_charbig = 'just inserted'
8718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8723
'just inserted' FROM t0_template
8724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8725
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8728
f_charbig = 'updated by trigger'
8729
WHERE f_int1 = - old.f_int1;
8732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8734
# check trigger-8 success: 1
8736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8737
f_int2 = CAST(f_char1 AS SIGNED INT),
8738
f_charbig = 'just inserted'
8739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8743
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8744
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8746
SET new.f_int1 = old.f_int1 + @max_row,
8747
new.f_int2 = old.f_int2 - @max_row,
8748
new.f_charbig = '####updated per update trigger####';
8751
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8752
f_charbig = '####updated per update statement itself####';
8754
# check trigger-9 success: 1
8756
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8757
f_int2 = CAST(f_char1 AS SIGNED INT),
8758
f_charbig = CONCAT('===',f_char1,'===');
8759
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8761
SET new.f_int1 = new.f_int1 + @max_row,
8762
new.f_int2 = new.f_int2 - @max_row,
8763
new.f_charbig = '####updated per update trigger####';
8766
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8767
f_charbig = '####updated per update statement itself####';
8769
# check trigger-10 success: 1
8771
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8772
f_int2 = CAST(f_char1 AS SIGNED INT),
8773
f_charbig = CONCAT('===',f_char1,'===');
8774
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8776
SET new.f_int1 = @my_max1 + @counter,
8777
new.f_int2 = @my_min2 - @counter,
8778
new.f_charbig = '####updated per insert trigger####';
8779
SET @counter = @counter + 1;
8782
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8783
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8784
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8785
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8786
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8790
# check trigger-11 success: 1
8792
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8793
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8794
AND f_charbig = '####updated per insert trigger####';
8795
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8797
SET new.f_int1 = @my_max1 + @counter,
8798
new.f_int2 = @my_min2 - @counter,
8799
new.f_charbig = '####updated per insert trigger####';
8800
SET @counter = @counter + 1;
8803
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8804
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8805
SELECT CAST(f_int1 AS CHAR),
8806
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8807
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8811
# check trigger-12 success: 1
8813
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8814
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8815
AND f_charbig = '####updated per insert trigger####';
8817
Table Op Msg_type Msg_text
8818
test.t1 analyze note The storage engine for the table doesn't support analyze
8819
CHECK TABLE t1 EXTENDED;
8820
Table Op Msg_type Msg_text
8821
test.t1 check note The storage engine for the table doesn't support check
8822
CHECKSUM TABLE t1 EXTENDED;
8824
test.t1 <some_value>
8826
Table Op Msg_type Msg_text
8827
test.t1 optimize note The storage engine for the table doesn't support optimize
8828
# check layout success: 1
8829
REPAIR TABLE t1 EXTENDED;
8830
Table Op Msg_type Msg_text
8831
test.t1 repair note The storage engine for the table doesn't support repair
8832
# check layout success: 1
8835
# check TRUNCATE success: 1
8836
# check layout success: 1
8837
# End usability test (inc/partition_check.inc)
8844
f_charbig VARCHAR(1000)
8845
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
8847
PARTITION BY RANGE(f_int1)
8848
(PARTITION parta VALUES LESS THAN (0),
8849
PARTITION partb VALUES LESS THAN (5),
8850
PARTITION partc VALUES LESS THAN (10),
8851
PARTITION partd VALUES LESS THAN (10 + 5),
8852
PARTITION parte VALUES LESS THAN (20),
8853
PARTITION partf VALUES LESS THAN (2147483646));
8854
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8855
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
8856
# Start usability test (inc/partition_check.inc)
8858
SHOW CREATE TABLE t1;
8860
t1 CREATE TABLE `t1` (
8861
`f_int1` int(11) NOT NULL DEFAULT '0',
8862
`f_int2` int(11) NOT NULL DEFAULT '0',
8863
`f_char1` char(20) DEFAULT NULL,
8864
`f_char2` char(20) DEFAULT NULL,
8865
`f_charbig` varchar(1000) DEFAULT NULL,
8866
PRIMARY KEY (`f_int2`,`f_int1`),
8867
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
8868
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
8871
$MYSQLTEST_VARDIR/master-data/test/t1.frm
8872
$MYSQLTEST_VARDIR/master-data/test/t1.par
8874
# check prerequisites-1 success: 1
8875
# check COUNT(*) success: 1
8876
# check MIN/MAX(f_int1) success: 1
8877
# check MIN/MAX(f_int2) success: 1
8878
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8879
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8880
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8881
WHERE f_int1 IN (2,3);
8882
ERROR 23000: Can't write; duplicate key in table 't1'
8883
# check prerequisites-3 success: 1
8884
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
8885
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8886
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8887
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8888
WHERE f_int1 IN (2,3);
8889
DELETE FROM t1 WHERE f_charbig = 'delete me';
8890
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8891
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
8892
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
8893
WHERE f_int1 IN (2,3);
8894
DELETE FROM t1 WHERE f_charbig = 'delete me';
8895
# check read via f_int1 success: 1
8896
# check read via f_int2 success: 1
8898
# check multiple-1 success: 1
8899
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8901
# check multiple-2 success: 1
8902
INSERT INTO t1 SELECT * FROM t0_template
8903
WHERE MOD(f_int1,3) = 0;
8905
# check multiple-3 success: 1
8906
UPDATE t1 SET f_int1 = f_int1 + @max_row
8907
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8908
AND @max_row_div2 + @max_row_div4;
8910
# check multiple-4 success: 1
8912
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8913
AND @max_row_div2 + @max_row_div4 + @max_row;
8915
# check multiple-5 success: 1
8916
SELECT COUNT(*) INTO @try_count FROM t0_template
8917
WHERE MOD(f_int1,3) = 0
8918
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8919
SELECT COUNT(*) INTO @clash_count
8920
FROM t1 INNER JOIN t0_template USING(f_int1)
8921
WHERE MOD(f_int1,3) = 0
8922
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8923
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8925
SET f_int1 = @cur_value , f_int2 = @cur_value,
8926
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8927
f_charbig = '#SINGLE#';
8929
# check single-1 success: 1
8930
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8932
SET f_int1 = @cur_value , f_int2 = @cur_value,
8933
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8934
f_charbig = '#SINGLE#';
8936
# check single-2 success: 1
8937
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8938
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8939
UPDATE t1 SET f_int1 = @cur_value2
8940
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8942
# check single-3 success: 1
8943
SET @cur_value1= -1;
8944
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8945
UPDATE t1 SET f_int1 = @cur_value1
8946
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8948
# check single-4 success: 1
8949
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8950
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8952
# check single-5 success: 1
8953
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8955
# check single-6 success: 1
8956
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8957
ERROR HY000: Table has no partition for value 2147483647
8958
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8959
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8960
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8961
f_charbig = '#NULL#';
8963
SET f_int1 = NULL , f_int2 = -@max_row,
8964
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8965
f_charbig = '#NULL#';
8966
ERROR 23000: Column 'f_int1' cannot be null
8967
# check null success: 1
8969
WHERE f_int1 = 0 AND f_int2 = 0
8970
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8971
AND f_charbig = '#NULL#';
8972
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8973
SELECT f_int1, f_int1, '', '', 'was inserted'
8974
FROM t0_template source_tab
8975
WHERE MOD(f_int1,3) = 0
8976
AND f_int1 BETWEEN @max_row_div2 AND @max_row
8978
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
8979
f_int2 = 2 * @max_row + source_tab.f_int1,
8980
f_charbig = 'was updated';
8982
# check unique-1-a success: 1
8984
# check unique-1-b success: 1
8985
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8986
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8987
f_int2 = CAST(f_char1 AS SIGNED INT),
8988
f_charbig = CONCAT('===',f_char1,'===')
8989
WHERE f_charbig = 'was updated';
8990
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8991
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
8992
FROM t0_template source_tab
8993
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
8995
# check replace success: 1
8997
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
8999
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
9000
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
9001
UPDATE t1 SET f_int2 = f_int1,
9002
f_char1 = CAST(f_int1 AS CHAR),
9003
f_char2 = CAST(f_int1 AS CHAR),
9004
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
9005
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
9007
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9008
SELECT f_int1, f_int1, '', '', 'was inserted'
9009
FROM t0_template source_tab
9010
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9012
# check transactions-1 success: 1
9015
# check transactions-2 success: 1
9018
# check transactions-3 success: 1
9019
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9023
# check transactions-4 success: 1
9024
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9025
SELECT f_int1, f_int1, '', '', 'was inserted'
9026
FROM t0_template source_tab
9027
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9029
# check transactions-5 success: 1
9032
# check transactions-6 success: 1
9033
# INFO: Storage engine used for t1 seems to be transactional.
9036
# check transactions-7 success: 1
9037
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9039
SET @@session.sql_mode = 'traditional';
9040
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9041
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9042
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9043
'', '', 'was inserted' FROM t0_template
9044
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9045
ERROR 22012: Division by 0
9048
# check transactions-8 success: 1
9049
# INFO: Storage engine used for t1 seems to be able to revert
9050
# changes made by the failing statement.
9051
SET @@session.sql_mode = '';
9053
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9055
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9057
# check special-1 success: 1
9058
UPDATE t1 SET f_charbig = '';
9060
# check special-2 success: 1
9061
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9062
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9063
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9064
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9065
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9066
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9067
'just inserted' FROM t0_template
9068
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9069
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9071
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9072
f_charbig = 'updated by trigger'
9073
WHERE f_int1 = new.f_int1;
9075
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9076
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9077
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9079
# check trigger-1 success: 1
9081
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9082
f_int2 = CAST(f_char1 AS SIGNED INT),
9083
f_charbig = 'just inserted'
9084
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9086
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9087
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9088
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9089
'just inserted' FROM t0_template
9090
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9091
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9093
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9094
f_charbig = 'updated by trigger'
9095
WHERE f_int1 = new.f_int1;
9097
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9098
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9099
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9101
# check trigger-2 success: 1
9103
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9104
f_int2 = CAST(f_char1 AS SIGNED INT),
9105
f_charbig = 'just inserted'
9106
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9108
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9109
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9110
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9111
'just inserted' FROM t0_template
9112
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9113
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9115
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9116
f_charbig = 'updated by trigger'
9117
WHERE f_int1 = new.f_int1;
9119
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9120
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9122
# check trigger-3 success: 1
9124
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9125
f_int2 = CAST(f_char1 AS SIGNED INT),
9126
f_charbig = 'just inserted'
9127
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9129
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9130
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9131
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9132
'just inserted' FROM t0_template
9133
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9134
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9136
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9137
f_charbig = 'updated by trigger'
9138
WHERE f_int1 = - old.f_int1;
9140
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9141
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9143
# check trigger-4 success: 1
9145
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9146
f_int2 = CAST(f_char1 AS SIGNED INT),
9147
f_charbig = 'just inserted'
9148
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9150
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9151
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9152
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9153
'just inserted' FROM t0_template
9154
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9155
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9157
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9158
f_charbig = 'updated by trigger'
9159
WHERE f_int1 = new.f_int1;
9161
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9162
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9164
# check trigger-5 success: 1
9166
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9167
f_int2 = CAST(f_char1 AS SIGNED INT),
9168
f_charbig = 'just inserted'
9169
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9171
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9172
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9173
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9174
'just inserted' FROM t0_template
9175
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9176
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9178
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9179
f_charbig = 'updated by trigger'
9180
WHERE f_int1 = - old.f_int1;
9182
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9183
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9185
# check trigger-6 success: 1
9187
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9188
f_int2 = CAST(f_char1 AS SIGNED INT),
9189
f_charbig = 'just inserted'
9190
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9192
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9193
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9194
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9195
'just inserted' FROM t0_template
9196
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9197
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9199
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9200
f_charbig = 'updated by trigger'
9201
WHERE f_int1 = - old.f_int1;
9204
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9206
# check trigger-7 success: 1
9208
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9209
f_int2 = CAST(f_char1 AS SIGNED INT),
9210
f_charbig = 'just inserted'
9211
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9213
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9214
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9215
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9216
'just inserted' FROM t0_template
9217
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9218
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9220
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9221
f_charbig = 'updated by trigger'
9222
WHERE f_int1 = - old.f_int1;
9225
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9227
# check trigger-8 success: 1
9229
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9230
f_int2 = CAST(f_char1 AS SIGNED INT),
9231
f_charbig = 'just inserted'
9232
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9234
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9236
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9237
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9239
SET new.f_int1 = old.f_int1 + @max_row,
9240
new.f_int2 = old.f_int2 - @max_row,
9241
new.f_charbig = '####updated per update trigger####';
9244
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9245
f_charbig = '####updated per update statement itself####';
9247
# check trigger-9 success: 1
9249
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9250
f_int2 = CAST(f_char1 AS SIGNED INT),
9251
f_charbig = CONCAT('===',f_char1,'===');
9252
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9254
SET new.f_int1 = new.f_int1 + @max_row,
9255
new.f_int2 = new.f_int2 - @max_row,
9256
new.f_charbig = '####updated per update trigger####';
9259
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9260
f_charbig = '####updated per update statement itself####';
9262
# check trigger-10 success: 1
9264
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9265
f_int2 = CAST(f_char1 AS SIGNED INT),
9266
f_charbig = CONCAT('===',f_char1,'===');
9267
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9269
SET new.f_int1 = @my_max1 + @counter,
9270
new.f_int2 = @my_min2 - @counter,
9271
new.f_charbig = '####updated per insert trigger####';
9272
SET @counter = @counter + 1;
9275
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9276
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9277
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9278
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9279
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9283
# check trigger-11 success: 1
9285
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9286
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9287
AND f_charbig = '####updated per insert trigger####';
9288
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9290
SET new.f_int1 = @my_max1 + @counter,
9291
new.f_int2 = @my_min2 - @counter,
9292
new.f_charbig = '####updated per insert trigger####';
9293
SET @counter = @counter + 1;
9296
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9297
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9298
SELECT CAST(f_int1 AS CHAR),
9299
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9300
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9304
# check trigger-12 success: 1
9306
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9307
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9308
AND f_charbig = '####updated per insert trigger####';
9310
Table Op Msg_type Msg_text
9311
test.t1 analyze note The storage engine for the table doesn't support analyze
9312
CHECK TABLE t1 EXTENDED;
9313
Table Op Msg_type Msg_text
9314
test.t1 check note The storage engine for the table doesn't support check
9315
CHECKSUM TABLE t1 EXTENDED;
9317
test.t1 <some_value>
9319
Table Op Msg_type Msg_text
9320
test.t1 optimize note The storage engine for the table doesn't support optimize
9321
# check layout success: 1
9322
REPAIR TABLE t1 EXTENDED;
9323
Table Op Msg_type Msg_text
9324
test.t1 repair note The storage engine for the table doesn't support repair
9325
# check layout success: 1
9328
# check TRUNCATE success: 1
9329
# check layout success: 1
9330
# End usability test (inc/partition_check.inc)
9337
f_charbig VARCHAR(1000)
9338
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
9340
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
9341
(PARTITION parta VALUES LESS THAN (0),
9342
PARTITION partb VALUES LESS THAN (5),
9343
PARTITION partc VALUES LESS THAN (10),
9344
PARTITION partd VALUES LESS THAN (2147483646));
9345
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9346
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
9347
# Start usability test (inc/partition_check.inc)
9349
SHOW CREATE TABLE t1;
9351
t1 CREATE TABLE `t1` (
9352
`f_int1` int(11) NOT NULL DEFAULT '0',
9353
`f_int2` int(11) NOT NULL DEFAULT '0',
9354
`f_char1` char(20) DEFAULT NULL,
9355
`f_char2` char(20) DEFAULT NULL,
9356
`f_charbig` varchar(1000) DEFAULT NULL,
9357
PRIMARY KEY (`f_int2`,`f_int1`),
9358
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
9359
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
9362
$MYSQLTEST_VARDIR/master-data/test/t1.frm
9363
$MYSQLTEST_VARDIR/master-data/test/t1.par
9365
# check prerequisites-1 success: 1
9366
# check COUNT(*) success: 1
9367
# check MIN/MAX(f_int1) success: 1
9368
# check MIN/MAX(f_int2) success: 1
9369
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9370
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9371
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9372
WHERE f_int1 IN (2,3);
9373
ERROR 23000: Can't write; duplicate key in table 't1'
9374
# check prerequisites-3 success: 1
9375
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9376
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9377
SELECT f_int1, 2 * @max_row + 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
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9382
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9383
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9384
WHERE f_int1 IN (2,3);
9385
DELETE FROM t1 WHERE f_charbig = 'delete me';
9386
# check read via f_int1 success: 1
9387
# check read via f_int2 success: 1
9389
# check multiple-1 success: 1
9390
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9392
# check multiple-2 success: 1
9393
INSERT INTO t1 SELECT * FROM t0_template
9394
WHERE MOD(f_int1,3) = 0;
9396
# check multiple-3 success: 1
9397
UPDATE t1 SET f_int1 = f_int1 + @max_row
9398
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9399
AND @max_row_div2 + @max_row_div4;
9401
# check multiple-4 success: 1
9403
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9404
AND @max_row_div2 + @max_row_div4 + @max_row;
9406
# check multiple-5 success: 1
9407
SELECT COUNT(*) INTO @try_count FROM t0_template
9408
WHERE MOD(f_int1,3) = 0
9409
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9410
SELECT COUNT(*) INTO @clash_count
9411
FROM t1 INNER JOIN t0_template USING(f_int1)
9412
WHERE MOD(f_int1,3) = 0
9413
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9414
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9416
SET f_int1 = @cur_value , f_int2 = @cur_value,
9417
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9418
f_charbig = '#SINGLE#';
9420
# check single-1 success: 1
9421
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9423
SET f_int1 = @cur_value , f_int2 = @cur_value,
9424
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9425
f_charbig = '#SINGLE#';
9427
# check single-2 success: 1
9428
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9429
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9430
UPDATE t1 SET f_int1 = @cur_value2
9431
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9433
# check single-3 success: 1
9434
SET @cur_value1= -1;
9435
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9436
UPDATE t1 SET f_int1 = @cur_value1
9437
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9439
# check single-4 success: 1
9440
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9441
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9443
# check single-5 success: 1
9444
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9446
# check single-6 success: 1
9447
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9449
# check single-7 success: 1
9450
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9451
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9452
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9453
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9454
f_charbig = '#NULL#';
9456
SET f_int1 = NULL , f_int2 = -@max_row,
9457
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9458
f_charbig = '#NULL#';
9459
ERROR 23000: Column 'f_int1' cannot be null
9460
# check null success: 1
9462
WHERE f_int1 = 0 AND f_int2 = 0
9463
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9464
AND f_charbig = '#NULL#';
9465
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9466
SELECT f_int1, f_int1, '', '', 'was inserted'
9467
FROM t0_template source_tab
9468
WHERE MOD(f_int1,3) = 0
9469
AND f_int1 BETWEEN @max_row_div2 AND @max_row
9471
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
9472
f_int2 = 2 * @max_row + source_tab.f_int1,
9473
f_charbig = 'was updated';
9475
# check unique-1-a success: 1
9477
# check unique-1-b success: 1
9478
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9479
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9480
f_int2 = CAST(f_char1 AS SIGNED INT),
9481
f_charbig = CONCAT('===',f_char1,'===')
9482
WHERE f_charbig = 'was updated';
9483
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9484
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
9485
FROM t0_template source_tab
9486
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9488
# check replace success: 1
9490
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
9492
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
9493
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
9494
UPDATE t1 SET f_int2 = f_int1,
9495
f_char1 = CAST(f_int1 AS CHAR),
9496
f_char2 = CAST(f_int1 AS CHAR),
9497
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
9498
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
9500
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9501
SELECT f_int1, f_int1, '', '', 'was inserted'
9502
FROM t0_template source_tab
9503
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9505
# check transactions-1 success: 1
9508
# check transactions-2 success: 1
9511
# check transactions-3 success: 1
9512
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9516
# check transactions-4 success: 1
9517
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9518
SELECT f_int1, f_int1, '', '', 'was inserted'
9519
FROM t0_template source_tab
9520
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9522
# check transactions-5 success: 1
9525
# check transactions-6 success: 1
9526
# INFO: Storage engine used for t1 seems to be transactional.
9529
# check transactions-7 success: 1
9530
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9532
SET @@session.sql_mode = 'traditional';
9533
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9534
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9535
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9536
'', '', 'was inserted' FROM t0_template
9537
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9538
ERROR 22012: Division by 0
9541
# check transactions-8 success: 1
9542
# INFO: Storage engine used for t1 seems to be able to revert
9543
# changes made by the failing statement.
9544
SET @@session.sql_mode = '';
9546
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9548
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9550
# check special-1 success: 1
9551
UPDATE t1 SET f_charbig = '';
9553
# check special-2 success: 1
9554
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9555
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9556
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9557
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9558
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9559
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9560
'just inserted' FROM t0_template
9561
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9562
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9564
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9565
f_charbig = 'updated by trigger'
9566
WHERE f_int1 = new.f_int1;
9568
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9569
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9572
# check trigger-1 success: 1
9574
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9575
f_int2 = CAST(f_char1 AS SIGNED INT),
9576
f_charbig = 'just inserted'
9577
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9579
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9580
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9581
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9582
'just inserted' FROM t0_template
9583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9584
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9586
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9587
f_charbig = 'updated by trigger'
9588
WHERE f_int1 = new.f_int1;
9590
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9591
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9592
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9594
# check trigger-2 success: 1
9596
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9597
f_int2 = CAST(f_char1 AS SIGNED INT),
9598
f_charbig = 'just inserted'
9599
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9601
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9602
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9603
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9604
'just inserted' FROM t0_template
9605
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9606
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9608
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9609
f_charbig = 'updated by trigger'
9610
WHERE f_int1 = new.f_int1;
9612
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9613
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9615
# check trigger-3 success: 1
9617
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9618
f_int2 = CAST(f_char1 AS SIGNED INT),
9619
f_charbig = 'just inserted'
9620
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9622
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9623
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9624
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9625
'just inserted' FROM t0_template
9626
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9627
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9629
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9630
f_charbig = 'updated by trigger'
9631
WHERE f_int1 = - old.f_int1;
9633
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9634
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9636
# check trigger-4 success: 1
9638
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9639
f_int2 = CAST(f_char1 AS SIGNED INT),
9640
f_charbig = 'just inserted'
9641
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9643
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9644
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9645
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9646
'just inserted' FROM t0_template
9647
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9648
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9650
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9651
f_charbig = 'updated by trigger'
9652
WHERE f_int1 = new.f_int1;
9654
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9655
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9657
# check trigger-5 success: 1
9659
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9660
f_int2 = CAST(f_char1 AS SIGNED INT),
9661
f_charbig = 'just inserted'
9662
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9664
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9665
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9666
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9667
'just inserted' FROM t0_template
9668
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9669
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9671
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9672
f_charbig = 'updated by trigger'
9673
WHERE f_int1 = - old.f_int1;
9675
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9676
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9678
# check trigger-6 success: 1
9680
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9681
f_int2 = CAST(f_char1 AS SIGNED INT),
9682
f_charbig = 'just inserted'
9683
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9685
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9686
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9687
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9688
'just inserted' FROM t0_template
9689
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9690
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9692
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9693
f_charbig = 'updated by trigger'
9694
WHERE f_int1 = - old.f_int1;
9697
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9699
# check trigger-7 success: 1
9701
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9702
f_int2 = CAST(f_char1 AS SIGNED INT),
9703
f_charbig = 'just inserted'
9704
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9706
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9707
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9708
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9709
'just inserted' FROM t0_template
9710
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9711
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9713
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9714
f_charbig = 'updated by trigger'
9715
WHERE f_int1 = - old.f_int1;
9718
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9720
# check trigger-8 success: 1
9722
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9723
f_int2 = CAST(f_char1 AS SIGNED INT),
9724
f_charbig = 'just inserted'
9725
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9727
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9729
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9730
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9732
SET new.f_int1 = old.f_int1 + @max_row,
9733
new.f_int2 = old.f_int2 - @max_row,
9734
new.f_charbig = '####updated per update trigger####';
9737
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9738
f_charbig = '####updated per update statement itself####';
9740
# check trigger-9 success: 1
9742
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9743
f_int2 = CAST(f_char1 AS SIGNED INT),
9744
f_charbig = CONCAT('===',f_char1,'===');
9745
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9747
SET new.f_int1 = new.f_int1 + @max_row,
9748
new.f_int2 = new.f_int2 - @max_row,
9749
new.f_charbig = '####updated per update trigger####';
9752
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9753
f_charbig = '####updated per update statement itself####';
9755
# check trigger-10 success: 1
9757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9758
f_int2 = CAST(f_char1 AS SIGNED INT),
9759
f_charbig = CONCAT('===',f_char1,'===');
9760
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9762
SET new.f_int1 = @my_max1 + @counter,
9763
new.f_int2 = @my_min2 - @counter,
9764
new.f_charbig = '####updated per insert trigger####';
9765
SET @counter = @counter + 1;
9768
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9769
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9770
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9771
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9772
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9776
# check trigger-11 success: 1
9778
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9779
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9780
AND f_charbig = '####updated per insert trigger####';
9781
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9783
SET new.f_int1 = @my_max1 + @counter,
9784
new.f_int2 = @my_min2 - @counter,
9785
new.f_charbig = '####updated per insert trigger####';
9786
SET @counter = @counter + 1;
9789
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9790
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9791
SELECT CAST(f_int1 AS CHAR),
9792
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9793
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9797
# check trigger-12 success: 1
9799
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9800
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9801
AND f_charbig = '####updated per insert trigger####';
9803
Table Op Msg_type Msg_text
9804
test.t1 analyze note The storage engine for the table doesn't support analyze
9805
CHECK TABLE t1 EXTENDED;
9806
Table Op Msg_type Msg_text
9807
test.t1 check note The storage engine for the table doesn't support check
9808
CHECKSUM TABLE t1 EXTENDED;
9810
test.t1 <some_value>
9812
Table Op Msg_type Msg_text
9813
test.t1 optimize note The storage engine for the table doesn't support optimize
9814
# check layout success: 1
9815
REPAIR TABLE t1 EXTENDED;
9816
Table Op Msg_type Msg_text
9817
test.t1 repair note The storage engine for the table doesn't support repair
9818
# check layout success: 1
9821
# check TRUNCATE success: 1
9822
# check layout success: 1
9823
# End usability test (inc/partition_check.inc)
9830
f_charbig VARCHAR(1000)
9831
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
9833
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
9834
(PARTITION part1 VALUES LESS THAN (0)
9835
(SUBPARTITION subpart11, SUBPARTITION subpart12),
9836
PARTITION part2 VALUES LESS THAN (5)
9837
(SUBPARTITION subpart21, SUBPARTITION subpart22),
9838
PARTITION part3 VALUES LESS THAN (10)
9839
(SUBPARTITION subpart31, SUBPARTITION subpart32),
9840
PARTITION part4 VALUES LESS THAN (2147483646)
9841
(SUBPARTITION subpart41, SUBPARTITION subpart42));
9842
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9843
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
9844
# Start usability test (inc/partition_check.inc)
9846
SHOW CREATE TABLE t1;
9848
t1 CREATE TABLE `t1` (
9849
`f_int1` int(11) NOT NULL DEFAULT '0',
9850
`f_int2` int(11) NOT NULL DEFAULT '0',
9851
`f_char1` char(20) DEFAULT NULL,
9852
`f_char2` char(20) DEFAULT NULL,
9853
`f_charbig` varchar(1000) DEFAULT NULL,
9854
PRIMARY KEY (`f_int2`,`f_int1`),
9855
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
9856
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
9859
$MYSQLTEST_VARDIR/master-data/test/t1.frm
9860
$MYSQLTEST_VARDIR/master-data/test/t1.par
9862
# check prerequisites-1 success: 1
9863
# check COUNT(*) success: 1
9864
# check MIN/MAX(f_int1) success: 1
9865
# check MIN/MAX(f_int2) success: 1
9866
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9867
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9868
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9869
WHERE f_int1 IN (2,3);
9870
ERROR 23000: Can't write; duplicate key in table 't1'
9871
# check prerequisites-3 success: 1
9872
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
9873
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9874
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9875
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9876
WHERE f_int1 IN (2,3);
9877
DELETE FROM t1 WHERE f_charbig = 'delete me';
9878
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9879
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
9880
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
9881
WHERE f_int1 IN (2,3);
9882
DELETE FROM t1 WHERE f_charbig = 'delete me';
9883
# check read via f_int1 success: 1
9884
# check read via f_int2 success: 1
9886
# check multiple-1 success: 1
9887
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9889
# check multiple-2 success: 1
9890
INSERT INTO t1 SELECT * FROM t0_template
9891
WHERE MOD(f_int1,3) = 0;
9893
# check multiple-3 success: 1
9894
UPDATE t1 SET f_int1 = f_int1 + @max_row
9895
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9896
AND @max_row_div2 + @max_row_div4;
9898
# check multiple-4 success: 1
9900
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9901
AND @max_row_div2 + @max_row_div4 + @max_row;
9903
# check multiple-5 success: 1
9904
SELECT COUNT(*) INTO @try_count FROM t0_template
9905
WHERE MOD(f_int1,3) = 0
9906
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9907
SELECT COUNT(*) INTO @clash_count
9908
FROM t1 INNER JOIN t0_template USING(f_int1)
9909
WHERE MOD(f_int1,3) = 0
9910
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9911
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9913
SET f_int1 = @cur_value , f_int2 = @cur_value,
9914
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9915
f_charbig = '#SINGLE#';
9917
# check single-1 success: 1
9918
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9920
SET f_int1 = @cur_value , f_int2 = @cur_value,
9921
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9922
f_charbig = '#SINGLE#';
9924
# check single-2 success: 1
9925
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9926
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9927
UPDATE t1 SET f_int1 = @cur_value2
9928
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9930
# check single-3 success: 1
9931
SET @cur_value1= -1;
9932
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9933
UPDATE t1 SET f_int1 = @cur_value1
9934
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9936
# check single-4 success: 1
9937
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9938
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9940
# check single-5 success: 1
9941
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9943
# check single-6 success: 1
9944
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9945
ERROR HY000: Table has no partition for value 2147483647
9946
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9947
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9948
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9949
f_charbig = '#NULL#';
9951
SET f_int1 = NULL , f_int2 = -@max_row,
9952
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9953
f_charbig = '#NULL#';
9954
ERROR 23000: Column 'f_int1' cannot be null
9955
# check null success: 1
9957
WHERE f_int1 = 0 AND f_int2 = 0
9958
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9959
AND f_charbig = '#NULL#';
9960
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9961
SELECT f_int1, f_int1, '', '', 'was inserted'
9962
FROM t0_template source_tab
9963
WHERE MOD(f_int1,3) = 0
9964
AND f_int1 BETWEEN @max_row_div2 AND @max_row
9966
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
9967
f_int2 = 2 * @max_row + source_tab.f_int1,
9968
f_charbig = 'was updated';
9970
# check unique-1-a success: 1
9972
# check unique-1-b success: 1
9973
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9974
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9975
f_int2 = CAST(f_char1 AS SIGNED INT),
9976
f_charbig = CONCAT('===',f_char1,'===')
9977
WHERE f_charbig = 'was updated';
9978
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9979
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
9980
FROM t0_template source_tab
9981
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
9983
# check replace success: 1
9985
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
9987
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
9988
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
9989
UPDATE t1 SET f_int2 = f_int1,
9990
f_char1 = CAST(f_int1 AS CHAR),
9991
f_char2 = CAST(f_int1 AS CHAR),
9992
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
9993
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
9995
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9996
SELECT f_int1, f_int1, '', '', 'was inserted'
9997
FROM t0_template source_tab
9998
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10000
# check transactions-1 success: 1
10003
# check transactions-2 success: 1
10006
# check transactions-3 success: 1
10007
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10011
# check transactions-4 success: 1
10012
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10013
SELECT f_int1, f_int1, '', '', 'was inserted'
10014
FROM t0_template source_tab
10015
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10017
# check transactions-5 success: 1
10020
# check transactions-6 success: 1
10021
# INFO: Storage engine used for t1 seems to be transactional.
10024
# check transactions-7 success: 1
10025
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10027
SET @@session.sql_mode = 'traditional';
10028
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10029
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10030
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10031
'', '', 'was inserted' FROM t0_template
10032
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10033
ERROR 22012: Division by 0
10036
# check transactions-8 success: 1
10037
# INFO: Storage engine used for t1 seems to be able to revert
10038
# changes made by the failing statement.
10039
SET @@session.sql_mode = '';
10041
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10043
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10045
# check special-1 success: 1
10046
UPDATE t1 SET f_charbig = '';
10048
# check special-2 success: 1
10049
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10050
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10051
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10052
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10053
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10054
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10055
'just inserted' FROM t0_template
10056
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10057
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10059
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10060
f_charbig = 'updated by trigger'
10061
WHERE f_int1 = new.f_int1;
10063
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10064
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10065
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10067
# check trigger-1 success: 1
10068
DROP TRIGGER trg_1;
10069
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10070
f_int2 = CAST(f_char1 AS SIGNED INT),
10071
f_charbig = 'just inserted'
10072
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10074
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10075
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10076
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10077
'just inserted' FROM t0_template
10078
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10079
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10081
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10082
f_charbig = 'updated by trigger'
10083
WHERE f_int1 = new.f_int1;
10085
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10086
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10089
# check trigger-2 success: 1
10090
DROP TRIGGER trg_1;
10091
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10092
f_int2 = CAST(f_char1 AS SIGNED INT),
10093
f_charbig = 'just inserted'
10094
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10096
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10097
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10098
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10099
'just inserted' FROM t0_template
10100
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10101
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10103
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10104
f_charbig = 'updated by trigger'
10105
WHERE f_int1 = new.f_int1;
10107
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10108
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10110
# check trigger-3 success: 1
10111
DROP TRIGGER trg_1;
10112
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10113
f_int2 = CAST(f_char1 AS SIGNED INT),
10114
f_charbig = 'just inserted'
10115
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10117
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10118
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10119
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10120
'just inserted' FROM t0_template
10121
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10122
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10124
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10125
f_charbig = 'updated by trigger'
10126
WHERE f_int1 = - old.f_int1;
10128
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10129
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10131
# check trigger-4 success: 1
10132
DROP TRIGGER trg_1;
10133
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10134
f_int2 = CAST(f_char1 AS SIGNED INT),
10135
f_charbig = 'just inserted'
10136
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10138
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10139
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10140
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10141
'just inserted' FROM t0_template
10142
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10143
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10145
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10146
f_charbig = 'updated by trigger'
10147
WHERE f_int1 = new.f_int1;
10149
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10150
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10152
# check trigger-5 success: 1
10153
DROP TRIGGER trg_1;
10154
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10155
f_int2 = CAST(f_char1 AS SIGNED INT),
10156
f_charbig = 'just inserted'
10157
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10159
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10160
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10161
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10162
'just inserted' FROM t0_template
10163
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10164
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10166
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10167
f_charbig = 'updated by trigger'
10168
WHERE f_int1 = - old.f_int1;
10170
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10171
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10173
# check trigger-6 success: 1
10174
DROP TRIGGER trg_1;
10175
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10176
f_int2 = CAST(f_char1 AS SIGNED INT),
10177
f_charbig = 'just inserted'
10178
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10180
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10181
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10182
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10183
'just inserted' FROM t0_template
10184
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10185
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10187
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10188
f_charbig = 'updated by trigger'
10189
WHERE f_int1 = - old.f_int1;
10192
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10194
# check trigger-7 success: 1
10195
DROP TRIGGER trg_1;
10196
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10197
f_int2 = CAST(f_char1 AS SIGNED INT),
10198
f_charbig = 'just inserted'
10199
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10201
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10202
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10203
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10204
'just inserted' FROM t0_template
10205
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10206
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10208
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10209
f_charbig = 'updated by trigger'
10210
WHERE f_int1 = - old.f_int1;
10213
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10215
# check trigger-8 success: 1
10216
DROP TRIGGER trg_1;
10217
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10218
f_int2 = CAST(f_char1 AS SIGNED INT),
10219
f_charbig = 'just inserted'
10220
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10222
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10224
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10225
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10227
SET new.f_int1 = old.f_int1 + @max_row,
10228
new.f_int2 = old.f_int2 - @max_row,
10229
new.f_charbig = '####updated per update trigger####';
10232
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10233
f_charbig = '####updated per update statement itself####';
10235
# check trigger-9 success: 1
10236
DROP TRIGGER trg_2;
10237
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10238
f_int2 = CAST(f_char1 AS SIGNED INT),
10239
f_charbig = CONCAT('===',f_char1,'===');
10240
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10242
SET new.f_int1 = new.f_int1 + @max_row,
10243
new.f_int2 = new.f_int2 - @max_row,
10244
new.f_charbig = '####updated per update trigger####';
10247
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10248
f_charbig = '####updated per update statement itself####';
10250
# check trigger-10 success: 1
10251
DROP TRIGGER trg_2;
10252
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10253
f_int2 = CAST(f_char1 AS SIGNED INT),
10254
f_charbig = CONCAT('===',f_char1,'===');
10255
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10257
SET new.f_int1 = @my_max1 + @counter,
10258
new.f_int2 = @my_min2 - @counter,
10259
new.f_charbig = '####updated per insert trigger####';
10260
SET @counter = @counter + 1;
10263
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10264
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10265
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10266
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10267
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10269
DROP TRIGGER trg_3;
10271
# check trigger-11 success: 1
10273
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10274
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10275
AND f_charbig = '####updated per insert trigger####';
10276
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10278
SET new.f_int1 = @my_max1 + @counter,
10279
new.f_int2 = @my_min2 - @counter,
10280
new.f_charbig = '####updated per insert trigger####';
10281
SET @counter = @counter + 1;
10284
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10285
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10286
SELECT CAST(f_int1 AS CHAR),
10287
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10288
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10290
DROP TRIGGER trg_3;
10292
# check trigger-12 success: 1
10294
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10295
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10296
AND f_charbig = '####updated per insert trigger####';
10298
Table Op Msg_type Msg_text
10299
test.t1 analyze note The storage engine for the table doesn't support analyze
10300
CHECK TABLE t1 EXTENDED;
10301
Table Op Msg_type Msg_text
10302
test.t1 check note The storage engine for the table doesn't support check
10303
CHECKSUM TABLE t1 EXTENDED;
10305
test.t1 <some_value>
10307
Table Op Msg_type Msg_text
10308
test.t1 optimize note The storage engine for the table doesn't support optimize
10309
# check layout success: 1
10310
REPAIR TABLE t1 EXTENDED;
10311
Table Op Msg_type Msg_text
10312
test.t1 repair note The storage engine for the table doesn't support repair
10313
# check layout success: 1
10316
# check TRUNCATE success: 1
10317
# check layout success: 1
10318
# End usability test (inc/partition_check.inc)
10325
f_charbig VARCHAR(1000)
10326
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
10328
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
10329
(PARTITION part1 VALUES IN (0)
10330
(SUBPARTITION sp11,
10331
SUBPARTITION sp12),
10332
PARTITION part2 VALUES IN (1)
10333
(SUBPARTITION sp21,
10334
SUBPARTITION sp22),
10335
PARTITION part3 VALUES IN (2)
10336
(SUBPARTITION sp31,
10337
SUBPARTITION sp32),
10338
PARTITION part4 VALUES IN (NULL)
10339
(SUBPARTITION sp41,
10340
SUBPARTITION sp42));
10341
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10342
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
10343
# Start usability test (inc/partition_check.inc)
10345
SHOW CREATE TABLE t1;
10347
t1 CREATE TABLE `t1` (
10348
`f_int1` int(11) NOT NULL DEFAULT '0',
10349
`f_int2` int(11) NOT NULL DEFAULT '0',
10350
`f_char1` char(20) DEFAULT NULL,
10351
`f_char2` char(20) DEFAULT NULL,
10352
`f_charbig` varchar(1000) DEFAULT NULL,
10353
PRIMARY KEY (`f_int2`,`f_int1`),
10354
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
10355
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
10358
$MYSQLTEST_VARDIR/master-data/test/t1.frm
10359
$MYSQLTEST_VARDIR/master-data/test/t1.par
10361
# check prerequisites-1 success: 1
10362
# check COUNT(*) success: 1
10363
# check MIN/MAX(f_int1) success: 1
10364
# check MIN/MAX(f_int2) success: 1
10365
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10366
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10367
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10368
WHERE f_int1 IN (2,3);
10369
ERROR 23000: Can't write; duplicate key in table 't1'
10370
# check prerequisites-3 success: 1
10371
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
10372
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10373
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10374
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10375
WHERE f_int1 IN (2,3);
10376
DELETE FROM t1 WHERE f_charbig = 'delete me';
10377
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10378
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10379
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10380
WHERE f_int1 IN (2,3);
10381
DELETE FROM t1 WHERE f_charbig = 'delete me';
10382
# check read via f_int1 success: 1
10383
# check read via f_int2 success: 1
10385
# check multiple-1 success: 1
10386
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10388
# check multiple-2 success: 1
10389
INSERT INTO t1 SELECT * FROM t0_template
10390
WHERE MOD(f_int1,3) = 0;
10392
# check multiple-3 success: 1
10393
UPDATE t1 SET f_int1 = f_int1 + @max_row
10394
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10395
AND @max_row_div2 + @max_row_div4;
10397
# check multiple-4 success: 1
10399
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10400
AND @max_row_div2 + @max_row_div4 + @max_row;
10402
# check multiple-5 success: 1
10403
SELECT COUNT(*) INTO @try_count FROM t0_template
10404
WHERE MOD(f_int1,3) = 0
10405
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10406
SELECT COUNT(*) INTO @clash_count
10407
FROM t1 INNER JOIN t0_template USING(f_int1)
10408
WHERE MOD(f_int1,3) = 0
10409
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10410
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10412
SET f_int1 = @cur_value , f_int2 = @cur_value,
10413
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10414
f_charbig = '#SINGLE#';
10416
# check single-1 success: 1
10417
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10419
SET f_int1 = @cur_value , f_int2 = @cur_value,
10420
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10421
f_charbig = '#SINGLE#';
10423
# check single-2 success: 1
10424
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10425
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10426
UPDATE t1 SET f_int1 = @cur_value2
10427
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10429
# check single-3 success: 1
10430
SET @cur_value1= -1;
10431
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10432
UPDATE t1 SET f_int1 = @cur_value1
10433
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10435
# check single-4 success: 1
10436
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10437
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10439
# check single-5 success: 1
10440
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10442
# check single-6 success: 1
10443
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10445
# check single-7 success: 1
10446
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10447
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10448
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10449
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10450
f_charbig = '#NULL#';
10452
SET f_int1 = NULL , f_int2 = -@max_row,
10453
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10454
f_charbig = '#NULL#';
10455
ERROR 23000: Column 'f_int1' cannot be null
10456
# check null success: 1
10458
WHERE f_int1 = 0 AND f_int2 = 0
10459
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10460
AND f_charbig = '#NULL#';
10461
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10462
SELECT f_int1, f_int1, '', '', 'was inserted'
10463
FROM t0_template source_tab
10464
WHERE MOD(f_int1,3) = 0
10465
AND f_int1 BETWEEN @max_row_div2 AND @max_row
10467
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
10468
f_int2 = 2 * @max_row + source_tab.f_int1,
10469
f_charbig = 'was updated';
10471
# check unique-1-a success: 1
10473
# check unique-1-b success: 1
10474
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10475
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10476
f_int2 = CAST(f_char1 AS SIGNED INT),
10477
f_charbig = CONCAT('===',f_char1,'===')
10478
WHERE f_charbig = 'was updated';
10479
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10480
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
10481
FROM t0_template source_tab
10482
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10484
# check replace success: 1
10486
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
10488
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
10489
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
10490
UPDATE t1 SET f_int2 = f_int1,
10491
f_char1 = CAST(f_int1 AS CHAR),
10492
f_char2 = CAST(f_int1 AS CHAR),
10493
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
10494
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
10496
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10497
SELECT f_int1, f_int1, '', '', 'was inserted'
10498
FROM t0_template source_tab
10499
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10501
# check transactions-1 success: 1
10504
# check transactions-2 success: 1
10507
# check transactions-3 success: 1
10508
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10512
# check transactions-4 success: 1
10513
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10514
SELECT f_int1, f_int1, '', '', 'was inserted'
10515
FROM t0_template source_tab
10516
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10518
# check transactions-5 success: 1
10521
# check transactions-6 success: 1
10522
# INFO: Storage engine used for t1 seems to be transactional.
10525
# check transactions-7 success: 1
10526
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10528
SET @@session.sql_mode = 'traditional';
10529
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10530
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10531
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10532
'', '', 'was inserted' FROM t0_template
10533
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10534
ERROR 22012: Division by 0
10537
# check transactions-8 success: 1
10538
# INFO: Storage engine used for t1 seems to be able to revert
10539
# changes made by the failing statement.
10540
SET @@session.sql_mode = '';
10542
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10544
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10546
# check special-1 success: 1
10547
UPDATE t1 SET f_charbig = '';
10549
# check special-2 success: 1
10550
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10551
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10552
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10553
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10554
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10555
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10556
'just inserted' FROM t0_template
10557
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10558
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10560
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10561
f_charbig = 'updated by trigger'
10562
WHERE f_int1 = new.f_int1;
10564
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10565
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10566
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10568
# check trigger-1 success: 1
10569
DROP TRIGGER trg_1;
10570
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10571
f_int2 = CAST(f_char1 AS SIGNED INT),
10572
f_charbig = 'just inserted'
10573
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10575
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10576
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10577
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10578
'just inserted' FROM t0_template
10579
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10580
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10582
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10583
f_charbig = 'updated by trigger'
10584
WHERE f_int1 = new.f_int1;
10586
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10587
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10588
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10590
# check trigger-2 success: 1
10591
DROP TRIGGER trg_1;
10592
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10593
f_int2 = CAST(f_char1 AS SIGNED INT),
10594
f_charbig = 'just inserted'
10595
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10597
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10598
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10599
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10600
'just inserted' FROM t0_template
10601
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10602
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10604
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10605
f_charbig = 'updated by trigger'
10606
WHERE f_int1 = new.f_int1;
10608
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10609
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10611
# check trigger-3 success: 1
10612
DROP TRIGGER trg_1;
10613
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10614
f_int2 = CAST(f_char1 AS SIGNED INT),
10615
f_charbig = 'just inserted'
10616
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10618
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10619
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10620
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10621
'just inserted' FROM t0_template
10622
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10623
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10625
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10626
f_charbig = 'updated by trigger'
10627
WHERE f_int1 = - old.f_int1;
10629
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10630
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10632
# check trigger-4 success: 1
10633
DROP TRIGGER trg_1;
10634
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10635
f_int2 = CAST(f_char1 AS SIGNED INT),
10636
f_charbig = 'just inserted'
10637
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10639
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10640
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10641
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10642
'just inserted' FROM t0_template
10643
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10644
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10646
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10647
f_charbig = 'updated by trigger'
10648
WHERE f_int1 = new.f_int1;
10650
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10651
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10653
# check trigger-5 success: 1
10654
DROP TRIGGER trg_1;
10655
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10656
f_int2 = CAST(f_char1 AS SIGNED INT),
10657
f_charbig = 'just inserted'
10658
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10660
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10661
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10662
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10663
'just inserted' FROM t0_template
10664
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10665
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10667
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10668
f_charbig = 'updated by trigger'
10669
WHERE f_int1 = - old.f_int1;
10671
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10672
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10674
# check trigger-6 success: 1
10675
DROP TRIGGER trg_1;
10676
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10677
f_int2 = CAST(f_char1 AS SIGNED INT),
10678
f_charbig = 'just inserted'
10679
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10681
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10682
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10683
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10684
'just inserted' FROM t0_template
10685
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10686
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10688
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10689
f_charbig = 'updated by trigger'
10690
WHERE f_int1 = - old.f_int1;
10693
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10695
# check trigger-7 success: 1
10696
DROP TRIGGER trg_1;
10697
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10698
f_int2 = CAST(f_char1 AS SIGNED INT),
10699
f_charbig = 'just inserted'
10700
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10702
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10703
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10704
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10705
'just inserted' FROM t0_template
10706
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10707
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10709
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10710
f_charbig = 'updated by trigger'
10711
WHERE f_int1 = - old.f_int1;
10714
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10716
# check trigger-8 success: 1
10717
DROP TRIGGER trg_1;
10718
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10719
f_int2 = CAST(f_char1 AS SIGNED INT),
10720
f_charbig = 'just inserted'
10721
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10723
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10725
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10726
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10728
SET new.f_int1 = old.f_int1 + @max_row,
10729
new.f_int2 = old.f_int2 - @max_row,
10730
new.f_charbig = '####updated per update trigger####';
10733
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10734
f_charbig = '####updated per update statement itself####';
10736
# check trigger-9 success: 1
10737
DROP TRIGGER trg_2;
10738
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10739
f_int2 = CAST(f_char1 AS SIGNED INT),
10740
f_charbig = CONCAT('===',f_char1,'===');
10741
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10743
SET new.f_int1 = new.f_int1 + @max_row,
10744
new.f_int2 = new.f_int2 - @max_row,
10745
new.f_charbig = '####updated per update trigger####';
10748
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10749
f_charbig = '####updated per update statement itself####';
10751
# check trigger-10 success: 1
10752
DROP TRIGGER trg_2;
10753
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10754
f_int2 = CAST(f_char1 AS SIGNED INT),
10755
f_charbig = CONCAT('===',f_char1,'===');
10756
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10758
SET new.f_int1 = @my_max1 + @counter,
10759
new.f_int2 = @my_min2 - @counter,
10760
new.f_charbig = '####updated per insert trigger####';
10761
SET @counter = @counter + 1;
10764
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10765
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10766
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10767
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10768
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10770
DROP TRIGGER trg_3;
10772
# check trigger-11 success: 1
10774
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10775
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10776
AND f_charbig = '####updated per insert trigger####';
10777
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10779
SET new.f_int1 = @my_max1 + @counter,
10780
new.f_int2 = @my_min2 - @counter,
10781
new.f_charbig = '####updated per insert trigger####';
10782
SET @counter = @counter + 1;
10785
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10786
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10787
SELECT CAST(f_int1 AS CHAR),
10788
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10789
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10791
DROP TRIGGER trg_3;
10793
# check trigger-12 success: 1
10795
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10796
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10797
AND f_charbig = '####updated per insert trigger####';
10799
Table Op Msg_type Msg_text
10800
test.t1 analyze note The storage engine for the table doesn't support analyze
10801
CHECK TABLE t1 EXTENDED;
10802
Table Op Msg_type Msg_text
10803
test.t1 check note The storage engine for the table doesn't support check
10804
CHECKSUM TABLE t1 EXTENDED;
10806
test.t1 <some_value>
10808
Table Op Msg_type Msg_text
10809
test.t1 optimize note The storage engine for the table doesn't support optimize
10810
# check layout success: 1
10811
REPAIR TABLE t1 EXTENDED;
10812
Table Op Msg_type Msg_text
10813
test.t1 repair note The storage engine for the table doesn't support repair
10814
# check layout success: 1
10817
# check TRUNCATE success: 1
10818
# check layout success: 1
10819
# End usability test (inc/partition_check.inc)
10826
f_charbig VARCHAR(1000)
10827
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
10829
PARTITION BY LIST(ABS(MOD(f_int1,2)))
10830
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
10831
(PARTITION part1 VALUES IN (0),
10832
PARTITION part2 VALUES IN (1),
10833
PARTITION part3 VALUES IN (NULL));
10834
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10835
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
10836
# Start usability test (inc/partition_check.inc)
10838
SHOW CREATE TABLE t1;
10840
t1 CREATE TABLE `t1` (
10841
`f_int1` int(11) NOT NULL DEFAULT '0',
10842
`f_int2` int(11) NOT NULL DEFAULT '0',
10843
`f_char1` char(20) DEFAULT NULL,
10844
`f_char2` char(20) DEFAULT NULL,
10845
`f_charbig` varchar(1000) DEFAULT NULL,
10846
PRIMARY KEY (`f_int2`,`f_int1`),
10847
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
10848
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
10851
$MYSQLTEST_VARDIR/master-data/test/t1.frm
10852
$MYSQLTEST_VARDIR/master-data/test/t1.par
10854
# check prerequisites-1 success: 1
10855
# check COUNT(*) success: 1
10856
# check MIN/MAX(f_int1) success: 1
10857
# check MIN/MAX(f_int2) success: 1
10858
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10859
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10860
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10861
WHERE f_int1 IN (2,3);
10862
ERROR 23000: Can't write; duplicate key in table 't1'
10863
# check prerequisites-3 success: 1
10864
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
10865
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10866
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10867
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10868
WHERE f_int1 IN (2,3);
10869
DELETE FROM t1 WHERE f_charbig = 'delete me';
10870
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10871
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
10872
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
10873
WHERE f_int1 IN (2,3);
10874
DELETE FROM t1 WHERE f_charbig = 'delete me';
10875
# check read via f_int1 success: 1
10876
# check read via f_int2 success: 1
10878
# check multiple-1 success: 1
10879
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10881
# check multiple-2 success: 1
10882
INSERT INTO t1 SELECT * FROM t0_template
10883
WHERE MOD(f_int1,3) = 0;
10885
# check multiple-3 success: 1
10886
UPDATE t1 SET f_int1 = f_int1 + @max_row
10887
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10888
AND @max_row_div2 + @max_row_div4;
10890
# check multiple-4 success: 1
10892
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10893
AND @max_row_div2 + @max_row_div4 + @max_row;
10895
# check multiple-5 success: 1
10896
SELECT COUNT(*) INTO @try_count FROM t0_template
10897
WHERE MOD(f_int1,3) = 0
10898
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10899
SELECT COUNT(*) INTO @clash_count
10900
FROM t1 INNER JOIN t0_template USING(f_int1)
10901
WHERE MOD(f_int1,3) = 0
10902
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10903
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10905
SET f_int1 = @cur_value , f_int2 = @cur_value,
10906
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10907
f_charbig = '#SINGLE#';
10909
# check single-1 success: 1
10910
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10912
SET f_int1 = @cur_value , f_int2 = @cur_value,
10913
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10914
f_charbig = '#SINGLE#';
10916
# check single-2 success: 1
10917
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10918
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10919
UPDATE t1 SET f_int1 = @cur_value2
10920
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10922
# check single-3 success: 1
10923
SET @cur_value1= -1;
10924
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10925
UPDATE t1 SET f_int1 = @cur_value1
10926
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10928
# check single-4 success: 1
10929
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10930
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10932
# check single-5 success: 1
10933
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10935
# check single-6 success: 1
10936
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10938
# check single-7 success: 1
10939
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10940
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10941
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10942
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10943
f_charbig = '#NULL#';
10945
SET f_int1 = NULL , f_int2 = -@max_row,
10946
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10947
f_charbig = '#NULL#';
10948
ERROR 23000: Column 'f_int1' cannot be null
10949
# check null success: 1
10951
WHERE f_int1 = 0 AND f_int2 = 0
10952
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10953
AND f_charbig = '#NULL#';
10954
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10955
SELECT f_int1, f_int1, '', '', 'was inserted'
10956
FROM t0_template source_tab
10957
WHERE MOD(f_int1,3) = 0
10958
AND f_int1 BETWEEN @max_row_div2 AND @max_row
10960
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
10961
f_int2 = 2 * @max_row + source_tab.f_int1,
10962
f_charbig = 'was updated';
10964
# check unique-1-a success: 1
10966
# check unique-1-b success: 1
10967
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10968
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10969
f_int2 = CAST(f_char1 AS SIGNED INT),
10970
f_charbig = CONCAT('===',f_char1,'===')
10971
WHERE f_charbig = 'was updated';
10972
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10973
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
10974
FROM t0_template source_tab
10975
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
10977
# check replace success: 1
10979
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
10981
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
10982
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
10983
UPDATE t1 SET f_int2 = f_int1,
10984
f_char1 = CAST(f_int1 AS CHAR),
10985
f_char2 = CAST(f_int1 AS CHAR),
10986
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
10987
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
10989
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10990
SELECT f_int1, f_int1, '', '', 'was inserted'
10991
FROM t0_template source_tab
10992
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10994
# check transactions-1 success: 1
10997
# check transactions-2 success: 1
11000
# check transactions-3 success: 1
11001
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11005
# check transactions-4 success: 1
11006
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11007
SELECT f_int1, f_int1, '', '', 'was inserted'
11008
FROM t0_template source_tab
11009
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11011
# check transactions-5 success: 1
11014
# check transactions-6 success: 1
11015
# INFO: Storage engine used for t1 seems to be transactional.
11018
# check transactions-7 success: 1
11019
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11021
SET @@session.sql_mode = 'traditional';
11022
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11023
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11024
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11025
'', '', 'was inserted' FROM t0_template
11026
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11027
ERROR 22012: Division by 0
11030
# check transactions-8 success: 1
11031
# INFO: Storage engine used for t1 seems to be able to revert
11032
# changes made by the failing statement.
11033
SET @@session.sql_mode = '';
11035
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11037
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11039
# check special-1 success: 1
11040
UPDATE t1 SET f_charbig = '';
11042
# check special-2 success: 1
11043
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11044
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11045
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11046
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11047
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11048
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11049
'just inserted' FROM t0_template
11050
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11051
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11053
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11054
f_charbig = 'updated by trigger'
11055
WHERE f_int1 = new.f_int1;
11057
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11058
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11059
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11061
# check trigger-1 success: 1
11062
DROP TRIGGER trg_1;
11063
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11064
f_int2 = CAST(f_char1 AS SIGNED INT),
11065
f_charbig = 'just inserted'
11066
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11068
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11069
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11070
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11071
'just inserted' FROM t0_template
11072
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11073
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11075
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11076
f_charbig = 'updated by trigger'
11077
WHERE f_int1 = new.f_int1;
11079
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11080
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11081
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11083
# check trigger-2 success: 1
11084
DROP TRIGGER trg_1;
11085
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11086
f_int2 = CAST(f_char1 AS SIGNED INT),
11087
f_charbig = 'just inserted'
11088
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11090
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11091
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11092
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11093
'just inserted' FROM t0_template
11094
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11095
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11097
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11098
f_charbig = 'updated by trigger'
11099
WHERE f_int1 = new.f_int1;
11101
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11102
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11104
# check trigger-3 success: 1
11105
DROP TRIGGER trg_1;
11106
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11107
f_int2 = CAST(f_char1 AS SIGNED INT),
11108
f_charbig = 'just inserted'
11109
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11111
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11112
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11113
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11114
'just inserted' FROM t0_template
11115
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11116
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11118
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11119
f_charbig = 'updated by trigger'
11120
WHERE f_int1 = - old.f_int1;
11122
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11123
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11125
# check trigger-4 success: 1
11126
DROP TRIGGER trg_1;
11127
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11128
f_int2 = CAST(f_char1 AS SIGNED INT),
11129
f_charbig = 'just inserted'
11130
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11132
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11133
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11134
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11135
'just inserted' FROM t0_template
11136
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11137
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11139
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11140
f_charbig = 'updated by trigger'
11141
WHERE f_int1 = new.f_int1;
11143
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11144
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11146
# check trigger-5 success: 1
11147
DROP TRIGGER trg_1;
11148
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11149
f_int2 = CAST(f_char1 AS SIGNED INT),
11150
f_charbig = 'just inserted'
11151
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11153
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11154
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11155
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11156
'just inserted' FROM t0_template
11157
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11158
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11160
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11161
f_charbig = 'updated by trigger'
11162
WHERE f_int1 = - old.f_int1;
11164
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11165
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11167
# check trigger-6 success: 1
11168
DROP TRIGGER trg_1;
11169
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11170
f_int2 = CAST(f_char1 AS SIGNED INT),
11171
f_charbig = 'just inserted'
11172
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11174
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11175
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11176
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11177
'just inserted' FROM t0_template
11178
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11179
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11181
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11182
f_charbig = 'updated by trigger'
11183
WHERE f_int1 = - old.f_int1;
11186
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11188
# check trigger-7 success: 1
11189
DROP TRIGGER trg_1;
11190
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11191
f_int2 = CAST(f_char1 AS SIGNED INT),
11192
f_charbig = 'just inserted'
11193
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11195
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11196
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11197
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11198
'just inserted' FROM t0_template
11199
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11200
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11202
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11203
f_charbig = 'updated by trigger'
11204
WHERE f_int1 = - old.f_int1;
11207
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11209
# check trigger-8 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;
11218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11219
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11221
SET new.f_int1 = old.f_int1 + @max_row,
11222
new.f_int2 = old.f_int2 - @max_row,
11223
new.f_charbig = '####updated per update trigger####';
11226
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11227
f_charbig = '####updated per update statement itself####';
11229
# check trigger-9 success: 1
11230
DROP TRIGGER trg_2;
11231
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11232
f_int2 = CAST(f_char1 AS SIGNED INT),
11233
f_charbig = CONCAT('===',f_char1,'===');
11234
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11236
SET new.f_int1 = new.f_int1 + @max_row,
11237
new.f_int2 = new.f_int2 - @max_row,
11238
new.f_charbig = '####updated per update trigger####';
11241
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11242
f_charbig = '####updated per update statement itself####';
11244
# check trigger-10 success: 1
11245
DROP TRIGGER trg_2;
11246
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11247
f_int2 = CAST(f_char1 AS SIGNED INT),
11248
f_charbig = CONCAT('===',f_char1,'===');
11249
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11251
SET new.f_int1 = @my_max1 + @counter,
11252
new.f_int2 = @my_min2 - @counter,
11253
new.f_charbig = '####updated per insert trigger####';
11254
SET @counter = @counter + 1;
11257
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11258
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11259
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11260
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11261
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11263
DROP TRIGGER trg_3;
11265
# check trigger-11 success: 1
11267
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11268
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11269
AND f_charbig = '####updated per insert trigger####';
11270
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11272
SET new.f_int1 = @my_max1 + @counter,
11273
new.f_int2 = @my_min2 - @counter,
11274
new.f_charbig = '####updated per insert trigger####';
11275
SET @counter = @counter + 1;
11278
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11279
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11280
SELECT CAST(f_int1 AS CHAR),
11281
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11282
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11284
DROP TRIGGER trg_3;
11286
# check trigger-12 success: 1
11288
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11289
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11290
AND f_charbig = '####updated per insert trigger####';
11292
Table Op Msg_type Msg_text
11293
test.t1 analyze note The storage engine for the table doesn't support analyze
11294
CHECK TABLE t1 EXTENDED;
11295
Table Op Msg_type Msg_text
11296
test.t1 check note The storage engine for the table doesn't support check
11297
CHECKSUM TABLE t1 EXTENDED;
11299
test.t1 <some_value>
11301
Table Op Msg_type Msg_text
11302
test.t1 optimize note The storage engine for the table doesn't support optimize
11303
# check layout success: 1
11304
REPAIR TABLE t1 EXTENDED;
11305
Table Op Msg_type Msg_text
11306
test.t1 repair note The storage engine for the table doesn't support repair
11307
# check layout success: 1
11310
# check TRUNCATE success: 1
11311
# check layout success: 1
11312
# End usability test (inc/partition_check.inc)
11314
DROP TABLE IF EXISTS t1;
11320
f_charbig VARCHAR(1000)
11321
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
11323
PARTITION BY HASH(f_int1) PARTITIONS 2;
11324
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11325
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
11326
# Start usability test (inc/partition_check.inc)
11328
SHOW CREATE TABLE t1;
11330
t1 CREATE TABLE `t1` (
11331
`f_int1` int(11) NOT NULL DEFAULT '0',
11332
`f_int2` int(11) NOT NULL DEFAULT '0',
11333
`f_char1` char(20) DEFAULT NULL,
11334
`f_char2` char(20) DEFAULT NULL,
11335
`f_charbig` varchar(1000) DEFAULT NULL,
11336
PRIMARY KEY (`f_int1`,`f_int2`),
11337
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
11338
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) PARTITIONS 2 */
11341
$MYSQLTEST_VARDIR/master-data/test/t1.frm
11342
$MYSQLTEST_VARDIR/master-data/test/t1.par
11344
# check prerequisites-1 success: 1
11345
# check COUNT(*) success: 1
11346
# check MIN/MAX(f_int1) success: 1
11347
# check MIN/MAX(f_int2) success: 1
11348
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11349
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11350
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11351
WHERE f_int1 IN (2,3);
11352
ERROR 23000: Can't write; duplicate key in table 't1'
11353
# check prerequisites-3 success: 1
11354
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
11355
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11356
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11357
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11358
WHERE f_int1 IN (2,3);
11359
DELETE FROM t1 WHERE f_charbig = 'delete me';
11360
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11361
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11362
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11363
WHERE f_int1 IN (2,3);
11364
DELETE FROM t1 WHERE f_charbig = 'delete me';
11365
# check read via f_int1 success: 1
11366
# check read via f_int2 success: 1
11368
# check multiple-1 success: 1
11369
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11371
# check multiple-2 success: 1
11372
INSERT INTO t1 SELECT * FROM t0_template
11373
WHERE MOD(f_int1,3) = 0;
11375
# check multiple-3 success: 1
11376
UPDATE t1 SET f_int1 = f_int1 + @max_row
11377
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11378
AND @max_row_div2 + @max_row_div4;
11380
# check multiple-4 success: 1
11382
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11383
AND @max_row_div2 + @max_row_div4 + @max_row;
11385
# check multiple-5 success: 1
11386
SELECT COUNT(*) INTO @try_count FROM t0_template
11387
WHERE MOD(f_int1,3) = 0
11388
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11389
SELECT COUNT(*) INTO @clash_count
11390
FROM t1 INNER JOIN t0_template USING(f_int1)
11391
WHERE MOD(f_int1,3) = 0
11392
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11393
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11395
SET f_int1 = @cur_value , f_int2 = @cur_value,
11396
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11397
f_charbig = '#SINGLE#';
11399
# check single-1 success: 1
11400
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11402
SET f_int1 = @cur_value , f_int2 = @cur_value,
11403
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11404
f_charbig = '#SINGLE#';
11406
# check single-2 success: 1
11407
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11408
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11409
UPDATE t1 SET f_int1 = @cur_value2
11410
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11412
# check single-3 success: 1
11413
SET @cur_value1= -1;
11414
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11415
UPDATE t1 SET f_int1 = @cur_value1
11416
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11418
# check single-4 success: 1
11419
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11420
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11422
# check single-5 success: 1
11423
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11425
# check single-6 success: 1
11426
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11428
# check single-7 success: 1
11429
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11430
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11431
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11432
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11433
f_charbig = '#NULL#';
11435
SET f_int1 = NULL , f_int2 = -@max_row,
11436
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11437
f_charbig = '#NULL#';
11438
ERROR 23000: Column 'f_int1' cannot be null
11439
# check null success: 1
11441
WHERE f_int1 = 0 AND f_int2 = 0
11442
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11443
AND f_charbig = '#NULL#';
11444
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11445
SELECT f_int1, f_int1, '', '', 'was inserted'
11446
FROM t0_template source_tab
11447
WHERE MOD(f_int1,3) = 0
11448
AND f_int1 BETWEEN @max_row_div2 AND @max_row
11450
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
11451
f_int2 = 2 * @max_row + source_tab.f_int1,
11452
f_charbig = 'was updated';
11454
# check unique-1-a success: 1
11456
# check unique-1-b success: 1
11457
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11458
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11459
f_int2 = CAST(f_char1 AS SIGNED INT),
11460
f_charbig = CONCAT('===',f_char1,'===')
11461
WHERE f_charbig = 'was updated';
11462
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11463
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11464
FROM t0_template source_tab
11465
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11467
# check replace success: 1
11469
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11471
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11472
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11473
UPDATE t1 SET f_int2 = f_int1,
11474
f_char1 = CAST(f_int1 AS CHAR),
11475
f_char2 = CAST(f_int1 AS CHAR),
11476
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11477
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
11479
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11480
SELECT f_int1, f_int1, '', '', 'was inserted'
11481
FROM t0_template source_tab
11482
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11484
# check transactions-1 success: 1
11487
# check transactions-2 success: 1
11490
# check transactions-3 success: 1
11491
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11495
# check transactions-4 success: 1
11496
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11497
SELECT f_int1, f_int1, '', '', 'was inserted'
11498
FROM t0_template source_tab
11499
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11501
# check transactions-5 success: 1
11504
# check transactions-6 success: 1
11505
# INFO: Storage engine used for t1 seems to be transactional.
11508
# check transactions-7 success: 1
11509
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11511
SET @@session.sql_mode = 'traditional';
11512
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11513
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11514
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11515
'', '', 'was inserted' FROM t0_template
11516
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11517
ERROR 22012: Division by 0
11520
# check transactions-8 success: 1
11521
# INFO: Storage engine used for t1 seems to be able to revert
11522
# changes made by the failing statement.
11523
SET @@session.sql_mode = '';
11525
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11527
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11529
# check special-1 success: 1
11530
UPDATE t1 SET f_charbig = '';
11532
# check special-2 success: 1
11533
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11534
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11535
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11536
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11537
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11538
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11539
'just inserted' FROM t0_template
11540
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11541
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11543
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11544
f_charbig = 'updated by trigger'
11545
WHERE f_int1 = new.f_int1;
11547
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11548
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11549
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11551
# check trigger-1 success: 1
11552
DROP TRIGGER trg_1;
11553
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11554
f_int2 = CAST(f_char1 AS SIGNED INT),
11555
f_charbig = 'just inserted'
11556
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11558
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11559
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11560
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11561
'just inserted' FROM t0_template
11562
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11563
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11565
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11566
f_charbig = 'updated by trigger'
11567
WHERE f_int1 = new.f_int1;
11569
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11570
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11571
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11573
# check trigger-2 success: 1
11574
DROP TRIGGER trg_1;
11575
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11576
f_int2 = CAST(f_char1 AS SIGNED INT),
11577
f_charbig = 'just inserted'
11578
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11580
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11581
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11582
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11583
'just inserted' FROM t0_template
11584
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11585
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11587
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11588
f_charbig = 'updated by trigger'
11589
WHERE f_int1 = new.f_int1;
11591
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11592
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11594
# check trigger-3 success: 1
11595
DROP TRIGGER trg_1;
11596
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11597
f_int2 = CAST(f_char1 AS SIGNED INT),
11598
f_charbig = 'just inserted'
11599
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11601
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11602
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11603
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11604
'just inserted' FROM t0_template
11605
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11606
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11608
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11609
f_charbig = 'updated by trigger'
11610
WHERE f_int1 = - old.f_int1;
11612
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11613
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11615
# check trigger-4 success: 1
11616
DROP TRIGGER trg_1;
11617
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11618
f_int2 = CAST(f_char1 AS SIGNED INT),
11619
f_charbig = 'just inserted'
11620
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11622
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11623
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11624
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11625
'just inserted' FROM t0_template
11626
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11627
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11629
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11630
f_charbig = 'updated by trigger'
11631
WHERE f_int1 = new.f_int1;
11633
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11634
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11636
# check trigger-5 success: 1
11637
DROP TRIGGER trg_1;
11638
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11639
f_int2 = CAST(f_char1 AS SIGNED INT),
11640
f_charbig = 'just inserted'
11641
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11643
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11644
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11645
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11646
'just inserted' FROM t0_template
11647
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11648
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11650
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11651
f_charbig = 'updated by trigger'
11652
WHERE f_int1 = - old.f_int1;
11654
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11655
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11657
# check trigger-6 success: 1
11658
DROP TRIGGER trg_1;
11659
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11660
f_int2 = CAST(f_char1 AS SIGNED INT),
11661
f_charbig = 'just inserted'
11662
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11664
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11665
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11666
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11667
'just inserted' FROM t0_template
11668
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11669
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11671
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11672
f_charbig = 'updated by trigger'
11673
WHERE f_int1 = - old.f_int1;
11676
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11678
# check trigger-7 success: 1
11679
DROP TRIGGER trg_1;
11680
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11681
f_int2 = CAST(f_char1 AS SIGNED INT),
11682
f_charbig = 'just inserted'
11683
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11685
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11686
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11687
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11688
'just inserted' FROM t0_template
11689
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11690
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11692
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11693
f_charbig = 'updated by trigger'
11694
WHERE f_int1 = - old.f_int1;
11697
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11699
# check trigger-8 success: 1
11700
DROP TRIGGER trg_1;
11701
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11702
f_int2 = CAST(f_char1 AS SIGNED INT),
11703
f_charbig = 'just inserted'
11704
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11706
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11708
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11709
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11711
SET new.f_int1 = old.f_int1 + @max_row,
11712
new.f_int2 = old.f_int2 - @max_row,
11713
new.f_charbig = '####updated per update trigger####';
11716
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11717
f_charbig = '####updated per update statement itself####';
11719
# check trigger-9 success: 1
11720
DROP TRIGGER trg_2;
11721
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11722
f_int2 = CAST(f_char1 AS SIGNED INT),
11723
f_charbig = CONCAT('===',f_char1,'===');
11724
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11726
SET new.f_int1 = new.f_int1 + @max_row,
11727
new.f_int2 = new.f_int2 - @max_row,
11728
new.f_charbig = '####updated per update trigger####';
11731
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11732
f_charbig = '####updated per update statement itself####';
11734
# check trigger-10 success: 1
11735
DROP TRIGGER trg_2;
11736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11737
f_int2 = CAST(f_char1 AS SIGNED INT),
11738
f_charbig = CONCAT('===',f_char1,'===');
11739
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11741
SET new.f_int1 = @my_max1 + @counter,
11742
new.f_int2 = @my_min2 - @counter,
11743
new.f_charbig = '####updated per insert trigger####';
11744
SET @counter = @counter + 1;
11747
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11748
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11749
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11750
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11751
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11753
DROP TRIGGER trg_3;
11755
# check trigger-11 success: 1
11757
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11758
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11759
AND f_charbig = '####updated per insert trigger####';
11760
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11762
SET new.f_int1 = @my_max1 + @counter,
11763
new.f_int2 = @my_min2 - @counter,
11764
new.f_charbig = '####updated per insert trigger####';
11765
SET @counter = @counter + 1;
11768
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11769
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11770
SELECT CAST(f_int1 AS CHAR),
11771
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11772
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11774
DROP TRIGGER trg_3;
11776
# check trigger-12 success: 1
11778
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11779
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11780
AND f_charbig = '####updated per insert trigger####';
11782
Table Op Msg_type Msg_text
11783
test.t1 analyze note The storage engine for the table doesn't support analyze
11784
CHECK TABLE t1 EXTENDED;
11785
Table Op Msg_type Msg_text
11786
test.t1 check note The storage engine for the table doesn't support check
11787
CHECKSUM TABLE t1 EXTENDED;
11789
test.t1 <some_value>
11791
Table Op Msg_type Msg_text
11792
test.t1 optimize note The storage engine for the table doesn't support optimize
11793
# check layout success: 1
11794
REPAIR TABLE t1 EXTENDED;
11795
Table Op Msg_type Msg_text
11796
test.t1 repair note The storage engine for the table doesn't support repair
11797
# check layout success: 1
11800
# check TRUNCATE success: 1
11801
# check layout success: 1
11802
# End usability test (inc/partition_check.inc)
11809
f_charbig VARCHAR(1000)
11810
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
11812
PARTITION BY KEY(f_int1) PARTITIONS 5;
11813
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11814
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
11815
# Start usability test (inc/partition_check.inc)
11817
SHOW CREATE TABLE t1;
11819
t1 CREATE TABLE `t1` (
11820
`f_int1` int(11) NOT NULL DEFAULT '0',
11821
`f_int2` int(11) NOT NULL DEFAULT '0',
11822
`f_char1` char(20) DEFAULT NULL,
11823
`f_char2` char(20) DEFAULT NULL,
11824
`f_charbig` varchar(1000) DEFAULT NULL,
11825
PRIMARY KEY (`f_int1`,`f_int2`),
11826
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
11827
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) PARTITIONS 5 */
11830
$MYSQLTEST_VARDIR/master-data/test/t1.frm
11831
$MYSQLTEST_VARDIR/master-data/test/t1.par
11833
# check prerequisites-1 success: 1
11834
# check COUNT(*) success: 1
11835
# check MIN/MAX(f_int1) success: 1
11836
# check MIN/MAX(f_int2) success: 1
11837
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11838
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11839
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11840
WHERE f_int1 IN (2,3);
11841
ERROR 23000: Can't write; duplicate key in table 't1'
11842
# check prerequisites-3 success: 1
11843
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
11844
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11845
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11846
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11847
WHERE f_int1 IN (2,3);
11848
DELETE FROM t1 WHERE f_charbig = 'delete me';
11849
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11850
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
11851
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
11852
WHERE f_int1 IN (2,3);
11853
DELETE FROM t1 WHERE f_charbig = 'delete me';
11854
# check read via f_int1 success: 1
11855
# check read via f_int2 success: 1
11857
# check multiple-1 success: 1
11858
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11860
# check multiple-2 success: 1
11861
INSERT INTO t1 SELECT * FROM t0_template
11862
WHERE MOD(f_int1,3) = 0;
11864
# check multiple-3 success: 1
11865
UPDATE t1 SET f_int1 = f_int1 + @max_row
11866
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11867
AND @max_row_div2 + @max_row_div4;
11869
# check multiple-4 success: 1
11871
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11872
AND @max_row_div2 + @max_row_div4 + @max_row;
11874
# check multiple-5 success: 1
11875
SELECT COUNT(*) INTO @try_count FROM t0_template
11876
WHERE MOD(f_int1,3) = 0
11877
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11878
SELECT COUNT(*) INTO @clash_count
11879
FROM t1 INNER JOIN t0_template USING(f_int1)
11880
WHERE MOD(f_int1,3) = 0
11881
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11882
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11884
SET f_int1 = @cur_value , f_int2 = @cur_value,
11885
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11886
f_charbig = '#SINGLE#';
11888
# check single-1 success: 1
11889
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11891
SET f_int1 = @cur_value , f_int2 = @cur_value,
11892
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11893
f_charbig = '#SINGLE#';
11895
# check single-2 success: 1
11896
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11897
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11898
UPDATE t1 SET f_int1 = @cur_value2
11899
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11901
# check single-3 success: 1
11902
SET @cur_value1= -1;
11903
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11904
UPDATE t1 SET f_int1 = @cur_value1
11905
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11907
# check single-4 success: 1
11908
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11909
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11911
# check single-5 success: 1
11912
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11914
# check single-6 success: 1
11915
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11917
# check single-7 success: 1
11918
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11919
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11920
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11921
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11922
f_charbig = '#NULL#';
11924
SET f_int1 = NULL , f_int2 = -@max_row,
11925
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11926
f_charbig = '#NULL#';
11927
ERROR 23000: Column 'f_int1' cannot be null
11928
# check null success: 1
11930
WHERE f_int1 = 0 AND f_int2 = 0
11931
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11932
AND f_charbig = '#NULL#';
11933
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11934
SELECT f_int1, f_int1, '', '', 'was inserted'
11935
FROM t0_template source_tab
11936
WHERE MOD(f_int1,3) = 0
11937
AND f_int1 BETWEEN @max_row_div2 AND @max_row
11939
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
11940
f_int2 = 2 * @max_row + source_tab.f_int1,
11941
f_charbig = 'was updated';
11943
# check unique-1-a success: 1
11945
# check unique-1-b success: 1
11946
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11947
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11948
f_int2 = CAST(f_char1 AS SIGNED INT),
11949
f_charbig = CONCAT('===',f_char1,'===')
11950
WHERE f_charbig = 'was updated';
11951
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11952
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
11953
FROM t0_template source_tab
11954
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
11956
# check replace success: 1
11958
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
11960
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
11961
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
11962
UPDATE t1 SET f_int2 = f_int1,
11963
f_char1 = CAST(f_int1 AS CHAR),
11964
f_char2 = CAST(f_int1 AS CHAR),
11965
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
11966
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
11968
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11969
SELECT f_int1, f_int1, '', '', 'was inserted'
11970
FROM t0_template source_tab
11971
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11973
# check transactions-1 success: 1
11976
# check transactions-2 success: 1
11979
# check transactions-3 success: 1
11980
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11984
# check transactions-4 success: 1
11985
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11986
SELECT f_int1, f_int1, '', '', 'was inserted'
11987
FROM t0_template source_tab
11988
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11990
# check transactions-5 success: 1
11993
# check transactions-6 success: 1
11994
# INFO: Storage engine used for t1 seems to be transactional.
11997
# check transactions-7 success: 1
11998
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12000
SET @@session.sql_mode = 'traditional';
12001
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12002
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12003
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12004
'', '', 'was inserted' FROM t0_template
12005
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12006
ERROR 22012: Division by 0
12009
# check transactions-8 success: 1
12010
# INFO: Storage engine used for t1 seems to be able to revert
12011
# changes made by the failing statement.
12012
SET @@session.sql_mode = '';
12014
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12016
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12018
# check special-1 success: 1
12019
UPDATE t1 SET f_charbig = '';
12021
# check special-2 success: 1
12022
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12023
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12024
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12025
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12026
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12027
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12028
'just inserted' FROM t0_template
12029
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12030
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12032
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12033
f_charbig = 'updated by trigger'
12034
WHERE f_int1 = new.f_int1;
12036
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12037
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12038
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12040
# check trigger-1 success: 1
12041
DROP TRIGGER trg_1;
12042
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12043
f_int2 = CAST(f_char1 AS SIGNED INT),
12044
f_charbig = 'just inserted'
12045
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12047
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12048
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12049
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12050
'just inserted' FROM t0_template
12051
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12052
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12054
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12055
f_charbig = 'updated by trigger'
12056
WHERE f_int1 = new.f_int1;
12058
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12059
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12060
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12062
# check trigger-2 success: 1
12063
DROP TRIGGER trg_1;
12064
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12065
f_int2 = CAST(f_char1 AS SIGNED INT),
12066
f_charbig = 'just inserted'
12067
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12069
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12070
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12071
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12072
'just inserted' FROM t0_template
12073
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12074
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12076
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12077
f_charbig = 'updated by trigger'
12078
WHERE f_int1 = new.f_int1;
12080
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12081
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12083
# check trigger-3 success: 1
12084
DROP TRIGGER trg_1;
12085
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12086
f_int2 = CAST(f_char1 AS SIGNED INT),
12087
f_charbig = 'just inserted'
12088
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12090
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12091
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12092
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12093
'just inserted' FROM t0_template
12094
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12095
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12097
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12098
f_charbig = 'updated by trigger'
12099
WHERE f_int1 = - old.f_int1;
12101
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12102
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12104
# check trigger-4 success: 1
12105
DROP TRIGGER trg_1;
12106
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12107
f_int2 = CAST(f_char1 AS SIGNED INT),
12108
f_charbig = 'just inserted'
12109
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12111
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12112
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12113
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12114
'just inserted' FROM t0_template
12115
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12116
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12118
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12119
f_charbig = 'updated by trigger'
12120
WHERE f_int1 = new.f_int1;
12122
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12123
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12125
# check trigger-5 success: 1
12126
DROP TRIGGER trg_1;
12127
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12128
f_int2 = CAST(f_char1 AS SIGNED INT),
12129
f_charbig = 'just inserted'
12130
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12132
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12133
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12134
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12135
'just inserted' FROM t0_template
12136
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12137
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12139
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12140
f_charbig = 'updated by trigger'
12141
WHERE f_int1 = - old.f_int1;
12143
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12144
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12146
# check trigger-6 success: 1
12147
DROP TRIGGER trg_1;
12148
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12149
f_int2 = CAST(f_char1 AS SIGNED INT),
12150
f_charbig = 'just inserted'
12151
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12153
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12154
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12155
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12156
'just inserted' FROM t0_template
12157
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12158
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12160
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12161
f_charbig = 'updated by trigger'
12162
WHERE f_int1 = - old.f_int1;
12165
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12167
# check trigger-7 success: 1
12168
DROP TRIGGER trg_1;
12169
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12170
f_int2 = CAST(f_char1 AS SIGNED INT),
12171
f_charbig = 'just inserted'
12172
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12174
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12175
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12176
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12177
'just inserted' FROM t0_template
12178
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12179
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12181
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12182
f_charbig = 'updated by trigger'
12183
WHERE f_int1 = - old.f_int1;
12186
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12188
# check trigger-8 success: 1
12189
DROP TRIGGER trg_1;
12190
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12191
f_int2 = CAST(f_char1 AS SIGNED INT),
12192
f_charbig = 'just inserted'
12193
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12195
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12197
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12198
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12200
SET new.f_int1 = old.f_int1 + @max_row,
12201
new.f_int2 = old.f_int2 - @max_row,
12202
new.f_charbig = '####updated per update trigger####';
12205
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12206
f_charbig = '####updated per update statement itself####';
12208
# check trigger-9 success: 1
12209
DROP TRIGGER trg_2;
12210
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12211
f_int2 = CAST(f_char1 AS SIGNED INT),
12212
f_charbig = CONCAT('===',f_char1,'===');
12213
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12215
SET new.f_int1 = new.f_int1 + @max_row,
12216
new.f_int2 = new.f_int2 - @max_row,
12217
new.f_charbig = '####updated per update trigger####';
12220
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12221
f_charbig = '####updated per update statement itself####';
12223
# check trigger-10 success: 1
12224
DROP TRIGGER trg_2;
12225
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12226
f_int2 = CAST(f_char1 AS SIGNED INT),
12227
f_charbig = CONCAT('===',f_char1,'===');
12228
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12230
SET new.f_int1 = @my_max1 + @counter,
12231
new.f_int2 = @my_min2 - @counter,
12232
new.f_charbig = '####updated per insert trigger####';
12233
SET @counter = @counter + 1;
12236
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12237
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12238
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12239
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12240
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12242
DROP TRIGGER trg_3;
12244
# check trigger-11 success: 1
12246
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12247
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12248
AND f_charbig = '####updated per insert trigger####';
12249
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12251
SET new.f_int1 = @my_max1 + @counter,
12252
new.f_int2 = @my_min2 - @counter,
12253
new.f_charbig = '####updated per insert trigger####';
12254
SET @counter = @counter + 1;
12257
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12258
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12259
SELECT CAST(f_int1 AS CHAR),
12260
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12261
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12263
DROP TRIGGER trg_3;
12265
# check trigger-12 success: 1
12267
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12268
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12269
AND f_charbig = '####updated per insert trigger####';
12271
Table Op Msg_type Msg_text
12272
test.t1 analyze note The storage engine for the table doesn't support analyze
12273
CHECK TABLE t1 EXTENDED;
12274
Table Op Msg_type Msg_text
12275
test.t1 check note The storage engine for the table doesn't support check
12276
CHECKSUM TABLE t1 EXTENDED;
12278
test.t1 <some_value>
12280
Table Op Msg_type Msg_text
12281
test.t1 optimize note The storage engine for the table doesn't support optimize
12282
# check layout success: 1
12283
REPAIR TABLE t1 EXTENDED;
12284
Table Op Msg_type Msg_text
12285
test.t1 repair note The storage engine for the table doesn't support repair
12286
# check layout success: 1
12289
# check TRUNCATE success: 1
12290
# check layout success: 1
12291
# End usability test (inc/partition_check.inc)
12298
f_charbig VARCHAR(1000)
12299
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
12301
PARTITION BY LIST(MOD(f_int1,4))
12302
(PARTITION part_3 VALUES IN (-3),
12303
PARTITION part_2 VALUES IN (-2),
12304
PARTITION part_1 VALUES IN (-1),
12305
PARTITION part_N VALUES IN (NULL),
12306
PARTITION part0 VALUES IN (0),
12307
PARTITION part1 VALUES IN (1),
12308
PARTITION part2 VALUES IN (2),
12309
PARTITION part3 VALUES IN (3));
12310
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12311
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
12312
# Start usability test (inc/partition_check.inc)
12314
SHOW CREATE TABLE t1;
12316
t1 CREATE TABLE `t1` (
12317
`f_int1` int(11) NOT NULL DEFAULT '0',
12318
`f_int2` int(11) NOT NULL DEFAULT '0',
12319
`f_char1` char(20) DEFAULT NULL,
12320
`f_char2` char(20) DEFAULT NULL,
12321
`f_charbig` varchar(1000) DEFAULT NULL,
12322
PRIMARY KEY (`f_int1`,`f_int2`),
12323
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
12324
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
12327
$MYSQLTEST_VARDIR/master-data/test/t1.frm
12328
$MYSQLTEST_VARDIR/master-data/test/t1.par
12330
# check prerequisites-1 success: 1
12331
# check COUNT(*) success: 1
12332
# check MIN/MAX(f_int1) success: 1
12333
# check MIN/MAX(f_int2) success: 1
12334
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12335
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12336
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12337
WHERE f_int1 IN (2,3);
12338
ERROR 23000: Can't write; duplicate key in table 't1'
12339
# check prerequisites-3 success: 1
12340
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12341
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12342
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12343
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12344
WHERE f_int1 IN (2,3);
12345
DELETE FROM t1 WHERE f_charbig = 'delete me';
12346
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12347
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12348
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12349
WHERE f_int1 IN (2,3);
12350
DELETE FROM t1 WHERE f_charbig = 'delete me';
12351
# check read via f_int1 success: 1
12352
# check read via f_int2 success: 1
12354
# check multiple-1 success: 1
12355
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12357
# check multiple-2 success: 1
12358
INSERT INTO t1 SELECT * FROM t0_template
12359
WHERE MOD(f_int1,3) = 0;
12361
# check multiple-3 success: 1
12362
UPDATE t1 SET f_int1 = f_int1 + @max_row
12363
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12364
AND @max_row_div2 + @max_row_div4;
12366
# check multiple-4 success: 1
12368
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12369
AND @max_row_div2 + @max_row_div4 + @max_row;
12371
# check multiple-5 success: 1
12372
SELECT COUNT(*) INTO @try_count FROM t0_template
12373
WHERE MOD(f_int1,3) = 0
12374
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12375
SELECT COUNT(*) INTO @clash_count
12376
FROM t1 INNER JOIN t0_template USING(f_int1)
12377
WHERE MOD(f_int1,3) = 0
12378
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12379
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12381
SET f_int1 = @cur_value , f_int2 = @cur_value,
12382
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12383
f_charbig = '#SINGLE#';
12385
# check single-1 success: 1
12386
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12388
SET f_int1 = @cur_value , f_int2 = @cur_value,
12389
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12390
f_charbig = '#SINGLE#';
12392
# check single-2 success: 1
12393
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12394
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12395
UPDATE t1 SET f_int1 = @cur_value2
12396
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12398
# check single-3 success: 1
12399
SET @cur_value1= -1;
12400
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12401
UPDATE t1 SET f_int1 = @cur_value1
12402
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12404
# check single-4 success: 1
12405
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12406
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12408
# check single-5 success: 1
12409
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12411
# check single-6 success: 1
12412
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12414
# check single-7 success: 1
12415
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
12416
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12417
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12418
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12419
f_charbig = '#NULL#';
12421
SET f_int1 = NULL , f_int2 = -@max_row,
12422
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12423
f_charbig = '#NULL#';
12424
ERROR 23000: Column 'f_int1' cannot be null
12425
# check null success: 1
12427
WHERE f_int1 = 0 AND f_int2 = 0
12428
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12429
AND f_charbig = '#NULL#';
12430
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12431
SELECT f_int1, f_int1, '', '', 'was inserted'
12432
FROM t0_template source_tab
12433
WHERE MOD(f_int1,3) = 0
12434
AND f_int1 BETWEEN @max_row_div2 AND @max_row
12436
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12437
f_int2 = 2 * @max_row + source_tab.f_int1,
12438
f_charbig = 'was updated';
12440
# check unique-1-a success: 1
12442
# check unique-1-b success: 1
12443
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12444
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12445
f_int2 = CAST(f_char1 AS SIGNED INT),
12446
f_charbig = CONCAT('===',f_char1,'===')
12447
WHERE f_charbig = 'was updated';
12448
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12449
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12450
FROM t0_template source_tab
12451
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12453
# check replace success: 1
12455
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
12457
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
12458
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
12459
UPDATE t1 SET f_int2 = f_int1,
12460
f_char1 = CAST(f_int1 AS CHAR),
12461
f_char2 = CAST(f_int1 AS CHAR),
12462
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
12463
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
12465
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12466
SELECT f_int1, f_int1, '', '', 'was inserted'
12467
FROM t0_template source_tab
12468
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12470
# check transactions-1 success: 1
12473
# check transactions-2 success: 1
12476
# check transactions-3 success: 1
12477
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12481
# check transactions-4 success: 1
12482
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12483
SELECT f_int1, f_int1, '', '', 'was inserted'
12484
FROM t0_template source_tab
12485
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12487
# check transactions-5 success: 1
12490
# check transactions-6 success: 1
12491
# INFO: Storage engine used for t1 seems to be transactional.
12494
# check transactions-7 success: 1
12495
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12497
SET @@session.sql_mode = 'traditional';
12498
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12499
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12500
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12501
'', '', 'was inserted' FROM t0_template
12502
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12503
ERROR 22012: Division by 0
12506
# check transactions-8 success: 1
12507
# INFO: Storage engine used for t1 seems to be able to revert
12508
# changes made by the failing statement.
12509
SET @@session.sql_mode = '';
12511
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12513
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12515
# check special-1 success: 1
12516
UPDATE t1 SET f_charbig = '';
12518
# check special-2 success: 1
12519
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12520
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12521
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12522
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12523
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12524
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12525
'just inserted' FROM t0_template
12526
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12527
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12529
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12530
f_charbig = 'updated by trigger'
12531
WHERE f_int1 = new.f_int1;
12533
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12534
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12535
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12537
# check trigger-1 success: 1
12538
DROP TRIGGER trg_1;
12539
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12540
f_int2 = CAST(f_char1 AS SIGNED INT),
12541
f_charbig = 'just inserted'
12542
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12544
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12545
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12546
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12547
'just inserted' FROM t0_template
12548
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12549
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12551
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12552
f_charbig = 'updated by trigger'
12553
WHERE f_int1 = new.f_int1;
12555
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12556
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12557
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12559
# check trigger-2 success: 1
12560
DROP TRIGGER trg_1;
12561
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12562
f_int2 = CAST(f_char1 AS SIGNED INT),
12563
f_charbig = 'just inserted'
12564
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12566
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12567
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12568
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12569
'just inserted' FROM t0_template
12570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12571
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12573
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12574
f_charbig = 'updated by trigger'
12575
WHERE f_int1 = new.f_int1;
12577
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12578
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12580
# check trigger-3 success: 1
12581
DROP TRIGGER trg_1;
12582
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12583
f_int2 = CAST(f_char1 AS SIGNED INT),
12584
f_charbig = 'just inserted'
12585
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12587
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12588
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12589
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12590
'just inserted' FROM t0_template
12591
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12592
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12594
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12595
f_charbig = 'updated by trigger'
12596
WHERE f_int1 = - old.f_int1;
12598
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12599
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12601
# check trigger-4 success: 1
12602
DROP TRIGGER trg_1;
12603
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12604
f_int2 = CAST(f_char1 AS SIGNED INT),
12605
f_charbig = 'just inserted'
12606
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12608
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12609
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12610
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12611
'just inserted' FROM t0_template
12612
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12613
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12615
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12616
f_charbig = 'updated by trigger'
12617
WHERE f_int1 = new.f_int1;
12619
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12620
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12622
# check trigger-5 success: 1
12623
DROP TRIGGER trg_1;
12624
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12625
f_int2 = CAST(f_char1 AS SIGNED INT),
12626
f_charbig = 'just inserted'
12627
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12629
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12630
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12631
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12632
'just inserted' FROM t0_template
12633
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12634
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12636
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12637
f_charbig = 'updated by trigger'
12638
WHERE f_int1 = - old.f_int1;
12640
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12641
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12643
# check trigger-6 success: 1
12644
DROP TRIGGER trg_1;
12645
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12646
f_int2 = CAST(f_char1 AS SIGNED INT),
12647
f_charbig = 'just inserted'
12648
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12650
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12651
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12652
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12653
'just inserted' FROM t0_template
12654
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12655
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12657
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12658
f_charbig = 'updated by trigger'
12659
WHERE f_int1 = - old.f_int1;
12662
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12664
# check trigger-7 success: 1
12665
DROP TRIGGER trg_1;
12666
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12667
f_int2 = CAST(f_char1 AS SIGNED INT),
12668
f_charbig = 'just inserted'
12669
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12671
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12672
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12673
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12674
'just inserted' FROM t0_template
12675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12676
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12678
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12679
f_charbig = 'updated by trigger'
12680
WHERE f_int1 = - old.f_int1;
12683
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12685
# check trigger-8 success: 1
12686
DROP TRIGGER trg_1;
12687
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12688
f_int2 = CAST(f_char1 AS SIGNED INT),
12689
f_charbig = 'just inserted'
12690
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12692
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12695
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12697
SET new.f_int1 = old.f_int1 + @max_row,
12698
new.f_int2 = old.f_int2 - @max_row,
12699
new.f_charbig = '####updated per update trigger####';
12702
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12703
f_charbig = '####updated per update statement itself####';
12705
# check trigger-9 success: 1
12706
DROP TRIGGER trg_2;
12707
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12708
f_int2 = CAST(f_char1 AS SIGNED INT),
12709
f_charbig = CONCAT('===',f_char1,'===');
12710
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12712
SET new.f_int1 = new.f_int1 + @max_row,
12713
new.f_int2 = new.f_int2 - @max_row,
12714
new.f_charbig = '####updated per update trigger####';
12717
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12718
f_charbig = '####updated per update statement itself####';
12720
# check trigger-10 success: 1
12721
DROP TRIGGER trg_2;
12722
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12723
f_int2 = CAST(f_char1 AS SIGNED INT),
12724
f_charbig = CONCAT('===',f_char1,'===');
12725
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12727
SET new.f_int1 = @my_max1 + @counter,
12728
new.f_int2 = @my_min2 - @counter,
12729
new.f_charbig = '####updated per insert trigger####';
12730
SET @counter = @counter + 1;
12733
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12734
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12735
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12736
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12737
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12739
DROP TRIGGER trg_3;
12741
# check trigger-11 success: 1
12743
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12744
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12745
AND f_charbig = '####updated per insert trigger####';
12746
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12748
SET new.f_int1 = @my_max1 + @counter,
12749
new.f_int2 = @my_min2 - @counter,
12750
new.f_charbig = '####updated per insert trigger####';
12751
SET @counter = @counter + 1;
12754
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12755
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12756
SELECT CAST(f_int1 AS CHAR),
12757
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12758
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12760
DROP TRIGGER trg_3;
12762
# check trigger-12 success: 1
12764
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12765
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12766
AND f_charbig = '####updated per insert trigger####';
12768
Table Op Msg_type Msg_text
12769
test.t1 analyze note The storage engine for the table doesn't support analyze
12770
CHECK TABLE t1 EXTENDED;
12771
Table Op Msg_type Msg_text
12772
test.t1 check note The storage engine for the table doesn't support check
12773
CHECKSUM TABLE t1 EXTENDED;
12775
test.t1 <some_value>
12777
Table Op Msg_type Msg_text
12778
test.t1 optimize note The storage engine for the table doesn't support optimize
12779
# check layout success: 1
12780
REPAIR TABLE t1 EXTENDED;
12781
Table Op Msg_type Msg_text
12782
test.t1 repair note The storage engine for the table doesn't support repair
12783
# check layout success: 1
12786
# check TRUNCATE success: 1
12787
# check layout success: 1
12788
# End usability test (inc/partition_check.inc)
12795
f_charbig VARCHAR(1000)
12796
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
12798
PARTITION BY RANGE(f_int1)
12799
(PARTITION parta VALUES LESS THAN (0),
12800
PARTITION partb VALUES LESS THAN (5),
12801
PARTITION partc VALUES LESS THAN (10),
12802
PARTITION partd VALUES LESS THAN (10 + 5),
12803
PARTITION parte VALUES LESS THAN (20),
12804
PARTITION partf VALUES LESS THAN (2147483646));
12805
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12806
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
12807
# Start usability test (inc/partition_check.inc)
12809
SHOW CREATE TABLE t1;
12811
t1 CREATE TABLE `t1` (
12812
`f_int1` int(11) NOT NULL DEFAULT '0',
12813
`f_int2` int(11) NOT NULL DEFAULT '0',
12814
`f_char1` char(20) DEFAULT NULL,
12815
`f_char2` char(20) DEFAULT NULL,
12816
`f_charbig` varchar(1000) DEFAULT NULL,
12817
PRIMARY KEY (`f_int1`,`f_int2`),
12818
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
12819
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
12822
$MYSQLTEST_VARDIR/master-data/test/t1.frm
12823
$MYSQLTEST_VARDIR/master-data/test/t1.par
12825
# check prerequisites-1 success: 1
12826
# check COUNT(*) success: 1
12827
# check MIN/MAX(f_int1) success: 1
12828
# check MIN/MAX(f_int2) success: 1
12829
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12830
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12831
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12832
WHERE f_int1 IN (2,3);
12833
ERROR 23000: Can't write; duplicate key in table 't1'
12834
# check prerequisites-3 success: 1
12835
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
12836
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12837
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12838
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12839
WHERE f_int1 IN (2,3);
12840
DELETE FROM t1 WHERE f_charbig = 'delete me';
12841
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12842
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
12843
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
12844
WHERE f_int1 IN (2,3);
12845
DELETE FROM t1 WHERE f_charbig = 'delete me';
12846
# check read via f_int1 success: 1
12847
# check read via f_int2 success: 1
12849
# check multiple-1 success: 1
12850
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12852
# check multiple-2 success: 1
12853
INSERT INTO t1 SELECT * FROM t0_template
12854
WHERE MOD(f_int1,3) = 0;
12856
# check multiple-3 success: 1
12857
UPDATE t1 SET f_int1 = f_int1 + @max_row
12858
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12859
AND @max_row_div2 + @max_row_div4;
12861
# check multiple-4 success: 1
12863
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12864
AND @max_row_div2 + @max_row_div4 + @max_row;
12866
# check multiple-5 success: 1
12867
SELECT COUNT(*) INTO @try_count FROM t0_template
12868
WHERE MOD(f_int1,3) = 0
12869
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12870
SELECT COUNT(*) INTO @clash_count
12871
FROM t1 INNER JOIN t0_template USING(f_int1)
12872
WHERE MOD(f_int1,3) = 0
12873
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12874
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12876
SET f_int1 = @cur_value , f_int2 = @cur_value,
12877
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12878
f_charbig = '#SINGLE#';
12880
# check single-1 success: 1
12881
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12883
SET f_int1 = @cur_value , f_int2 = @cur_value,
12884
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12885
f_charbig = '#SINGLE#';
12887
# check single-2 success: 1
12888
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12889
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12890
UPDATE t1 SET f_int1 = @cur_value2
12891
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12893
# check single-3 success: 1
12894
SET @cur_value1= -1;
12895
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12896
UPDATE t1 SET f_int1 = @cur_value1
12897
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12899
# check single-4 success: 1
12900
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12901
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12903
# check single-5 success: 1
12904
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12906
# check single-6 success: 1
12907
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12908
ERROR HY000: Table has no partition for value 2147483647
12909
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12910
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12911
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12912
f_charbig = '#NULL#';
12914
SET f_int1 = NULL , f_int2 = -@max_row,
12915
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12916
f_charbig = '#NULL#';
12917
ERROR 23000: Column 'f_int1' cannot be null
12918
# check null success: 1
12920
WHERE f_int1 = 0 AND f_int2 = 0
12921
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12922
AND f_charbig = '#NULL#';
12923
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12924
SELECT f_int1, f_int1, '', '', 'was inserted'
12925
FROM t0_template source_tab
12926
WHERE MOD(f_int1,3) = 0
12927
AND f_int1 BETWEEN @max_row_div2 AND @max_row
12929
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
12930
f_int2 = 2 * @max_row + source_tab.f_int1,
12931
f_charbig = 'was updated';
12933
# check unique-1-a success: 1
12935
# check unique-1-b success: 1
12936
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12937
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12938
f_int2 = CAST(f_char1 AS SIGNED INT),
12939
f_charbig = CONCAT('===',f_char1,'===')
12940
WHERE f_charbig = 'was updated';
12941
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12942
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
12943
FROM t0_template source_tab
12944
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
12946
# check replace success: 1
12948
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
12950
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
12951
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
12952
UPDATE t1 SET f_int2 = f_int1,
12953
f_char1 = CAST(f_int1 AS CHAR),
12954
f_char2 = CAST(f_int1 AS CHAR),
12955
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
12956
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
12958
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12959
SELECT f_int1, f_int1, '', '', 'was inserted'
12960
FROM t0_template source_tab
12961
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12963
# check transactions-1 success: 1
12966
# check transactions-2 success: 1
12969
# check transactions-3 success: 1
12970
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12974
# check transactions-4 success: 1
12975
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12976
SELECT f_int1, f_int1, '', '', 'was inserted'
12977
FROM t0_template source_tab
12978
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12980
# check transactions-5 success: 1
12983
# check transactions-6 success: 1
12984
# INFO: Storage engine used for t1 seems to be transactional.
12987
# check transactions-7 success: 1
12988
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12990
SET @@session.sql_mode = 'traditional';
12991
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12992
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12993
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12994
'', '', 'was inserted' FROM t0_template
12995
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12996
ERROR 22012: Division by 0
12999
# check transactions-8 success: 1
13000
# INFO: Storage engine used for t1 seems to be able to revert
13001
# changes made by the failing statement.
13002
SET @@session.sql_mode = '';
13004
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13006
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13008
# check special-1 success: 1
13009
UPDATE t1 SET f_charbig = '';
13011
# check special-2 success: 1
13012
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13013
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13014
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13015
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13016
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13017
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13018
'just inserted' FROM t0_template
13019
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13020
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13022
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13023
f_charbig = 'updated by trigger'
13024
WHERE f_int1 = new.f_int1;
13026
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13027
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13028
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13030
# check trigger-1 success: 1
13031
DROP TRIGGER trg_1;
13032
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13033
f_int2 = CAST(f_char1 AS SIGNED INT),
13034
f_charbig = 'just inserted'
13035
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13037
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13038
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13039
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13040
'just inserted' FROM t0_template
13041
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13042
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13044
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13045
f_charbig = 'updated by trigger'
13046
WHERE f_int1 = new.f_int1;
13048
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13049
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13050
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13052
# check trigger-2 success: 1
13053
DROP TRIGGER trg_1;
13054
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13055
f_int2 = CAST(f_char1 AS SIGNED INT),
13056
f_charbig = 'just inserted'
13057
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13059
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13060
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13061
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13062
'just inserted' FROM t0_template
13063
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13064
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13066
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13067
f_charbig = 'updated by trigger'
13068
WHERE f_int1 = new.f_int1;
13070
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13071
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13073
# check trigger-3 success: 1
13074
DROP TRIGGER trg_1;
13075
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13076
f_int2 = CAST(f_char1 AS SIGNED INT),
13077
f_charbig = 'just inserted'
13078
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13080
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13081
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13082
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13083
'just inserted' FROM t0_template
13084
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13085
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13087
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13088
f_charbig = 'updated by trigger'
13089
WHERE f_int1 = - old.f_int1;
13091
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13092
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13094
# check trigger-4 success: 1
13095
DROP TRIGGER trg_1;
13096
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13097
f_int2 = CAST(f_char1 AS SIGNED INT),
13098
f_charbig = 'just inserted'
13099
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13101
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13102
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13103
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13104
'just inserted' FROM t0_template
13105
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13106
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13108
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13109
f_charbig = 'updated by trigger'
13110
WHERE f_int1 = new.f_int1;
13112
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13113
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13115
# check trigger-5 success: 1
13116
DROP TRIGGER trg_1;
13117
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13118
f_int2 = CAST(f_char1 AS SIGNED INT),
13119
f_charbig = 'just inserted'
13120
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13122
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13123
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13124
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13125
'just inserted' FROM t0_template
13126
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13127
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13129
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13130
f_charbig = 'updated by trigger'
13131
WHERE f_int1 = - old.f_int1;
13133
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13134
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13136
# check trigger-6 success: 1
13137
DROP TRIGGER trg_1;
13138
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13139
f_int2 = CAST(f_char1 AS SIGNED INT),
13140
f_charbig = 'just inserted'
13141
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13143
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13144
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13145
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13146
'just inserted' FROM t0_template
13147
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13148
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13150
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13151
f_charbig = 'updated by trigger'
13152
WHERE f_int1 = - old.f_int1;
13155
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13157
# check trigger-7 success: 1
13158
DROP TRIGGER trg_1;
13159
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13160
f_int2 = CAST(f_char1 AS SIGNED INT),
13161
f_charbig = 'just inserted'
13162
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13164
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13165
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13166
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13167
'just inserted' FROM t0_template
13168
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13169
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13171
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13172
f_charbig = 'updated by trigger'
13173
WHERE f_int1 = - old.f_int1;
13176
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13178
# check trigger-8 success: 1
13179
DROP TRIGGER trg_1;
13180
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13181
f_int2 = CAST(f_char1 AS SIGNED INT),
13182
f_charbig = 'just inserted'
13183
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13185
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13187
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13188
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13190
SET new.f_int1 = old.f_int1 + @max_row,
13191
new.f_int2 = old.f_int2 - @max_row,
13192
new.f_charbig = '####updated per update trigger####';
13195
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13196
f_charbig = '####updated per update statement itself####';
13198
# check trigger-9 success: 1
13199
DROP TRIGGER trg_2;
13200
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13201
f_int2 = CAST(f_char1 AS SIGNED INT),
13202
f_charbig = CONCAT('===',f_char1,'===');
13203
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13205
SET new.f_int1 = new.f_int1 + @max_row,
13206
new.f_int2 = new.f_int2 - @max_row,
13207
new.f_charbig = '####updated per update trigger####';
13210
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13211
f_charbig = '####updated per update statement itself####';
13213
# check trigger-10 success: 1
13214
DROP TRIGGER trg_2;
13215
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13216
f_int2 = CAST(f_char1 AS SIGNED INT),
13217
f_charbig = CONCAT('===',f_char1,'===');
13218
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13220
SET new.f_int1 = @my_max1 + @counter,
13221
new.f_int2 = @my_min2 - @counter,
13222
new.f_charbig = '####updated per insert trigger####';
13223
SET @counter = @counter + 1;
13226
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13227
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13228
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13229
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13230
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13232
DROP TRIGGER trg_3;
13234
# check trigger-11 success: 1
13236
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13237
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13238
AND f_charbig = '####updated per insert trigger####';
13239
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13241
SET new.f_int1 = @my_max1 + @counter,
13242
new.f_int2 = @my_min2 - @counter,
13243
new.f_charbig = '####updated per insert trigger####';
13244
SET @counter = @counter + 1;
13247
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13248
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13249
SELECT CAST(f_int1 AS CHAR),
13250
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13251
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13253
DROP TRIGGER trg_3;
13255
# check trigger-12 success: 1
13257
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13258
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13259
AND f_charbig = '####updated per insert trigger####';
13261
Table Op Msg_type Msg_text
13262
test.t1 analyze note The storage engine for the table doesn't support analyze
13263
CHECK TABLE t1 EXTENDED;
13264
Table Op Msg_type Msg_text
13265
test.t1 check note The storage engine for the table doesn't support check
13266
CHECKSUM TABLE t1 EXTENDED;
13268
test.t1 <some_value>
13270
Table Op Msg_type Msg_text
13271
test.t1 optimize note The storage engine for the table doesn't support optimize
13272
# check layout success: 1
13273
REPAIR TABLE t1 EXTENDED;
13274
Table Op Msg_type Msg_text
13275
test.t1 repair note The storage engine for the table doesn't support repair
13276
# check layout success: 1
13279
# check TRUNCATE success: 1
13280
# check layout success: 1
13281
# End usability test (inc/partition_check.inc)
13288
f_charbig VARCHAR(1000)
13289
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
13291
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
13292
(PARTITION parta VALUES LESS THAN (0),
13293
PARTITION partb VALUES LESS THAN (5),
13294
PARTITION partc VALUES LESS THAN (10),
13295
PARTITION partd VALUES LESS THAN (2147483646));
13296
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13297
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
13298
# Start usability test (inc/partition_check.inc)
13300
SHOW CREATE TABLE t1;
13302
t1 CREATE TABLE `t1` (
13303
`f_int1` int(11) NOT NULL DEFAULT '0',
13304
`f_int2` int(11) NOT NULL DEFAULT '0',
13305
`f_char1` char(20) DEFAULT NULL,
13306
`f_char2` char(20) DEFAULT NULL,
13307
`f_charbig` varchar(1000) DEFAULT NULL,
13308
PRIMARY KEY (`f_int1`,`f_int2`),
13309
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
13310
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
13313
$MYSQLTEST_VARDIR/master-data/test/t1.frm
13314
$MYSQLTEST_VARDIR/master-data/test/t1.par
13316
# check prerequisites-1 success: 1
13317
# check COUNT(*) success: 1
13318
# check MIN/MAX(f_int1) success: 1
13319
# check MIN/MAX(f_int2) success: 1
13320
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13321
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13322
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13323
WHERE f_int1 IN (2,3);
13324
ERROR 23000: Can't write; duplicate key in table 't1'
13325
# check prerequisites-3 success: 1
13326
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
13327
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13328
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13329
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13330
WHERE f_int1 IN (2,3);
13331
DELETE FROM t1 WHERE f_charbig = 'delete me';
13332
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13333
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13334
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13335
WHERE f_int1 IN (2,3);
13336
DELETE FROM t1 WHERE f_charbig = 'delete me';
13337
# check read via f_int1 success: 1
13338
# check read via f_int2 success: 1
13340
# check multiple-1 success: 1
13341
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13343
# check multiple-2 success: 1
13344
INSERT INTO t1 SELECT * FROM t0_template
13345
WHERE MOD(f_int1,3) = 0;
13347
# check multiple-3 success: 1
13348
UPDATE t1 SET f_int1 = f_int1 + @max_row
13349
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13350
AND @max_row_div2 + @max_row_div4;
13352
# check multiple-4 success: 1
13354
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13355
AND @max_row_div2 + @max_row_div4 + @max_row;
13357
# check multiple-5 success: 1
13358
SELECT COUNT(*) INTO @try_count FROM t0_template
13359
WHERE MOD(f_int1,3) = 0
13360
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13361
SELECT COUNT(*) INTO @clash_count
13362
FROM t1 INNER JOIN t0_template USING(f_int1)
13363
WHERE MOD(f_int1,3) = 0
13364
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13365
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13367
SET f_int1 = @cur_value , f_int2 = @cur_value,
13368
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13369
f_charbig = '#SINGLE#';
13371
# check single-1 success: 1
13372
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13374
SET f_int1 = @cur_value , f_int2 = @cur_value,
13375
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13376
f_charbig = '#SINGLE#';
13378
# check single-2 success: 1
13379
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13380
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13381
UPDATE t1 SET f_int1 = @cur_value2
13382
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13384
# check single-3 success: 1
13385
SET @cur_value1= -1;
13386
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13387
UPDATE t1 SET f_int1 = @cur_value1
13388
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13390
# check single-4 success: 1
13391
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13392
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13394
# check single-5 success: 1
13395
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13397
# check single-6 success: 1
13398
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13400
# check single-7 success: 1
13401
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13402
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13403
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13404
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13405
f_charbig = '#NULL#';
13407
SET f_int1 = NULL , f_int2 = -@max_row,
13408
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13409
f_charbig = '#NULL#';
13410
ERROR 23000: Column 'f_int1' cannot be null
13411
# check null success: 1
13413
WHERE f_int1 = 0 AND f_int2 = 0
13414
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13415
AND f_charbig = '#NULL#';
13416
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13417
SELECT f_int1, f_int1, '', '', 'was inserted'
13418
FROM t0_template source_tab
13419
WHERE MOD(f_int1,3) = 0
13420
AND f_int1 BETWEEN @max_row_div2 AND @max_row
13422
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
13423
f_int2 = 2 * @max_row + source_tab.f_int1,
13424
f_charbig = 'was updated';
13426
# check unique-1-a success: 1
13428
# check unique-1-b success: 1
13429
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13430
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13431
f_int2 = CAST(f_char1 AS SIGNED INT),
13432
f_charbig = CONCAT('===',f_char1,'===')
13433
WHERE f_charbig = 'was updated';
13434
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13435
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
13436
FROM t0_template source_tab
13437
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13439
# check replace success: 1
13441
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
13443
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
13444
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
13445
UPDATE t1 SET f_int2 = f_int1,
13446
f_char1 = CAST(f_int1 AS CHAR),
13447
f_char2 = CAST(f_int1 AS CHAR),
13448
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
13449
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
13451
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13452
SELECT f_int1, f_int1, '', '', 'was inserted'
13453
FROM t0_template source_tab
13454
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13456
# check transactions-1 success: 1
13459
# check transactions-2 success: 1
13462
# check transactions-3 success: 1
13463
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13467
# check transactions-4 success: 1
13468
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13469
SELECT f_int1, f_int1, '', '', 'was inserted'
13470
FROM t0_template source_tab
13471
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13473
# check transactions-5 success: 1
13476
# check transactions-6 success: 1
13477
# INFO: Storage engine used for t1 seems to be transactional.
13480
# check transactions-7 success: 1
13481
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13483
SET @@session.sql_mode = 'traditional';
13484
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13485
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13486
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13487
'', '', 'was inserted' FROM t0_template
13488
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13489
ERROR 22012: Division by 0
13492
# check transactions-8 success: 1
13493
# INFO: Storage engine used for t1 seems to be able to revert
13494
# changes made by the failing statement.
13495
SET @@session.sql_mode = '';
13497
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13499
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13501
# check special-1 success: 1
13502
UPDATE t1 SET f_charbig = '';
13504
# check special-2 success: 1
13505
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13506
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13507
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13508
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13509
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13510
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13511
'just inserted' FROM t0_template
13512
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13513
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13515
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13516
f_charbig = 'updated by trigger'
13517
WHERE f_int1 = new.f_int1;
13519
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13520
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13521
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13523
# check trigger-1 success: 1
13524
DROP TRIGGER trg_1;
13525
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13526
f_int2 = CAST(f_char1 AS SIGNED INT),
13527
f_charbig = 'just inserted'
13528
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13530
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13531
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13532
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13533
'just inserted' FROM t0_template
13534
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13535
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13537
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13538
f_charbig = 'updated by trigger'
13539
WHERE f_int1 = new.f_int1;
13541
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13542
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13543
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13545
# check trigger-2 success: 1
13546
DROP TRIGGER trg_1;
13547
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13548
f_int2 = CAST(f_char1 AS SIGNED INT),
13549
f_charbig = 'just inserted'
13550
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13552
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13553
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13554
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13555
'just inserted' FROM t0_template
13556
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13557
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13559
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13560
f_charbig = 'updated by trigger'
13561
WHERE f_int1 = new.f_int1;
13563
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13564
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13566
# check trigger-3 success: 1
13567
DROP TRIGGER trg_1;
13568
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13569
f_int2 = CAST(f_char1 AS SIGNED INT),
13570
f_charbig = 'just inserted'
13571
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13573
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13574
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13575
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13576
'just inserted' FROM t0_template
13577
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13578
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13580
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13581
f_charbig = 'updated by trigger'
13582
WHERE f_int1 = - old.f_int1;
13584
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13585
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13587
# check trigger-4 success: 1
13588
DROP TRIGGER trg_1;
13589
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13590
f_int2 = CAST(f_char1 AS SIGNED INT),
13591
f_charbig = 'just inserted'
13592
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13594
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13595
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13596
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13597
'just inserted' FROM t0_template
13598
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13599
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13601
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13602
f_charbig = 'updated by trigger'
13603
WHERE f_int1 = new.f_int1;
13605
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13606
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13608
# check trigger-5 success: 1
13609
DROP TRIGGER trg_1;
13610
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13611
f_int2 = CAST(f_char1 AS SIGNED INT),
13612
f_charbig = 'just inserted'
13613
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13615
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13616
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13617
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13618
'just inserted' FROM t0_template
13619
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13620
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13622
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13623
f_charbig = 'updated by trigger'
13624
WHERE f_int1 = - old.f_int1;
13626
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13627
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13629
# check trigger-6 success: 1
13630
DROP TRIGGER trg_1;
13631
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13632
f_int2 = CAST(f_char1 AS SIGNED INT),
13633
f_charbig = 'just inserted'
13634
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13636
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13637
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13638
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13639
'just inserted' FROM t0_template
13640
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13641
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13643
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13644
f_charbig = 'updated by trigger'
13645
WHERE f_int1 = - old.f_int1;
13648
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13650
# check trigger-7 success: 1
13651
DROP TRIGGER trg_1;
13652
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13653
f_int2 = CAST(f_char1 AS SIGNED INT),
13654
f_charbig = 'just inserted'
13655
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13657
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13658
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13659
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13660
'just inserted' FROM t0_template
13661
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13662
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13664
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13665
f_charbig = 'updated by trigger'
13666
WHERE f_int1 = - old.f_int1;
13669
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13671
# check trigger-8 success: 1
13672
DROP TRIGGER trg_1;
13673
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13674
f_int2 = CAST(f_char1 AS SIGNED INT),
13675
f_charbig = 'just inserted'
13676
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13678
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13680
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13681
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13683
SET new.f_int1 = old.f_int1 + @max_row,
13684
new.f_int2 = old.f_int2 - @max_row,
13685
new.f_charbig = '####updated per update trigger####';
13688
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13689
f_charbig = '####updated per update statement itself####';
13691
# check trigger-9 success: 1
13692
DROP TRIGGER trg_2;
13693
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13694
f_int2 = CAST(f_char1 AS SIGNED INT),
13695
f_charbig = CONCAT('===',f_char1,'===');
13696
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13698
SET new.f_int1 = new.f_int1 + @max_row,
13699
new.f_int2 = new.f_int2 - @max_row,
13700
new.f_charbig = '####updated per update trigger####';
13703
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13704
f_charbig = '####updated per update statement itself####';
13706
# check trigger-10 success: 1
13707
DROP TRIGGER trg_2;
13708
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13709
f_int2 = CAST(f_char1 AS SIGNED INT),
13710
f_charbig = CONCAT('===',f_char1,'===');
13711
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13713
SET new.f_int1 = @my_max1 + @counter,
13714
new.f_int2 = @my_min2 - @counter,
13715
new.f_charbig = '####updated per insert trigger####';
13716
SET @counter = @counter + 1;
13719
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13720
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13721
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13722
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13723
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13725
DROP TRIGGER trg_3;
13727
# check trigger-11 success: 1
13729
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13730
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13731
AND f_charbig = '####updated per insert trigger####';
13732
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13734
SET new.f_int1 = @my_max1 + @counter,
13735
new.f_int2 = @my_min2 - @counter,
13736
new.f_charbig = '####updated per insert trigger####';
13737
SET @counter = @counter + 1;
13740
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13741
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13742
SELECT CAST(f_int1 AS CHAR),
13743
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13744
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13746
DROP TRIGGER trg_3;
13748
# check trigger-12 success: 1
13750
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13751
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13752
AND f_charbig = '####updated per insert trigger####';
13754
Table Op Msg_type Msg_text
13755
test.t1 analyze note The storage engine for the table doesn't support analyze
13756
CHECK TABLE t1 EXTENDED;
13757
Table Op Msg_type Msg_text
13758
test.t1 check note The storage engine for the table doesn't support check
13759
CHECKSUM TABLE t1 EXTENDED;
13761
test.t1 <some_value>
13763
Table Op Msg_type Msg_text
13764
test.t1 optimize note The storage engine for the table doesn't support optimize
13765
# check layout success: 1
13766
REPAIR TABLE t1 EXTENDED;
13767
Table Op Msg_type Msg_text
13768
test.t1 repair note The storage engine for the table doesn't support repair
13769
# check layout success: 1
13772
# check TRUNCATE success: 1
13773
# check layout success: 1
13774
# End usability test (inc/partition_check.inc)
13781
f_charbig VARCHAR(1000)
13782
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
13784
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
13785
(PARTITION part1 VALUES LESS THAN (0)
13786
(SUBPARTITION subpart11, SUBPARTITION subpart12),
13787
PARTITION part2 VALUES LESS THAN (5)
13788
(SUBPARTITION subpart21, SUBPARTITION subpart22),
13789
PARTITION part3 VALUES LESS THAN (10)
13790
(SUBPARTITION subpart31, SUBPARTITION subpart32),
13791
PARTITION part4 VALUES LESS THAN (2147483646)
13792
(SUBPARTITION subpart41, SUBPARTITION subpart42));
13793
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13794
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
13795
# Start usability test (inc/partition_check.inc)
13797
SHOW CREATE TABLE t1;
13799
t1 CREATE TABLE `t1` (
13800
`f_int1` int(11) NOT NULL DEFAULT '0',
13801
`f_int2` int(11) NOT NULL DEFAULT '0',
13802
`f_char1` char(20) DEFAULT NULL,
13803
`f_char2` char(20) DEFAULT NULL,
13804
`f_charbig` varchar(1000) DEFAULT NULL,
13805
PRIMARY KEY (`f_int1`,`f_int2`),
13806
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
13807
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
13810
$MYSQLTEST_VARDIR/master-data/test/t1.frm
13811
$MYSQLTEST_VARDIR/master-data/test/t1.par
13813
# check prerequisites-1 success: 1
13814
# check COUNT(*) success: 1
13815
# check MIN/MAX(f_int1) success: 1
13816
# check MIN/MAX(f_int2) success: 1
13817
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13818
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13819
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13820
WHERE f_int1 IN (2,3);
13821
ERROR 23000: Can't write; duplicate key in table 't1'
13822
# check prerequisites-3 success: 1
13823
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
13824
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13825
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13826
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13827
WHERE f_int1 IN (2,3);
13828
DELETE FROM t1 WHERE f_charbig = 'delete me';
13829
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13830
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
13831
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
13832
WHERE f_int1 IN (2,3);
13833
DELETE FROM t1 WHERE f_charbig = 'delete me';
13834
# check read via f_int1 success: 1
13835
# check read via f_int2 success: 1
13837
# check multiple-1 success: 1
13838
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13840
# check multiple-2 success: 1
13841
INSERT INTO t1 SELECT * FROM t0_template
13842
WHERE MOD(f_int1,3) = 0;
13844
# check multiple-3 success: 1
13845
UPDATE t1 SET f_int1 = f_int1 + @max_row
13846
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13847
AND @max_row_div2 + @max_row_div4;
13849
# check multiple-4 success: 1
13851
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13852
AND @max_row_div2 + @max_row_div4 + @max_row;
13854
# check multiple-5 success: 1
13855
SELECT COUNT(*) INTO @try_count FROM t0_template
13856
WHERE MOD(f_int1,3) = 0
13857
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13858
SELECT COUNT(*) INTO @clash_count
13859
FROM t1 INNER JOIN t0_template USING(f_int1)
13860
WHERE MOD(f_int1,3) = 0
13861
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13862
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13864
SET f_int1 = @cur_value , f_int2 = @cur_value,
13865
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13866
f_charbig = '#SINGLE#';
13868
# check single-1 success: 1
13869
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13871
SET f_int1 = @cur_value , f_int2 = @cur_value,
13872
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13873
f_charbig = '#SINGLE#';
13875
# check single-2 success: 1
13876
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13877
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13878
UPDATE t1 SET f_int1 = @cur_value2
13879
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13881
# check single-3 success: 1
13882
SET @cur_value1= -1;
13883
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13884
UPDATE t1 SET f_int1 = @cur_value1
13885
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13887
# check single-4 success: 1
13888
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13889
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13891
# check single-5 success: 1
13892
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13894
# check single-6 success: 1
13895
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13896
ERROR HY000: Table has no partition for value 2147483647
13897
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13898
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13899
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13900
f_charbig = '#NULL#';
13902
SET f_int1 = NULL , f_int2 = -@max_row,
13903
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13904
f_charbig = '#NULL#';
13905
ERROR 23000: Column 'f_int1' cannot be null
13906
# check null success: 1
13908
WHERE f_int1 = 0 AND f_int2 = 0
13909
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13910
AND f_charbig = '#NULL#';
13911
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13912
SELECT f_int1, f_int1, '', '', 'was inserted'
13913
FROM t0_template source_tab
13914
WHERE MOD(f_int1,3) = 0
13915
AND f_int1 BETWEEN @max_row_div2 AND @max_row
13917
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
13918
f_int2 = 2 * @max_row + source_tab.f_int1,
13919
f_charbig = 'was updated';
13921
# check unique-1-a success: 1
13923
# check unique-1-b success: 1
13924
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13925
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13926
f_int2 = CAST(f_char1 AS SIGNED INT),
13927
f_charbig = CONCAT('===',f_char1,'===')
13928
WHERE f_charbig = 'was updated';
13929
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13930
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
13931
FROM t0_template source_tab
13932
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
13934
# check replace success: 1
13936
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
13938
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
13939
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
13940
UPDATE t1 SET f_int2 = f_int1,
13941
f_char1 = CAST(f_int1 AS CHAR),
13942
f_char2 = CAST(f_int1 AS CHAR),
13943
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
13944
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
13946
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13947
SELECT f_int1, f_int1, '', '', 'was inserted'
13948
FROM t0_template source_tab
13949
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13951
# check transactions-1 success: 1
13954
# check transactions-2 success: 1
13957
# check transactions-3 success: 1
13958
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13962
# check transactions-4 success: 1
13963
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13964
SELECT f_int1, f_int1, '', '', 'was inserted'
13965
FROM t0_template source_tab
13966
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13968
# check transactions-5 success: 1
13971
# check transactions-6 success: 1
13972
# INFO: Storage engine used for t1 seems to be transactional.
13975
# check transactions-7 success: 1
13976
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13978
SET @@session.sql_mode = 'traditional';
13979
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13980
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13981
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13982
'', '', 'was inserted' FROM t0_template
13983
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13984
ERROR 22012: Division by 0
13987
# check transactions-8 success: 1
13988
# INFO: Storage engine used for t1 seems to be able to revert
13989
# changes made by the failing statement.
13990
SET @@session.sql_mode = '';
13992
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13994
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13996
# check special-1 success: 1
13997
UPDATE t1 SET f_charbig = '';
13999
# check special-2 success: 1
14000
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14001
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14002
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14003
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14004
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14005
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14006
'just inserted' FROM t0_template
14007
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14008
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14010
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14011
f_charbig = 'updated by trigger'
14012
WHERE f_int1 = new.f_int1;
14014
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14015
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14016
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14018
# check trigger-1 success: 1
14019
DROP TRIGGER trg_1;
14020
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14021
f_int2 = CAST(f_char1 AS SIGNED INT),
14022
f_charbig = 'just inserted'
14023
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14025
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14026
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14027
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14028
'just inserted' FROM t0_template
14029
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14030
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14032
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14033
f_charbig = 'updated by trigger'
14034
WHERE f_int1 = new.f_int1;
14036
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14037
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14038
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14040
# check trigger-2 success: 1
14041
DROP TRIGGER trg_1;
14042
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14043
f_int2 = CAST(f_char1 AS SIGNED INT),
14044
f_charbig = 'just inserted'
14045
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14047
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14048
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14049
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14050
'just inserted' FROM t0_template
14051
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14052
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14054
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14055
f_charbig = 'updated by trigger'
14056
WHERE f_int1 = new.f_int1;
14058
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14059
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14061
# check trigger-3 success: 1
14062
DROP TRIGGER trg_1;
14063
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14064
f_int2 = CAST(f_char1 AS SIGNED INT),
14065
f_charbig = 'just inserted'
14066
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14068
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14069
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14070
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14071
'just inserted' FROM t0_template
14072
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14073
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14075
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14076
f_charbig = 'updated by trigger'
14077
WHERE f_int1 = - old.f_int1;
14079
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14080
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14082
# check trigger-4 success: 1
14083
DROP TRIGGER trg_1;
14084
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14085
f_int2 = CAST(f_char1 AS SIGNED INT),
14086
f_charbig = 'just inserted'
14087
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14089
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14090
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14091
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14092
'just inserted' FROM t0_template
14093
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14094
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14096
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14097
f_charbig = 'updated by trigger'
14098
WHERE f_int1 = new.f_int1;
14100
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14101
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14103
# check trigger-5 success: 1
14104
DROP TRIGGER trg_1;
14105
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14106
f_int2 = CAST(f_char1 AS SIGNED INT),
14107
f_charbig = 'just inserted'
14108
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14110
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14111
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14112
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14113
'just inserted' FROM t0_template
14114
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14115
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14117
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14118
f_charbig = 'updated by trigger'
14119
WHERE f_int1 = - old.f_int1;
14121
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14122
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14124
# check trigger-6 success: 1
14125
DROP TRIGGER trg_1;
14126
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14127
f_int2 = CAST(f_char1 AS SIGNED INT),
14128
f_charbig = 'just inserted'
14129
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14131
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14132
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14133
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14134
'just inserted' FROM t0_template
14135
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14136
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14138
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14139
f_charbig = 'updated by trigger'
14140
WHERE f_int1 = - old.f_int1;
14143
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14145
# check trigger-7 success: 1
14146
DROP TRIGGER trg_1;
14147
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14148
f_int2 = CAST(f_char1 AS SIGNED INT),
14149
f_charbig = 'just inserted'
14150
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14152
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14153
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14154
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14155
'just inserted' FROM t0_template
14156
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14157
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14159
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14160
f_charbig = 'updated by trigger'
14161
WHERE f_int1 = - old.f_int1;
14164
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14166
# check trigger-8 success: 1
14167
DROP TRIGGER trg_1;
14168
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14169
f_int2 = CAST(f_char1 AS SIGNED INT),
14170
f_charbig = 'just inserted'
14171
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14173
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14175
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14176
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14178
SET new.f_int1 = old.f_int1 + @max_row,
14179
new.f_int2 = old.f_int2 - @max_row,
14180
new.f_charbig = '####updated per update trigger####';
14183
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14184
f_charbig = '####updated per update statement itself####';
14186
# check trigger-9 success: 1
14187
DROP TRIGGER trg_2;
14188
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14189
f_int2 = CAST(f_char1 AS SIGNED INT),
14190
f_charbig = CONCAT('===',f_char1,'===');
14191
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14193
SET new.f_int1 = new.f_int1 + @max_row,
14194
new.f_int2 = new.f_int2 - @max_row,
14195
new.f_charbig = '####updated per update trigger####';
14198
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14199
f_charbig = '####updated per update statement itself####';
14201
# check trigger-10 success: 1
14202
DROP TRIGGER trg_2;
14203
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14204
f_int2 = CAST(f_char1 AS SIGNED INT),
14205
f_charbig = CONCAT('===',f_char1,'===');
14206
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14208
SET new.f_int1 = @my_max1 + @counter,
14209
new.f_int2 = @my_min2 - @counter,
14210
new.f_charbig = '####updated per insert trigger####';
14211
SET @counter = @counter + 1;
14214
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14215
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14216
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14217
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14220
DROP TRIGGER trg_3;
14222
# check trigger-11 success: 1
14224
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14225
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14226
AND f_charbig = '####updated per insert trigger####';
14227
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14229
SET new.f_int1 = @my_max1 + @counter,
14230
new.f_int2 = @my_min2 - @counter,
14231
new.f_charbig = '####updated per insert trigger####';
14232
SET @counter = @counter + 1;
14235
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14236
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14237
SELECT CAST(f_int1 AS CHAR),
14238
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14239
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14241
DROP TRIGGER trg_3;
14243
# check trigger-12 success: 1
14245
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14246
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14247
AND f_charbig = '####updated per insert trigger####';
14249
Table Op Msg_type Msg_text
14250
test.t1 analyze note The storage engine for the table doesn't support analyze
14251
CHECK TABLE t1 EXTENDED;
14252
Table Op Msg_type Msg_text
14253
test.t1 check note The storage engine for the table doesn't support check
14254
CHECKSUM TABLE t1 EXTENDED;
14256
test.t1 <some_value>
14258
Table Op Msg_type Msg_text
14259
test.t1 optimize note The storage engine for the table doesn't support optimize
14260
# check layout success: 1
14261
REPAIR TABLE t1 EXTENDED;
14262
Table Op Msg_type Msg_text
14263
test.t1 repair note The storage engine for the table doesn't support repair
14264
# check layout success: 1
14267
# check TRUNCATE success: 1
14268
# check layout success: 1
14269
# End usability test (inc/partition_check.inc)
14276
f_charbig VARCHAR(1000)
14277
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
14279
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
14280
(PARTITION part1 VALUES IN (0)
14281
(SUBPARTITION sp11,
14282
SUBPARTITION sp12),
14283
PARTITION part2 VALUES IN (1)
14284
(SUBPARTITION sp21,
14285
SUBPARTITION sp22),
14286
PARTITION part3 VALUES IN (2)
14287
(SUBPARTITION sp31,
14288
SUBPARTITION sp32),
14289
PARTITION part4 VALUES IN (NULL)
14290
(SUBPARTITION sp41,
14291
SUBPARTITION sp42));
14292
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14293
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
14294
# Start usability test (inc/partition_check.inc)
14296
SHOW CREATE TABLE t1;
14298
t1 CREATE TABLE `t1` (
14299
`f_int1` int(11) NOT NULL DEFAULT '0',
14300
`f_int2` int(11) NOT NULL DEFAULT '0',
14301
`f_char1` char(20) DEFAULT NULL,
14302
`f_char2` char(20) DEFAULT NULL,
14303
`f_charbig` varchar(1000) DEFAULT NULL,
14304
PRIMARY KEY (`f_int1`,`f_int2`),
14305
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
14306
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
14309
$MYSQLTEST_VARDIR/master-data/test/t1.frm
14310
$MYSQLTEST_VARDIR/master-data/test/t1.par
14312
# check prerequisites-1 success: 1
14313
# check COUNT(*) success: 1
14314
# check MIN/MAX(f_int1) success: 1
14315
# check MIN/MAX(f_int2) success: 1
14316
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14317
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14318
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14319
WHERE f_int1 IN (2,3);
14320
ERROR 23000: Can't write; duplicate key in table 't1'
14321
# check prerequisites-3 success: 1
14322
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
14323
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14324
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14325
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14326
WHERE f_int1 IN (2,3);
14327
DELETE FROM t1 WHERE f_charbig = 'delete me';
14328
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14329
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14330
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14331
WHERE f_int1 IN (2,3);
14332
DELETE FROM t1 WHERE f_charbig = 'delete me';
14333
# check read via f_int1 success: 1
14334
# check read via f_int2 success: 1
14336
# check multiple-1 success: 1
14337
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14339
# check multiple-2 success: 1
14340
INSERT INTO t1 SELECT * FROM t0_template
14341
WHERE MOD(f_int1,3) = 0;
14343
# check multiple-3 success: 1
14344
UPDATE t1 SET f_int1 = f_int1 + @max_row
14345
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14346
AND @max_row_div2 + @max_row_div4;
14348
# check multiple-4 success: 1
14350
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14351
AND @max_row_div2 + @max_row_div4 + @max_row;
14353
# check multiple-5 success: 1
14354
SELECT COUNT(*) INTO @try_count FROM t0_template
14355
WHERE MOD(f_int1,3) = 0
14356
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14357
SELECT COUNT(*) INTO @clash_count
14358
FROM t1 INNER JOIN t0_template USING(f_int1)
14359
WHERE MOD(f_int1,3) = 0
14360
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14361
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14363
SET f_int1 = @cur_value , f_int2 = @cur_value,
14364
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14365
f_charbig = '#SINGLE#';
14367
# check single-1 success: 1
14368
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14370
SET f_int1 = @cur_value , f_int2 = @cur_value,
14371
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14372
f_charbig = '#SINGLE#';
14374
# check single-2 success: 1
14375
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14376
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14377
UPDATE t1 SET f_int1 = @cur_value2
14378
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14380
# check single-3 success: 1
14381
SET @cur_value1= -1;
14382
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14383
UPDATE t1 SET f_int1 = @cur_value1
14384
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14386
# check single-4 success: 1
14387
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14388
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14390
# check single-5 success: 1
14391
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14393
# check single-6 success: 1
14394
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14396
# check single-7 success: 1
14397
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14398
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14399
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14400
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14401
f_charbig = '#NULL#';
14403
SET f_int1 = NULL , f_int2 = -@max_row,
14404
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14405
f_charbig = '#NULL#';
14406
ERROR 23000: Column 'f_int1' cannot be null
14407
# check null success: 1
14409
WHERE f_int1 = 0 AND f_int2 = 0
14410
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14411
AND f_charbig = '#NULL#';
14412
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14413
SELECT f_int1, f_int1, '', '', 'was inserted'
14414
FROM t0_template source_tab
14415
WHERE MOD(f_int1,3) = 0
14416
AND f_int1 BETWEEN @max_row_div2 AND @max_row
14418
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
14419
f_int2 = 2 * @max_row + source_tab.f_int1,
14420
f_charbig = 'was updated';
14422
# check unique-1-a success: 1
14424
# check unique-1-b success: 1
14425
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14426
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14427
f_int2 = CAST(f_char1 AS SIGNED INT),
14428
f_charbig = CONCAT('===',f_char1,'===')
14429
WHERE f_charbig = 'was updated';
14430
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14431
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
14432
FROM t0_template source_tab
14433
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14435
# check replace success: 1
14437
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
14439
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
14440
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
14441
UPDATE t1 SET f_int2 = f_int1,
14442
f_char1 = CAST(f_int1 AS CHAR),
14443
f_char2 = CAST(f_int1 AS CHAR),
14444
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
14445
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
14447
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14448
SELECT f_int1, f_int1, '', '', 'was inserted'
14449
FROM t0_template source_tab
14450
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14452
# check transactions-1 success: 1
14455
# check transactions-2 success: 1
14458
# check transactions-3 success: 1
14459
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14463
# check transactions-4 success: 1
14464
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14465
SELECT f_int1, f_int1, '', '', 'was inserted'
14466
FROM t0_template source_tab
14467
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14469
# check transactions-5 success: 1
14472
# check transactions-6 success: 1
14473
# INFO: Storage engine used for t1 seems to be transactional.
14476
# check transactions-7 success: 1
14477
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14479
SET @@session.sql_mode = 'traditional';
14480
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14481
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14482
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14483
'', '', 'was inserted' FROM t0_template
14484
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14485
ERROR 22012: Division by 0
14488
# check transactions-8 success: 1
14489
# INFO: Storage engine used for t1 seems to be able to revert
14490
# changes made by the failing statement.
14491
SET @@session.sql_mode = '';
14493
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14495
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14497
# check special-1 success: 1
14498
UPDATE t1 SET f_charbig = '';
14500
# check special-2 success: 1
14501
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14502
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14503
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14504
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14505
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14506
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14507
'just inserted' FROM t0_template
14508
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14509
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14511
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14512
f_charbig = 'updated by trigger'
14513
WHERE f_int1 = new.f_int1;
14515
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14516
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14517
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14519
# check trigger-1 success: 1
14520
DROP TRIGGER trg_1;
14521
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14522
f_int2 = CAST(f_char1 AS SIGNED INT),
14523
f_charbig = 'just inserted'
14524
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14526
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14527
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14528
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14529
'just inserted' FROM t0_template
14530
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14531
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14533
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14534
f_charbig = 'updated by trigger'
14535
WHERE f_int1 = new.f_int1;
14537
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14538
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14539
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14541
# check trigger-2 success: 1
14542
DROP TRIGGER trg_1;
14543
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14544
f_int2 = CAST(f_char1 AS SIGNED INT),
14545
f_charbig = 'just inserted'
14546
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14548
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14549
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14550
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14551
'just inserted' FROM t0_template
14552
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14553
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14555
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14556
f_charbig = 'updated by trigger'
14557
WHERE f_int1 = new.f_int1;
14559
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14560
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14562
# check trigger-3 success: 1
14563
DROP TRIGGER trg_1;
14564
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14565
f_int2 = CAST(f_char1 AS SIGNED INT),
14566
f_charbig = 'just inserted'
14567
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14569
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14570
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14571
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14572
'just inserted' FROM t0_template
14573
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14574
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14576
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14577
f_charbig = 'updated by trigger'
14578
WHERE f_int1 = - old.f_int1;
14580
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14581
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14583
# check trigger-4 success: 1
14584
DROP TRIGGER trg_1;
14585
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14586
f_int2 = CAST(f_char1 AS SIGNED INT),
14587
f_charbig = 'just inserted'
14588
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14590
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14591
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14592
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14593
'just inserted' FROM t0_template
14594
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14595
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14597
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14598
f_charbig = 'updated by trigger'
14599
WHERE f_int1 = new.f_int1;
14601
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14602
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14604
# check trigger-5 success: 1
14605
DROP TRIGGER trg_1;
14606
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14607
f_int2 = CAST(f_char1 AS SIGNED INT),
14608
f_charbig = 'just inserted'
14609
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14611
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14612
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14613
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14614
'just inserted' FROM t0_template
14615
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14616
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14618
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14619
f_charbig = 'updated by trigger'
14620
WHERE f_int1 = - old.f_int1;
14622
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14623
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14625
# check trigger-6 success: 1
14626
DROP TRIGGER trg_1;
14627
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14628
f_int2 = CAST(f_char1 AS SIGNED INT),
14629
f_charbig = 'just inserted'
14630
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14632
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14633
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14634
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14635
'just inserted' FROM t0_template
14636
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14637
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14639
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14640
f_charbig = 'updated by trigger'
14641
WHERE f_int1 = - old.f_int1;
14644
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14646
# check trigger-7 success: 1
14647
DROP TRIGGER trg_1;
14648
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14649
f_int2 = CAST(f_char1 AS SIGNED INT),
14650
f_charbig = 'just inserted'
14651
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14653
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14654
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14655
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14656
'just inserted' FROM t0_template
14657
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14658
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14660
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14661
f_charbig = 'updated by trigger'
14662
WHERE f_int1 = - old.f_int1;
14665
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14667
# check trigger-8 success: 1
14668
DROP TRIGGER trg_1;
14669
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14670
f_int2 = CAST(f_char1 AS SIGNED INT),
14671
f_charbig = 'just inserted'
14672
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14674
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14676
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14677
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14679
SET new.f_int1 = old.f_int1 + @max_row,
14680
new.f_int2 = old.f_int2 - @max_row,
14681
new.f_charbig = '####updated per update trigger####';
14684
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14685
f_charbig = '####updated per update statement itself####';
14687
# check trigger-9 success: 1
14688
DROP TRIGGER trg_2;
14689
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14690
f_int2 = CAST(f_char1 AS SIGNED INT),
14691
f_charbig = CONCAT('===',f_char1,'===');
14692
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14694
SET new.f_int1 = new.f_int1 + @max_row,
14695
new.f_int2 = new.f_int2 - @max_row,
14696
new.f_charbig = '####updated per update trigger####';
14699
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14700
f_charbig = '####updated per update statement itself####';
14702
# check trigger-10 success: 1
14703
DROP TRIGGER trg_2;
14704
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14705
f_int2 = CAST(f_char1 AS SIGNED INT),
14706
f_charbig = CONCAT('===',f_char1,'===');
14707
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14709
SET new.f_int1 = @my_max1 + @counter,
14710
new.f_int2 = @my_min2 - @counter,
14711
new.f_charbig = '####updated per insert trigger####';
14712
SET @counter = @counter + 1;
14715
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14716
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14717
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14718
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14719
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14721
DROP TRIGGER trg_3;
14723
# check trigger-11 success: 1
14725
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14726
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14727
AND f_charbig = '####updated per insert trigger####';
14728
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14730
SET new.f_int1 = @my_max1 + @counter,
14731
new.f_int2 = @my_min2 - @counter,
14732
new.f_charbig = '####updated per insert trigger####';
14733
SET @counter = @counter + 1;
14736
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14737
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14738
SELECT CAST(f_int1 AS CHAR),
14739
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14740
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14742
DROP TRIGGER trg_3;
14744
# check trigger-12 success: 1
14746
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14747
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14748
AND f_charbig = '####updated per insert trigger####';
14750
Table Op Msg_type Msg_text
14751
test.t1 analyze note The storage engine for the table doesn't support analyze
14752
CHECK TABLE t1 EXTENDED;
14753
Table Op Msg_type Msg_text
14754
test.t1 check note The storage engine for the table doesn't support check
14755
CHECKSUM TABLE t1 EXTENDED;
14757
test.t1 <some_value>
14759
Table Op Msg_type Msg_text
14760
test.t1 optimize note The storage engine for the table doesn't support optimize
14761
# check layout success: 1
14762
REPAIR TABLE t1 EXTENDED;
14763
Table Op Msg_type Msg_text
14764
test.t1 repair note The storage engine for the table doesn't support repair
14765
# check layout success: 1
14768
# check TRUNCATE success: 1
14769
# check layout success: 1
14770
# End usability test (inc/partition_check.inc)
14777
f_charbig VARCHAR(1000)
14778
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
14780
PARTITION BY LIST(ABS(MOD(f_int1,2)))
14781
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
14782
(PARTITION part1 VALUES IN (0),
14783
PARTITION part2 VALUES IN (1),
14784
PARTITION part3 VALUES IN (NULL));
14785
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14786
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
14787
# Start usability test (inc/partition_check.inc)
14789
SHOW CREATE TABLE t1;
14791
t1 CREATE TABLE `t1` (
14792
`f_int1` int(11) NOT NULL DEFAULT '0',
14793
`f_int2` int(11) NOT NULL DEFAULT '0',
14794
`f_char1` char(20) DEFAULT NULL,
14795
`f_char2` char(20) DEFAULT NULL,
14796
`f_charbig` varchar(1000) DEFAULT NULL,
14797
PRIMARY KEY (`f_int1`,`f_int2`),
14798
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
14799
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
14802
$MYSQLTEST_VARDIR/master-data/test/t1.frm
14803
$MYSQLTEST_VARDIR/master-data/test/t1.par
14805
# check prerequisites-1 success: 1
14806
# check COUNT(*) success: 1
14807
# check MIN/MAX(f_int1) success: 1
14808
# check MIN/MAX(f_int2) success: 1
14809
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14810
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14811
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14812
WHERE f_int1 IN (2,3);
14813
ERROR 23000: Can't write; duplicate key in table 't1'
14814
# check prerequisites-3 success: 1
14815
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
14816
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14817
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14818
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14819
WHERE f_int1 IN (2,3);
14820
DELETE FROM t1 WHERE f_charbig = 'delete me';
14821
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14822
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
14823
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
14824
WHERE f_int1 IN (2,3);
14825
DELETE FROM t1 WHERE f_charbig = 'delete me';
14826
# check read via f_int1 success: 1
14827
# check read via f_int2 success: 1
14829
# check multiple-1 success: 1
14830
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14832
# check multiple-2 success: 1
14833
INSERT INTO t1 SELECT * FROM t0_template
14834
WHERE MOD(f_int1,3) = 0;
14836
# check multiple-3 success: 1
14837
UPDATE t1 SET f_int1 = f_int1 + @max_row
14838
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14839
AND @max_row_div2 + @max_row_div4;
14841
# check multiple-4 success: 1
14843
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14844
AND @max_row_div2 + @max_row_div4 + @max_row;
14846
# check multiple-5 success: 1
14847
SELECT COUNT(*) INTO @try_count FROM t0_template
14848
WHERE MOD(f_int1,3) = 0
14849
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14850
SELECT COUNT(*) INTO @clash_count
14851
FROM t1 INNER JOIN t0_template USING(f_int1)
14852
WHERE MOD(f_int1,3) = 0
14853
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14854
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14856
SET f_int1 = @cur_value , f_int2 = @cur_value,
14857
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14858
f_charbig = '#SINGLE#';
14860
# check single-1 success: 1
14861
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14863
SET f_int1 = @cur_value , f_int2 = @cur_value,
14864
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14865
f_charbig = '#SINGLE#';
14867
# check single-2 success: 1
14868
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14869
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14870
UPDATE t1 SET f_int1 = @cur_value2
14871
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14873
# check single-3 success: 1
14874
SET @cur_value1= -1;
14875
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14876
UPDATE t1 SET f_int1 = @cur_value1
14877
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14879
# check single-4 success: 1
14880
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14881
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14883
# check single-5 success: 1
14884
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14886
# check single-6 success: 1
14887
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14889
# check single-7 success: 1
14890
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14891
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14892
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14893
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14894
f_charbig = '#NULL#';
14896
SET f_int1 = NULL , f_int2 = -@max_row,
14897
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14898
f_charbig = '#NULL#';
14899
ERROR 23000: Column 'f_int1' cannot be null
14900
# check null success: 1
14902
WHERE f_int1 = 0 AND f_int2 = 0
14903
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14904
AND f_charbig = '#NULL#';
14905
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14906
SELECT f_int1, f_int1, '', '', 'was inserted'
14907
FROM t0_template source_tab
14908
WHERE MOD(f_int1,3) = 0
14909
AND f_int1 BETWEEN @max_row_div2 AND @max_row
14911
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
14912
f_int2 = 2 * @max_row + source_tab.f_int1,
14913
f_charbig = 'was updated';
14915
# check unique-1-a success: 1
14917
# check unique-1-b success: 1
14918
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14919
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14920
f_int2 = CAST(f_char1 AS SIGNED INT),
14921
f_charbig = CONCAT('===',f_char1,'===')
14922
WHERE f_charbig = 'was updated';
14923
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14924
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
14925
FROM t0_template source_tab
14926
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
14928
# check replace success: 1
14930
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
14932
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
14933
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
14934
UPDATE t1 SET f_int2 = f_int1,
14935
f_char1 = CAST(f_int1 AS CHAR),
14936
f_char2 = CAST(f_int1 AS CHAR),
14937
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
14938
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
14940
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14941
SELECT f_int1, f_int1, '', '', 'was inserted'
14942
FROM t0_template source_tab
14943
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14945
# check transactions-1 success: 1
14948
# check transactions-2 success: 1
14951
# check transactions-3 success: 1
14952
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14956
# check transactions-4 success: 1
14957
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14958
SELECT f_int1, f_int1, '', '', 'was inserted'
14959
FROM t0_template source_tab
14960
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14962
# check transactions-5 success: 1
14965
# check transactions-6 success: 1
14966
# INFO: Storage engine used for t1 seems to be transactional.
14969
# check transactions-7 success: 1
14970
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14972
SET @@session.sql_mode = 'traditional';
14973
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14974
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14975
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14976
'', '', 'was inserted' FROM t0_template
14977
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14978
ERROR 22012: Division by 0
14981
# check transactions-8 success: 1
14982
# INFO: Storage engine used for t1 seems to be able to revert
14983
# changes made by the failing statement.
14984
SET @@session.sql_mode = '';
14986
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14988
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14990
# check special-1 success: 1
14991
UPDATE t1 SET f_charbig = '';
14993
# check special-2 success: 1
14994
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14995
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14996
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14997
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14998
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14999
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15000
'just inserted' FROM t0_template
15001
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15002
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15004
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15005
f_charbig = 'updated by trigger'
15006
WHERE f_int1 = new.f_int1;
15008
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15009
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15010
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15012
# check trigger-1 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 INSERT 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 = new.f_int1;
15030
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15031
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15032
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15034
# check trigger-2 success: 1
15035
DROP TRIGGER trg_1;
15036
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15037
f_int2 = CAST(f_char1 AS SIGNED INT),
15038
f_charbig = 'just inserted'
15039
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15041
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15042
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15043
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15044
'just inserted' FROM t0_template
15045
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15046
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15048
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15049
f_charbig = 'updated by trigger'
15050
WHERE f_int1 = new.f_int1;
15052
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15053
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15055
# check trigger-3 success: 1
15056
DROP TRIGGER trg_1;
15057
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15058
f_int2 = CAST(f_char1 AS SIGNED INT),
15059
f_charbig = 'just inserted'
15060
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15062
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15063
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15064
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15065
'just inserted' FROM t0_template
15066
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15067
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15069
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15070
f_charbig = 'updated by trigger'
15071
WHERE f_int1 = - old.f_int1;
15073
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15074
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15076
# check trigger-4 success: 1
15077
DROP TRIGGER trg_1;
15078
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15079
f_int2 = CAST(f_char1 AS SIGNED INT),
15080
f_charbig = 'just inserted'
15081
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15083
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15084
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15085
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15086
'just inserted' FROM t0_template
15087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15088
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15090
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15091
f_charbig = 'updated by trigger'
15092
WHERE f_int1 = new.f_int1;
15094
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15095
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15097
# check trigger-5 success: 1
15098
DROP TRIGGER trg_1;
15099
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15100
f_int2 = CAST(f_char1 AS SIGNED INT),
15101
f_charbig = 'just inserted'
15102
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15104
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15105
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15106
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15107
'just inserted' FROM t0_template
15108
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15109
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15111
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15112
f_charbig = 'updated by trigger'
15113
WHERE f_int1 = - old.f_int1;
15115
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15116
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15118
# check trigger-6 success: 1
15119
DROP TRIGGER trg_1;
15120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15121
f_int2 = CAST(f_char1 AS SIGNED INT),
15122
f_charbig = 'just inserted'
15123
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15125
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15127
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15128
'just inserted' FROM t0_template
15129
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15130
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15132
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15133
f_charbig = 'updated by trigger'
15134
WHERE f_int1 = - old.f_int1;
15137
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15139
# check trigger-7 success: 1
15140
DROP TRIGGER trg_1;
15141
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15142
f_int2 = CAST(f_char1 AS SIGNED INT),
15143
f_charbig = 'just inserted'
15144
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15146
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15147
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15148
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15149
'just inserted' FROM t0_template
15150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15151
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15153
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15154
f_charbig = 'updated by trigger'
15155
WHERE f_int1 = - old.f_int1;
15158
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15160
# check trigger-8 success: 1
15161
DROP TRIGGER trg_1;
15162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15163
f_int2 = CAST(f_char1 AS SIGNED INT),
15164
f_charbig = 'just inserted'
15165
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15167
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15169
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15170
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15172
SET new.f_int1 = old.f_int1 + @max_row,
15173
new.f_int2 = old.f_int2 - @max_row,
15174
new.f_charbig = '####updated per update trigger####';
15177
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15178
f_charbig = '####updated per update statement itself####';
15180
# check trigger-9 success: 1
15181
DROP TRIGGER trg_2;
15182
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15183
f_int2 = CAST(f_char1 AS SIGNED INT),
15184
f_charbig = CONCAT('===',f_char1,'===');
15185
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15187
SET new.f_int1 = new.f_int1 + @max_row,
15188
new.f_int2 = new.f_int2 - @max_row,
15189
new.f_charbig = '####updated per update trigger####';
15192
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15193
f_charbig = '####updated per update statement itself####';
15195
# check trigger-10 success: 1
15196
DROP TRIGGER trg_2;
15197
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15198
f_int2 = CAST(f_char1 AS SIGNED INT),
15199
f_charbig = CONCAT('===',f_char1,'===');
15200
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15202
SET new.f_int1 = @my_max1 + @counter,
15203
new.f_int2 = @my_min2 - @counter,
15204
new.f_charbig = '####updated per insert trigger####';
15205
SET @counter = @counter + 1;
15208
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15209
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15210
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15211
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15214
DROP TRIGGER trg_3;
15216
# check trigger-11 success: 1
15218
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15219
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15220
AND f_charbig = '####updated per insert trigger####';
15221
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15223
SET new.f_int1 = @my_max1 + @counter,
15224
new.f_int2 = @my_min2 - @counter,
15225
new.f_charbig = '####updated per insert trigger####';
15226
SET @counter = @counter + 1;
15229
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15230
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15231
SELECT CAST(f_int1 AS CHAR),
15232
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15233
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15235
DROP TRIGGER trg_3;
15237
# check trigger-12 success: 1
15239
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15240
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15241
AND f_charbig = '####updated per insert trigger####';
15243
Table Op Msg_type Msg_text
15244
test.t1 analyze note The storage engine for the table doesn't support analyze
15245
CHECK TABLE t1 EXTENDED;
15246
Table Op Msg_type Msg_text
15247
test.t1 check note The storage engine for the table doesn't support check
15248
CHECKSUM TABLE t1 EXTENDED;
15250
test.t1 <some_value>
15252
Table Op Msg_type Msg_text
15253
test.t1 optimize note The storage engine for the table doesn't support optimize
15254
# check layout success: 1
15255
REPAIR TABLE t1 EXTENDED;
15256
Table Op Msg_type Msg_text
15257
test.t1 repair note The storage engine for the table doesn't support repair
15258
# check layout success: 1
15261
# check TRUNCATE success: 1
15262
# check layout success: 1
15263
# End usability test (inc/partition_check.inc)
15265
DROP TABLE IF EXISTS t1;
15271
f_charbig VARCHAR(1000)
15272
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
15274
PARTITION BY HASH(f_int1) PARTITIONS 2;
15275
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15276
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
15277
# Start usability test (inc/partition_check.inc)
15279
SHOW CREATE TABLE t1;
15281
t1 CREATE TABLE `t1` (
15282
`f_int1` int(11) DEFAULT NULL,
15283
`f_int2` int(11) DEFAULT NULL,
15284
`f_char1` char(20) DEFAULT NULL,
15285
`f_char2` char(20) DEFAULT NULL,
15286
`f_charbig` varchar(1000) DEFAULT NULL,
15287
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
15288
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
15289
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1) PARTITIONS 2 */
15292
$MYSQLTEST_VARDIR/master-data/test/t1.frm
15293
$MYSQLTEST_VARDIR/master-data/test/t1.par
15295
# check prerequisites-1 success: 1
15296
# check COUNT(*) success: 1
15297
# check MIN/MAX(f_int1) success: 1
15298
# check MIN/MAX(f_int2) success: 1
15299
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15300
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15301
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15302
WHERE f_int1 IN (2,3);
15303
ERROR 23000: Can't write; duplicate key in table 't1'
15304
# check prerequisites-3 success: 1
15305
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
15306
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15307
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15308
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15309
WHERE f_int1 IN (2,3);
15310
DELETE FROM t1 WHERE f_charbig = 'delete me';
15311
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15312
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15313
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15314
WHERE f_int1 IN (2,3);
15315
DELETE FROM t1 WHERE f_charbig = 'delete me';
15316
# check read via f_int1 success: 1
15317
# check read via f_int2 success: 1
15319
# check multiple-1 success: 1
15320
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15322
# check multiple-2 success: 1
15323
INSERT INTO t1 SELECT * FROM t0_template
15324
WHERE MOD(f_int1,3) = 0;
15326
# check multiple-3 success: 1
15327
UPDATE t1 SET f_int1 = f_int1 + @max_row
15328
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15329
AND @max_row_div2 + @max_row_div4;
15331
# check multiple-4 success: 1
15333
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15334
AND @max_row_div2 + @max_row_div4 + @max_row;
15336
# check multiple-5 success: 1
15337
SELECT COUNT(*) INTO @try_count FROM t0_template
15338
WHERE MOD(f_int1,3) = 0
15339
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15340
SELECT COUNT(*) INTO @clash_count
15341
FROM t1 INNER JOIN t0_template USING(f_int1)
15342
WHERE MOD(f_int1,3) = 0
15343
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15344
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15346
SET f_int1 = @cur_value , f_int2 = @cur_value,
15347
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15348
f_charbig = '#SINGLE#';
15350
# check single-1 success: 1
15351
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15353
SET f_int1 = @cur_value , f_int2 = @cur_value,
15354
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15355
f_charbig = '#SINGLE#';
15357
# check single-2 success: 1
15358
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15359
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15360
UPDATE t1 SET f_int1 = @cur_value2
15361
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15363
# check single-3 success: 1
15364
SET @cur_value1= -1;
15365
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15366
UPDATE t1 SET f_int1 = @cur_value1
15367
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15369
# check single-4 success: 1
15370
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15371
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15373
# check single-5 success: 1
15374
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15376
# check single-6 success: 1
15377
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15379
# check single-7 success: 1
15380
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15381
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15382
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15383
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15384
f_charbig = '#NULL#';
15386
SET f_int1 = NULL , f_int2 = -@max_row,
15387
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15388
f_charbig = '#NULL#';
15389
# check null success: 1
15391
# check null-1 success: 1
15392
UPDATE t1 SET f_int1 = -@max_row
15393
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15394
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15396
# check null-2 success: 1
15397
UPDATE t1 SET f_int1 = NULL
15398
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15399
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15401
# check null-3 success: 1
15403
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15404
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15406
# check null-4 success: 1
15408
WHERE f_int1 = 0 AND f_int2 = 0
15409
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15410
AND f_charbig = '#NULL#';
15411
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15412
SELECT f_int1, f_int1, '', '', 'was inserted'
15413
FROM t0_template source_tab
15414
WHERE MOD(f_int1,3) = 0
15415
AND f_int1 BETWEEN @max_row_div2 AND @max_row
15417
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
15418
f_int2 = 2 * @max_row + source_tab.f_int1,
15419
f_charbig = 'was updated';
15421
# check unique-1-a success: 1
15423
# check unique-1-b success: 1
15424
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15425
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15426
f_int2 = CAST(f_char1 AS SIGNED INT),
15427
f_charbig = CONCAT('===',f_char1,'===')
15428
WHERE f_charbig = 'was updated';
15429
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15430
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
15431
FROM t0_template source_tab
15432
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15434
# check replace success: 1
15436
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
15438
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
15439
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
15440
UPDATE t1 SET f_int2 = f_int1,
15441
f_char1 = CAST(f_int1 AS CHAR),
15442
f_char2 = CAST(f_int1 AS CHAR),
15443
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
15444
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
15446
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15447
SELECT f_int1, f_int1, '', '', 'was inserted'
15448
FROM t0_template source_tab
15449
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15451
# check transactions-1 success: 1
15454
# check transactions-2 success: 1
15457
# check transactions-3 success: 1
15458
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15462
# check transactions-4 success: 1
15463
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15464
SELECT f_int1, f_int1, '', '', 'was inserted'
15465
FROM t0_template source_tab
15466
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15468
# check transactions-5 success: 1
15471
# check transactions-6 success: 1
15472
# INFO: Storage engine used for t1 seems to be transactional.
15475
# check transactions-7 success: 1
15476
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15478
SET @@session.sql_mode = 'traditional';
15479
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15480
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15481
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15482
'', '', 'was inserted' FROM t0_template
15483
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15484
ERROR 22012: Division by 0
15487
# check transactions-8 success: 1
15488
# INFO: Storage engine used for t1 seems to be able to revert
15489
# changes made by the failing statement.
15490
SET @@session.sql_mode = '';
15492
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15494
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15496
# check special-1 success: 1
15497
UPDATE t1 SET f_charbig = '';
15499
# check special-2 success: 1
15500
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15501
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15502
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15503
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15504
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15505
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15506
'just inserted' FROM t0_template
15507
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15508
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15510
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15511
f_charbig = 'updated by trigger'
15512
WHERE f_int1 = new.f_int1;
15514
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15515
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15516
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15518
# check trigger-1 success: 1
15519
DROP TRIGGER trg_1;
15520
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15521
f_int2 = CAST(f_char1 AS SIGNED INT),
15522
f_charbig = 'just inserted'
15523
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15525
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15526
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15527
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15528
'just inserted' FROM t0_template
15529
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15530
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15532
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15533
f_charbig = 'updated by trigger'
15534
WHERE f_int1 = new.f_int1;
15536
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15537
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15538
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15540
# check trigger-2 success: 1
15541
DROP TRIGGER trg_1;
15542
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15543
f_int2 = CAST(f_char1 AS SIGNED INT),
15544
f_charbig = 'just inserted'
15545
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15547
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15548
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15549
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15550
'just inserted' FROM t0_template
15551
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15552
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15554
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15555
f_charbig = 'updated by trigger'
15556
WHERE f_int1 = new.f_int1;
15558
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15559
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15561
# check trigger-3 success: 1
15562
DROP TRIGGER trg_1;
15563
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15564
f_int2 = CAST(f_char1 AS SIGNED INT),
15565
f_charbig = 'just inserted'
15566
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15568
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15569
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15570
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15571
'just inserted' FROM t0_template
15572
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15573
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15575
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15576
f_charbig = 'updated by trigger'
15577
WHERE f_int1 = - old.f_int1;
15579
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15580
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15582
# check trigger-4 success: 1
15583
DROP TRIGGER trg_1;
15584
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15585
f_int2 = CAST(f_char1 AS SIGNED INT),
15586
f_charbig = 'just inserted'
15587
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15589
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15590
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15591
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15592
'just inserted' FROM t0_template
15593
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15594
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15596
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15597
f_charbig = 'updated by trigger'
15598
WHERE f_int1 = new.f_int1;
15600
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15601
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15603
# check trigger-5 success: 1
15604
DROP TRIGGER trg_1;
15605
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15606
f_int2 = CAST(f_char1 AS SIGNED INT),
15607
f_charbig = 'just inserted'
15608
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15610
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15611
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15612
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15613
'just inserted' FROM t0_template
15614
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15615
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15617
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15618
f_charbig = 'updated by trigger'
15619
WHERE f_int1 = - old.f_int1;
15621
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15622
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15624
# check trigger-6 success: 1
15625
DROP TRIGGER trg_1;
15626
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15627
f_int2 = CAST(f_char1 AS SIGNED INT),
15628
f_charbig = 'just inserted'
15629
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15631
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15632
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15633
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15634
'just inserted' FROM t0_template
15635
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15636
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15638
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15639
f_charbig = 'updated by trigger'
15640
WHERE f_int1 = - old.f_int1;
15643
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15645
# check trigger-7 success: 1
15646
DROP TRIGGER trg_1;
15647
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15648
f_int2 = CAST(f_char1 AS SIGNED INT),
15649
f_charbig = 'just inserted'
15650
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15652
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15653
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15654
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15655
'just inserted' FROM t0_template
15656
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15657
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15659
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15660
f_charbig = 'updated by trigger'
15661
WHERE f_int1 = - old.f_int1;
15664
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15666
# check trigger-8 success: 1
15667
DROP TRIGGER trg_1;
15668
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15669
f_int2 = CAST(f_char1 AS SIGNED INT),
15670
f_charbig = 'just inserted'
15671
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15673
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15676
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15678
SET new.f_int1 = old.f_int1 + @max_row,
15679
new.f_int2 = old.f_int2 - @max_row,
15680
new.f_charbig = '####updated per update trigger####';
15683
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15684
f_charbig = '####updated per update statement itself####';
15686
# check trigger-9 success: 1
15687
DROP TRIGGER trg_2;
15688
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15689
f_int2 = CAST(f_char1 AS SIGNED INT),
15690
f_charbig = CONCAT('===',f_char1,'===');
15691
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15693
SET new.f_int1 = new.f_int1 + @max_row,
15694
new.f_int2 = new.f_int2 - @max_row,
15695
new.f_charbig = '####updated per update trigger####';
15698
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15699
f_charbig = '####updated per update statement itself####';
15701
# check trigger-10 success: 1
15702
DROP TRIGGER trg_2;
15703
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15704
f_int2 = CAST(f_char1 AS SIGNED INT),
15705
f_charbig = CONCAT('===',f_char1,'===');
15706
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15708
SET new.f_int1 = @my_max1 + @counter,
15709
new.f_int2 = @my_min2 - @counter,
15710
new.f_charbig = '####updated per insert trigger####';
15711
SET @counter = @counter + 1;
15714
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15715
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15716
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15717
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15718
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15720
DROP TRIGGER trg_3;
15722
# check trigger-11 success: 1
15724
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15725
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15726
AND f_charbig = '####updated per insert trigger####';
15727
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15729
SET new.f_int1 = @my_max1 + @counter,
15730
new.f_int2 = @my_min2 - @counter,
15731
new.f_charbig = '####updated per insert trigger####';
15732
SET @counter = @counter + 1;
15735
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15736
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15737
SELECT CAST(f_int1 AS CHAR),
15738
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15739
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15741
DROP TRIGGER trg_3;
15743
# check trigger-12 success: 1
15745
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15746
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15747
AND f_charbig = '####updated per insert trigger####';
15749
Table Op Msg_type Msg_text
15750
test.t1 analyze note The storage engine for the table doesn't support analyze
15751
CHECK TABLE t1 EXTENDED;
15752
Table Op Msg_type Msg_text
15753
test.t1 check note The storage engine for the table doesn't support check
15754
CHECKSUM TABLE t1 EXTENDED;
15756
test.t1 <some_value>
15758
Table Op Msg_type Msg_text
15759
test.t1 optimize note The storage engine for the table doesn't support optimize
15760
# check layout success: 1
15761
REPAIR TABLE t1 EXTENDED;
15762
Table Op Msg_type Msg_text
15763
test.t1 repair note The storage engine for the table doesn't support repair
15764
# check layout success: 1
15767
# check TRUNCATE success: 1
15768
# check layout success: 1
15769
# End usability test (inc/partition_check.inc)
15776
f_charbig VARCHAR(1000)
15777
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
15779
PARTITION BY KEY(f_int1) PARTITIONS 5;
15780
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15781
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
15782
# Start usability test (inc/partition_check.inc)
15784
SHOW CREATE TABLE t1;
15786
t1 CREATE TABLE `t1` (
15787
`f_int1` int(11) DEFAULT NULL,
15788
`f_int2` int(11) DEFAULT NULL,
15789
`f_char1` char(20) DEFAULT NULL,
15790
`f_char2` char(20) DEFAULT NULL,
15791
`f_charbig` varchar(1000) DEFAULT NULL,
15792
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
15793
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
15794
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1) PARTITIONS 5 */
15797
$MYSQLTEST_VARDIR/master-data/test/t1.frm
15798
$MYSQLTEST_VARDIR/master-data/test/t1.par
15800
# check prerequisites-1 success: 1
15801
# check COUNT(*) success: 1
15802
# check MIN/MAX(f_int1) success: 1
15803
# check MIN/MAX(f_int2) success: 1
15804
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15805
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15806
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15807
WHERE f_int1 IN (2,3);
15808
ERROR 23000: Can't write; duplicate key in table 't1'
15809
# check prerequisites-3 success: 1
15810
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
15811
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15812
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15813
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15814
WHERE f_int1 IN (2,3);
15815
DELETE FROM t1 WHERE f_charbig = 'delete me';
15816
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15817
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
15818
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
15819
WHERE f_int1 IN (2,3);
15820
DELETE FROM t1 WHERE f_charbig = 'delete me';
15821
# check read via f_int1 success: 1
15822
# check read via f_int2 success: 1
15824
# check multiple-1 success: 1
15825
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15827
# check multiple-2 success: 1
15828
INSERT INTO t1 SELECT * FROM t0_template
15829
WHERE MOD(f_int1,3) = 0;
15831
# check multiple-3 success: 1
15832
UPDATE t1 SET f_int1 = f_int1 + @max_row
15833
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15834
AND @max_row_div2 + @max_row_div4;
15836
# check multiple-4 success: 1
15838
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15839
AND @max_row_div2 + @max_row_div4 + @max_row;
15841
# check multiple-5 success: 1
15842
SELECT COUNT(*) INTO @try_count FROM t0_template
15843
WHERE MOD(f_int1,3) = 0
15844
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15845
SELECT COUNT(*) INTO @clash_count
15846
FROM t1 INNER JOIN t0_template USING(f_int1)
15847
WHERE MOD(f_int1,3) = 0
15848
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15849
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15851
SET f_int1 = @cur_value , f_int2 = @cur_value,
15852
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15853
f_charbig = '#SINGLE#';
15855
# check single-1 success: 1
15856
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15858
SET f_int1 = @cur_value , f_int2 = @cur_value,
15859
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15860
f_charbig = '#SINGLE#';
15862
# check single-2 success: 1
15863
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15864
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15865
UPDATE t1 SET f_int1 = @cur_value2
15866
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15868
# check single-3 success: 1
15869
SET @cur_value1= -1;
15870
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15871
UPDATE t1 SET f_int1 = @cur_value1
15872
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15874
# check single-4 success: 1
15875
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15876
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15878
# check single-5 success: 1
15879
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15881
# check single-6 success: 1
15882
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15884
# check single-7 success: 1
15885
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15886
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15887
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15888
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15889
f_charbig = '#NULL#';
15891
SET f_int1 = NULL , f_int2 = -@max_row,
15892
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15893
f_charbig = '#NULL#';
15894
# check null success: 1
15896
# check null-1 success: 1
15897
UPDATE t1 SET f_int1 = -@max_row
15898
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15899
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15901
# check null-2 success: 1
15902
UPDATE t1 SET f_int1 = NULL
15903
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15904
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15906
# check null-3 success: 1
15908
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
15909
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
15911
# check null-4 success: 1
15913
WHERE f_int1 = 0 AND f_int2 = 0
15914
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15915
AND f_charbig = '#NULL#';
15916
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15917
SELECT f_int1, f_int1, '', '', 'was inserted'
15918
FROM t0_template source_tab
15919
WHERE MOD(f_int1,3) = 0
15920
AND f_int1 BETWEEN @max_row_div2 AND @max_row
15922
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
15923
f_int2 = 2 * @max_row + source_tab.f_int1,
15924
f_charbig = 'was updated';
15926
# check unique-1-a success: 1
15928
# check unique-1-b success: 1
15929
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15930
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15931
f_int2 = CAST(f_char1 AS SIGNED INT),
15932
f_charbig = CONCAT('===',f_char1,'===')
15933
WHERE f_charbig = 'was updated';
15934
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15935
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
15936
FROM t0_template source_tab
15937
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
15939
# check replace success: 1
15941
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
15943
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
15944
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
15945
UPDATE t1 SET f_int2 = f_int1,
15946
f_char1 = CAST(f_int1 AS CHAR),
15947
f_char2 = CAST(f_int1 AS CHAR),
15948
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
15949
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
15951
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15952
SELECT f_int1, f_int1, '', '', 'was inserted'
15953
FROM t0_template source_tab
15954
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15956
# check transactions-1 success: 1
15959
# check transactions-2 success: 1
15962
# check transactions-3 success: 1
15963
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15967
# check transactions-4 success: 1
15968
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15969
SELECT f_int1, f_int1, '', '', 'was inserted'
15970
FROM t0_template source_tab
15971
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15973
# check transactions-5 success: 1
15976
# check transactions-6 success: 1
15977
# INFO: Storage engine used for t1 seems to be transactional.
15980
# check transactions-7 success: 1
15981
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15983
SET @@session.sql_mode = 'traditional';
15984
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15985
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15986
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15987
'', '', 'was inserted' FROM t0_template
15988
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15989
ERROR 22012: Division by 0
15992
# check transactions-8 success: 1
15993
# INFO: Storage engine used for t1 seems to be able to revert
15994
# changes made by the failing statement.
15995
SET @@session.sql_mode = '';
15997
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15999
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16001
# check special-1 success: 1
16002
UPDATE t1 SET f_charbig = '';
16004
# check special-2 success: 1
16005
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16006
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16007
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16008
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16009
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16010
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16011
'just inserted' FROM t0_template
16012
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16013
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16015
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16016
f_charbig = 'updated by trigger'
16017
WHERE f_int1 = new.f_int1;
16019
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16020
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16021
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16023
# check trigger-1 success: 1
16024
DROP TRIGGER trg_1;
16025
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16026
f_int2 = CAST(f_char1 AS SIGNED INT),
16027
f_charbig = 'just inserted'
16028
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16030
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16031
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16032
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16033
'just inserted' FROM t0_template
16034
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16035
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16037
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16038
f_charbig = 'updated by trigger'
16039
WHERE f_int1 = new.f_int1;
16041
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16042
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16043
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16045
# check trigger-2 success: 1
16046
DROP TRIGGER trg_1;
16047
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16048
f_int2 = CAST(f_char1 AS SIGNED INT),
16049
f_charbig = 'just inserted'
16050
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16052
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16053
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16054
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16055
'just inserted' FROM t0_template
16056
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16057
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16059
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16060
f_charbig = 'updated by trigger'
16061
WHERE f_int1 = new.f_int1;
16063
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16064
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16066
# check trigger-3 success: 1
16067
DROP TRIGGER trg_1;
16068
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16069
f_int2 = CAST(f_char1 AS SIGNED INT),
16070
f_charbig = 'just inserted'
16071
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16073
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16074
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16075
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16076
'just inserted' FROM t0_template
16077
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16078
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16080
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16081
f_charbig = 'updated by trigger'
16082
WHERE f_int1 = - old.f_int1;
16084
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16085
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16087
# check trigger-4 success: 1
16088
DROP TRIGGER trg_1;
16089
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16090
f_int2 = CAST(f_char1 AS SIGNED INT),
16091
f_charbig = 'just inserted'
16092
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16094
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16095
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16096
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16097
'just inserted' FROM t0_template
16098
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16099
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16101
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16102
f_charbig = 'updated by trigger'
16103
WHERE f_int1 = new.f_int1;
16105
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16106
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16108
# check trigger-5 success: 1
16109
DROP TRIGGER trg_1;
16110
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16111
f_int2 = CAST(f_char1 AS SIGNED INT),
16112
f_charbig = 'just inserted'
16113
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16115
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16116
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16117
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16118
'just inserted' FROM t0_template
16119
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16120
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16122
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16123
f_charbig = 'updated by trigger'
16124
WHERE f_int1 = - old.f_int1;
16126
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16127
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16129
# check trigger-6 success: 1
16130
DROP TRIGGER trg_1;
16131
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16132
f_int2 = CAST(f_char1 AS SIGNED INT),
16133
f_charbig = 'just inserted'
16134
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16136
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16137
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16138
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16139
'just inserted' FROM t0_template
16140
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16141
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16143
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16144
f_charbig = 'updated by trigger'
16145
WHERE f_int1 = - old.f_int1;
16148
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16150
# check trigger-7 success: 1
16151
DROP TRIGGER trg_1;
16152
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16153
f_int2 = CAST(f_char1 AS SIGNED INT),
16154
f_charbig = 'just inserted'
16155
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16157
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16158
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16159
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16160
'just inserted' FROM t0_template
16161
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16162
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16164
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16165
f_charbig = 'updated by trigger'
16166
WHERE f_int1 = - old.f_int1;
16169
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16171
# check trigger-8 success: 1
16172
DROP TRIGGER trg_1;
16173
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16174
f_int2 = CAST(f_char1 AS SIGNED INT),
16175
f_charbig = 'just inserted'
16176
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16178
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16180
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16181
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16183
SET new.f_int1 = old.f_int1 + @max_row,
16184
new.f_int2 = old.f_int2 - @max_row,
16185
new.f_charbig = '####updated per update trigger####';
16188
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16189
f_charbig = '####updated per update statement itself####';
16191
# check trigger-9 success: 1
16192
DROP TRIGGER trg_2;
16193
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16194
f_int2 = CAST(f_char1 AS SIGNED INT),
16195
f_charbig = CONCAT('===',f_char1,'===');
16196
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16198
SET new.f_int1 = new.f_int1 + @max_row,
16199
new.f_int2 = new.f_int2 - @max_row,
16200
new.f_charbig = '####updated per update trigger####';
16203
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16204
f_charbig = '####updated per update statement itself####';
16206
# check trigger-10 success: 1
16207
DROP TRIGGER trg_2;
16208
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16209
f_int2 = CAST(f_char1 AS SIGNED INT),
16210
f_charbig = CONCAT('===',f_char1,'===');
16211
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16213
SET new.f_int1 = @my_max1 + @counter,
16214
new.f_int2 = @my_min2 - @counter,
16215
new.f_charbig = '####updated per insert trigger####';
16216
SET @counter = @counter + 1;
16219
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16220
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16221
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16222
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16223
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16225
DROP TRIGGER trg_3;
16227
# check trigger-11 success: 1
16229
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16230
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16231
AND f_charbig = '####updated per insert trigger####';
16232
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16234
SET new.f_int1 = @my_max1 + @counter,
16235
new.f_int2 = @my_min2 - @counter,
16236
new.f_charbig = '####updated per insert trigger####';
16237
SET @counter = @counter + 1;
16240
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16241
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16242
SELECT CAST(f_int1 AS CHAR),
16243
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16244
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16246
DROP TRIGGER trg_3;
16248
# check trigger-12 success: 1
16250
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16251
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16252
AND f_charbig = '####updated per insert trigger####';
16254
Table Op Msg_type Msg_text
16255
test.t1 analyze note The storage engine for the table doesn't support analyze
16256
CHECK TABLE t1 EXTENDED;
16257
Table Op Msg_type Msg_text
16258
test.t1 check note The storage engine for the table doesn't support check
16259
CHECKSUM TABLE t1 EXTENDED;
16261
test.t1 <some_value>
16263
Table Op Msg_type Msg_text
16264
test.t1 optimize note The storage engine for the table doesn't support optimize
16265
# check layout success: 1
16266
REPAIR TABLE t1 EXTENDED;
16267
Table Op Msg_type Msg_text
16268
test.t1 repair note The storage engine for the table doesn't support repair
16269
# check layout success: 1
16272
# check TRUNCATE success: 1
16273
# check layout success: 1
16274
# End usability test (inc/partition_check.inc)
16281
f_charbig VARCHAR(1000)
16282
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
16284
PARTITION BY LIST(MOD(f_int1,4))
16285
(PARTITION part_3 VALUES IN (-3),
16286
PARTITION part_2 VALUES IN (-2),
16287
PARTITION part_1 VALUES IN (-1),
16288
PARTITION part_N VALUES IN (NULL),
16289
PARTITION part0 VALUES IN (0),
16290
PARTITION part1 VALUES IN (1),
16291
PARTITION part2 VALUES IN (2),
16292
PARTITION part3 VALUES IN (3));
16293
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16294
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
16295
# Start usability test (inc/partition_check.inc)
16297
SHOW CREATE TABLE t1;
16299
t1 CREATE TABLE `t1` (
16300
`f_int1` int(11) DEFAULT NULL,
16301
`f_int2` int(11) DEFAULT NULL,
16302
`f_char1` char(20) DEFAULT NULL,
16303
`f_char2` char(20) DEFAULT NULL,
16304
`f_charbig` varchar(1000) DEFAULT NULL,
16305
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
16306
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
16307
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
16310
$MYSQLTEST_VARDIR/master-data/test/t1.frm
16311
$MYSQLTEST_VARDIR/master-data/test/t1.par
16313
# check prerequisites-1 success: 1
16314
# check COUNT(*) success: 1
16315
# check MIN/MAX(f_int1) success: 1
16316
# check MIN/MAX(f_int2) success: 1
16317
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16318
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16319
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16320
WHERE f_int1 IN (2,3);
16321
ERROR 23000: Can't write; duplicate key in table 't1'
16322
# check prerequisites-3 success: 1
16323
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
16324
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16325
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16326
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16327
WHERE f_int1 IN (2,3);
16328
DELETE FROM t1 WHERE f_charbig = 'delete me';
16329
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16330
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16331
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16332
WHERE f_int1 IN (2,3);
16333
DELETE FROM t1 WHERE f_charbig = 'delete me';
16334
# check read via f_int1 success: 1
16335
# check read via f_int2 success: 1
16337
# check multiple-1 success: 1
16338
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16340
# check multiple-2 success: 1
16341
INSERT INTO t1 SELECT * FROM t0_template
16342
WHERE MOD(f_int1,3) = 0;
16344
# check multiple-3 success: 1
16345
UPDATE t1 SET f_int1 = f_int1 + @max_row
16346
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16347
AND @max_row_div2 + @max_row_div4;
16349
# check multiple-4 success: 1
16351
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16352
AND @max_row_div2 + @max_row_div4 + @max_row;
16354
# check multiple-5 success: 1
16355
SELECT COUNT(*) INTO @try_count FROM t0_template
16356
WHERE MOD(f_int1,3) = 0
16357
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16358
SELECT COUNT(*) INTO @clash_count
16359
FROM t1 INNER JOIN t0_template USING(f_int1)
16360
WHERE MOD(f_int1,3) = 0
16361
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16362
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16364
SET f_int1 = @cur_value , f_int2 = @cur_value,
16365
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16366
f_charbig = '#SINGLE#';
16368
# check single-1 success: 1
16369
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16371
SET f_int1 = @cur_value , f_int2 = @cur_value,
16372
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16373
f_charbig = '#SINGLE#';
16375
# check single-2 success: 1
16376
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16377
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16378
UPDATE t1 SET f_int1 = @cur_value2
16379
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16381
# check single-3 success: 1
16382
SET @cur_value1= -1;
16383
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16384
UPDATE t1 SET f_int1 = @cur_value1
16385
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16387
# check single-4 success: 1
16388
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16389
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16391
# check single-5 success: 1
16392
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16394
# check single-6 success: 1
16395
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16397
# check single-7 success: 1
16398
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
16399
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16400
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16401
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16402
f_charbig = '#NULL#';
16404
SET f_int1 = NULL , f_int2 = -@max_row,
16405
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16406
f_charbig = '#NULL#';
16407
# check null success: 1
16409
# check null-1 success: 1
16410
UPDATE t1 SET f_int1 = -@max_row
16411
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16412
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16414
# check null-2 success: 1
16415
UPDATE t1 SET f_int1 = NULL
16416
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16417
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16419
# check null-3 success: 1
16421
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16422
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16424
# check null-4 success: 1
16426
WHERE f_int1 = 0 AND f_int2 = 0
16427
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16428
AND f_charbig = '#NULL#';
16429
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16430
SELECT f_int1, f_int1, '', '', 'was inserted'
16431
FROM t0_template source_tab
16432
WHERE MOD(f_int1,3) = 0
16433
AND f_int1 BETWEEN @max_row_div2 AND @max_row
16435
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
16436
f_int2 = 2 * @max_row + source_tab.f_int1,
16437
f_charbig = 'was updated';
16439
# check unique-1-a success: 1
16441
# check unique-1-b success: 1
16442
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16443
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16444
f_int2 = CAST(f_char1 AS SIGNED INT),
16445
f_charbig = CONCAT('===',f_char1,'===')
16446
WHERE f_charbig = 'was updated';
16447
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16448
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
16449
FROM t0_template source_tab
16450
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16452
# check replace success: 1
16454
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
16456
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
16457
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
16458
UPDATE t1 SET f_int2 = f_int1,
16459
f_char1 = CAST(f_int1 AS CHAR),
16460
f_char2 = CAST(f_int1 AS CHAR),
16461
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
16462
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
16464
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16465
SELECT f_int1, f_int1, '', '', 'was inserted'
16466
FROM t0_template source_tab
16467
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16469
# check transactions-1 success: 1
16472
# check transactions-2 success: 1
16475
# check transactions-3 success: 1
16476
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16480
# check transactions-4 success: 1
16481
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16482
SELECT f_int1, f_int1, '', '', 'was inserted'
16483
FROM t0_template source_tab
16484
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16486
# check transactions-5 success: 1
16489
# check transactions-6 success: 1
16490
# INFO: Storage engine used for t1 seems to be transactional.
16493
# check transactions-7 success: 1
16494
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16496
SET @@session.sql_mode = 'traditional';
16497
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16498
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16499
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16500
'', '', 'was inserted' FROM t0_template
16501
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16502
ERROR 22012: Division by 0
16505
# check transactions-8 success: 1
16506
# INFO: Storage engine used for t1 seems to be able to revert
16507
# changes made by the failing statement.
16508
SET @@session.sql_mode = '';
16510
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16512
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16514
# check special-1 success: 1
16515
UPDATE t1 SET f_charbig = '';
16517
# check special-2 success: 1
16518
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16519
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16520
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16521
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16522
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16523
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16524
'just inserted' FROM t0_template
16525
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16526
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16528
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16529
f_charbig = 'updated by trigger'
16530
WHERE f_int1 = new.f_int1;
16532
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16533
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16534
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16536
# check trigger-1 success: 1
16537
DROP TRIGGER trg_1;
16538
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16539
f_int2 = CAST(f_char1 AS SIGNED INT),
16540
f_charbig = 'just inserted'
16541
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16543
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16544
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16545
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16546
'just inserted' FROM t0_template
16547
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16548
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16550
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16551
f_charbig = 'updated by trigger'
16552
WHERE f_int1 = new.f_int1;
16554
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16555
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16556
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16558
# check trigger-2 success: 1
16559
DROP TRIGGER trg_1;
16560
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16561
f_int2 = CAST(f_char1 AS SIGNED INT),
16562
f_charbig = 'just inserted'
16563
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16565
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16566
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16567
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16568
'just inserted' FROM t0_template
16569
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16570
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16572
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16573
f_charbig = 'updated by trigger'
16574
WHERE f_int1 = new.f_int1;
16576
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16577
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16579
# check trigger-3 success: 1
16580
DROP TRIGGER trg_1;
16581
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16582
f_int2 = CAST(f_char1 AS SIGNED INT),
16583
f_charbig = 'just inserted'
16584
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16586
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16587
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16588
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16589
'just inserted' FROM t0_template
16590
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16591
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16593
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16594
f_charbig = 'updated by trigger'
16595
WHERE f_int1 = - old.f_int1;
16597
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16598
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16600
# check trigger-4 success: 1
16601
DROP TRIGGER trg_1;
16602
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16603
f_int2 = CAST(f_char1 AS SIGNED INT),
16604
f_charbig = 'just inserted'
16605
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16607
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16608
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16609
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16610
'just inserted' FROM t0_template
16611
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16612
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16614
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16615
f_charbig = 'updated by trigger'
16616
WHERE f_int1 = new.f_int1;
16618
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16619
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16621
# check trigger-5 success: 1
16622
DROP TRIGGER trg_1;
16623
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16624
f_int2 = CAST(f_char1 AS SIGNED INT),
16625
f_charbig = 'just inserted'
16626
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16628
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16629
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16630
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16631
'just inserted' FROM t0_template
16632
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16633
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16635
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16636
f_charbig = 'updated by trigger'
16637
WHERE f_int1 = - old.f_int1;
16639
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16640
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16642
# check trigger-6 success: 1
16643
DROP TRIGGER trg_1;
16644
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16645
f_int2 = CAST(f_char1 AS SIGNED INT),
16646
f_charbig = 'just inserted'
16647
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16649
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16650
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16651
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16652
'just inserted' FROM t0_template
16653
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16654
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16656
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16657
f_charbig = 'updated by trigger'
16658
WHERE f_int1 = - old.f_int1;
16661
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16663
# check trigger-7 success: 1
16664
DROP TRIGGER trg_1;
16665
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16666
f_int2 = CAST(f_char1 AS SIGNED INT),
16667
f_charbig = 'just inserted'
16668
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16670
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16671
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16672
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16673
'just inserted' FROM t0_template
16674
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16675
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16677
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16678
f_charbig = 'updated by trigger'
16679
WHERE f_int1 = - old.f_int1;
16682
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16684
# check trigger-8 success: 1
16685
DROP TRIGGER trg_1;
16686
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16687
f_int2 = CAST(f_char1 AS SIGNED INT),
16688
f_charbig = 'just inserted'
16689
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16691
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16693
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16694
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16696
SET new.f_int1 = old.f_int1 + @max_row,
16697
new.f_int2 = old.f_int2 - @max_row,
16698
new.f_charbig = '####updated per update trigger####';
16701
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16702
f_charbig = '####updated per update statement itself####';
16704
# check trigger-9 success: 1
16705
DROP TRIGGER trg_2;
16706
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16707
f_int2 = CAST(f_char1 AS SIGNED INT),
16708
f_charbig = CONCAT('===',f_char1,'===');
16709
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16711
SET new.f_int1 = new.f_int1 + @max_row,
16712
new.f_int2 = new.f_int2 - @max_row,
16713
new.f_charbig = '####updated per update trigger####';
16716
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16717
f_charbig = '####updated per update statement itself####';
16719
# check trigger-10 success: 1
16720
DROP TRIGGER trg_2;
16721
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16722
f_int2 = CAST(f_char1 AS SIGNED INT),
16723
f_charbig = CONCAT('===',f_char1,'===');
16724
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16726
SET new.f_int1 = @my_max1 + @counter,
16727
new.f_int2 = @my_min2 - @counter,
16728
new.f_charbig = '####updated per insert trigger####';
16729
SET @counter = @counter + 1;
16732
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16733
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16734
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16735
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16736
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16738
DROP TRIGGER trg_3;
16740
# check trigger-11 success: 1
16742
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16743
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16744
AND f_charbig = '####updated per insert trigger####';
16745
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16747
SET new.f_int1 = @my_max1 + @counter,
16748
new.f_int2 = @my_min2 - @counter,
16749
new.f_charbig = '####updated per insert trigger####';
16750
SET @counter = @counter + 1;
16753
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16754
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16755
SELECT CAST(f_int1 AS CHAR),
16756
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16757
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16759
DROP TRIGGER trg_3;
16761
# check trigger-12 success: 1
16763
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16764
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16765
AND f_charbig = '####updated per insert trigger####';
16767
Table Op Msg_type Msg_text
16768
test.t1 analyze note The storage engine for the table doesn't support analyze
16769
CHECK TABLE t1 EXTENDED;
16770
Table Op Msg_type Msg_text
16771
test.t1 check note The storage engine for the table doesn't support check
16772
CHECKSUM TABLE t1 EXTENDED;
16774
test.t1 <some_value>
16776
Table Op Msg_type Msg_text
16777
test.t1 optimize note The storage engine for the table doesn't support optimize
16778
# check layout success: 1
16779
REPAIR TABLE t1 EXTENDED;
16780
Table Op Msg_type Msg_text
16781
test.t1 repair note The storage engine for the table doesn't support repair
16782
# check layout success: 1
16785
# check TRUNCATE success: 1
16786
# check layout success: 1
16787
# End usability test (inc/partition_check.inc)
16794
f_charbig VARCHAR(1000)
16795
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
16797
PARTITION BY RANGE(f_int1)
16798
(PARTITION parta VALUES LESS THAN (0),
16799
PARTITION partb VALUES LESS THAN (5),
16800
PARTITION partc VALUES LESS THAN (10),
16801
PARTITION partd VALUES LESS THAN (10 + 5),
16802
PARTITION parte VALUES LESS THAN (20),
16803
PARTITION partf VALUES LESS THAN (2147483646));
16804
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16805
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
16806
# Start usability test (inc/partition_check.inc)
16808
SHOW CREATE TABLE t1;
16810
t1 CREATE TABLE `t1` (
16811
`f_int1` int(11) DEFAULT NULL,
16812
`f_int2` int(11) DEFAULT NULL,
16813
`f_char1` char(20) DEFAULT NULL,
16814
`f_char2` char(20) DEFAULT NULL,
16815
`f_charbig` varchar(1000) DEFAULT NULL,
16816
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
16817
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
16818
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
16821
$MYSQLTEST_VARDIR/master-data/test/t1.frm
16822
$MYSQLTEST_VARDIR/master-data/test/t1.par
16824
# check prerequisites-1 success: 1
16825
# check COUNT(*) success: 1
16826
# check MIN/MAX(f_int1) success: 1
16827
# check MIN/MAX(f_int2) success: 1
16828
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16829
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16830
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16831
WHERE f_int1 IN (2,3);
16832
ERROR 23000: Can't write; duplicate key in table 't1'
16833
# check prerequisites-3 success: 1
16834
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
16835
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16836
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16837
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16838
WHERE f_int1 IN (2,3);
16839
DELETE FROM t1 WHERE f_charbig = 'delete me';
16840
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16841
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
16842
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
16843
WHERE f_int1 IN (2,3);
16844
DELETE FROM t1 WHERE f_charbig = 'delete me';
16845
# check read via f_int1 success: 1
16846
# check read via f_int2 success: 1
16848
# check multiple-1 success: 1
16849
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16851
# check multiple-2 success: 1
16852
INSERT INTO t1 SELECT * FROM t0_template
16853
WHERE MOD(f_int1,3) = 0;
16855
# check multiple-3 success: 1
16856
UPDATE t1 SET f_int1 = f_int1 + @max_row
16857
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16858
AND @max_row_div2 + @max_row_div4;
16860
# check multiple-4 success: 1
16862
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16863
AND @max_row_div2 + @max_row_div4 + @max_row;
16865
# check multiple-5 success: 1
16866
SELECT COUNT(*) INTO @try_count FROM t0_template
16867
WHERE MOD(f_int1,3) = 0
16868
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16869
SELECT COUNT(*) INTO @clash_count
16870
FROM t1 INNER JOIN t0_template USING(f_int1)
16871
WHERE MOD(f_int1,3) = 0
16872
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16873
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16875
SET f_int1 = @cur_value , f_int2 = @cur_value,
16876
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16877
f_charbig = '#SINGLE#';
16879
# check single-1 success: 1
16880
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16882
SET f_int1 = @cur_value , f_int2 = @cur_value,
16883
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16884
f_charbig = '#SINGLE#';
16886
# check single-2 success: 1
16887
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16888
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16889
UPDATE t1 SET f_int1 = @cur_value2
16890
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16892
# check single-3 success: 1
16893
SET @cur_value1= -1;
16894
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16895
UPDATE t1 SET f_int1 = @cur_value1
16896
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16898
# check single-4 success: 1
16899
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16900
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16902
# check single-5 success: 1
16903
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16905
# check single-6 success: 1
16906
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16907
ERROR HY000: Table has no partition for value 2147483647
16908
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16909
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16910
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16911
f_charbig = '#NULL#';
16913
SET f_int1 = NULL , f_int2 = -@max_row,
16914
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16915
f_charbig = '#NULL#';
16916
# check null success: 1
16918
# check null-1 success: 1
16919
UPDATE t1 SET f_int1 = -@max_row
16920
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16921
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16923
# check null-2 success: 1
16924
UPDATE t1 SET f_int1 = NULL
16925
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16926
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16928
# check null-3 success: 1
16930
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
16931
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
16933
# check null-4 success: 1
16935
WHERE f_int1 = 0 AND f_int2 = 0
16936
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16937
AND f_charbig = '#NULL#';
16938
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16939
SELECT f_int1, f_int1, '', '', 'was inserted'
16940
FROM t0_template source_tab
16941
WHERE MOD(f_int1,3) = 0
16942
AND f_int1 BETWEEN @max_row_div2 AND @max_row
16944
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
16945
f_int2 = 2 * @max_row + source_tab.f_int1,
16946
f_charbig = 'was updated';
16948
# check unique-1-a success: 1
16950
# check unique-1-b success: 1
16951
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16952
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16953
f_int2 = CAST(f_char1 AS SIGNED INT),
16954
f_charbig = CONCAT('===',f_char1,'===')
16955
WHERE f_charbig = 'was updated';
16956
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16957
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
16958
FROM t0_template source_tab
16959
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
16961
# check replace success: 1
16963
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
16965
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
16966
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
16967
UPDATE t1 SET f_int2 = f_int1,
16968
f_char1 = CAST(f_int1 AS CHAR),
16969
f_char2 = CAST(f_int1 AS CHAR),
16970
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
16971
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
16973
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16974
SELECT f_int1, f_int1, '', '', 'was inserted'
16975
FROM t0_template source_tab
16976
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16978
# check transactions-1 success: 1
16981
# check transactions-2 success: 1
16984
# check transactions-3 success: 1
16985
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16989
# check transactions-4 success: 1
16990
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16991
SELECT f_int1, f_int1, '', '', 'was inserted'
16992
FROM t0_template source_tab
16993
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16995
# check transactions-5 success: 1
16998
# check transactions-6 success: 1
16999
# INFO: Storage engine used for t1 seems to be transactional.
17002
# check transactions-7 success: 1
17003
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17005
SET @@session.sql_mode = 'traditional';
17006
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17007
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17008
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17009
'', '', 'was inserted' FROM t0_template
17010
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17011
ERROR 22012: Division by 0
17014
# check transactions-8 success: 1
17015
# INFO: Storage engine used for t1 seems to be able to revert
17016
# changes made by the failing statement.
17017
SET @@session.sql_mode = '';
17019
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17021
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17023
# check special-1 success: 1
17024
UPDATE t1 SET f_charbig = '';
17026
# check special-2 success: 1
17027
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17028
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17029
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17030
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17031
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17032
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17033
'just inserted' FROM t0_template
17034
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17035
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17037
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17038
f_charbig = 'updated by trigger'
17039
WHERE f_int1 = new.f_int1;
17041
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17042
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17043
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17045
# check trigger-1 success: 1
17046
DROP TRIGGER trg_1;
17047
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17048
f_int2 = CAST(f_char1 AS SIGNED INT),
17049
f_charbig = 'just inserted'
17050
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17052
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17053
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17054
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17055
'just inserted' FROM t0_template
17056
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17057
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17059
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17060
f_charbig = 'updated by trigger'
17061
WHERE f_int1 = new.f_int1;
17063
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17064
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17065
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17067
# check trigger-2 success: 1
17068
DROP TRIGGER trg_1;
17069
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17070
f_int2 = CAST(f_char1 AS SIGNED INT),
17071
f_charbig = 'just inserted'
17072
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17074
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17075
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17076
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17077
'just inserted' FROM t0_template
17078
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17079
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17081
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17082
f_charbig = 'updated by trigger'
17083
WHERE f_int1 = new.f_int1;
17085
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17086
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17088
# check trigger-3 success: 1
17089
DROP TRIGGER trg_1;
17090
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17091
f_int2 = CAST(f_char1 AS SIGNED INT),
17092
f_charbig = 'just inserted'
17093
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17095
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17096
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17097
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17098
'just inserted' FROM t0_template
17099
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17100
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17102
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17103
f_charbig = 'updated by trigger'
17104
WHERE f_int1 = - old.f_int1;
17106
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17107
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17109
# check trigger-4 success: 1
17110
DROP TRIGGER trg_1;
17111
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17112
f_int2 = CAST(f_char1 AS SIGNED INT),
17113
f_charbig = 'just inserted'
17114
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17116
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17117
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17118
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17119
'just inserted' FROM t0_template
17120
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17121
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17123
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17124
f_charbig = 'updated by trigger'
17125
WHERE f_int1 = new.f_int1;
17127
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17128
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17130
# check trigger-5 success: 1
17131
DROP TRIGGER trg_1;
17132
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17133
f_int2 = CAST(f_char1 AS SIGNED INT),
17134
f_charbig = 'just inserted'
17135
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17137
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17138
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17139
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17140
'just inserted' FROM t0_template
17141
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17142
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17144
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17145
f_charbig = 'updated by trigger'
17146
WHERE f_int1 = - old.f_int1;
17148
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17149
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17151
# check trigger-6 success: 1
17152
DROP TRIGGER trg_1;
17153
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17154
f_int2 = CAST(f_char1 AS SIGNED INT),
17155
f_charbig = 'just inserted'
17156
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17158
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17159
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17160
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17161
'just inserted' FROM t0_template
17162
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17163
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17165
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17166
f_charbig = 'updated by trigger'
17167
WHERE f_int1 = - old.f_int1;
17170
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17172
# check trigger-7 success: 1
17173
DROP TRIGGER trg_1;
17174
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17175
f_int2 = CAST(f_char1 AS SIGNED INT),
17176
f_charbig = 'just inserted'
17177
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17179
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17180
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17181
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17182
'just inserted' FROM t0_template
17183
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17184
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17186
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17187
f_charbig = 'updated by trigger'
17188
WHERE f_int1 = - old.f_int1;
17191
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17193
# check trigger-8 success: 1
17194
DROP TRIGGER trg_1;
17195
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17196
f_int2 = CAST(f_char1 AS SIGNED INT),
17197
f_charbig = 'just inserted'
17198
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17200
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17202
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17203
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17205
SET new.f_int1 = old.f_int1 + @max_row,
17206
new.f_int2 = old.f_int2 - @max_row,
17207
new.f_charbig = '####updated per update trigger####';
17210
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17211
f_charbig = '####updated per update statement itself####';
17213
# check trigger-9 success: 1
17214
DROP TRIGGER trg_2;
17215
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17216
f_int2 = CAST(f_char1 AS SIGNED INT),
17217
f_charbig = CONCAT('===',f_char1,'===');
17218
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17220
SET new.f_int1 = new.f_int1 + @max_row,
17221
new.f_int2 = new.f_int2 - @max_row,
17222
new.f_charbig = '####updated per update trigger####';
17225
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17226
f_charbig = '####updated per update statement itself####';
17228
# check trigger-10 success: 1
17229
DROP TRIGGER trg_2;
17230
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17231
f_int2 = CAST(f_char1 AS SIGNED INT),
17232
f_charbig = CONCAT('===',f_char1,'===');
17233
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17235
SET new.f_int1 = @my_max1 + @counter,
17236
new.f_int2 = @my_min2 - @counter,
17237
new.f_charbig = '####updated per insert trigger####';
17238
SET @counter = @counter + 1;
17241
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17242
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17243
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17244
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17245
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17247
DROP TRIGGER trg_3;
17249
# check trigger-11 success: 1
17251
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17252
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17253
AND f_charbig = '####updated per insert trigger####';
17254
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17256
SET new.f_int1 = @my_max1 + @counter,
17257
new.f_int2 = @my_min2 - @counter,
17258
new.f_charbig = '####updated per insert trigger####';
17259
SET @counter = @counter + 1;
17262
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17263
INSERT INTO t1 (f_char1, f_char2, f_charbig)
17264
SELECT CAST(f_int1 AS CHAR),
17265
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17266
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17268
DROP TRIGGER trg_3;
17270
# check trigger-12 success: 1
17272
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17273
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17274
AND f_charbig = '####updated per insert trigger####';
17276
Table Op Msg_type Msg_text
17277
test.t1 analyze note The storage engine for the table doesn't support analyze
17278
CHECK TABLE t1 EXTENDED;
17279
Table Op Msg_type Msg_text
17280
test.t1 check note The storage engine for the table doesn't support check
17281
CHECKSUM TABLE t1 EXTENDED;
17283
test.t1 <some_value>
17285
Table Op Msg_type Msg_text
17286
test.t1 optimize note The storage engine for the table doesn't support optimize
17287
# check layout success: 1
17288
REPAIR TABLE t1 EXTENDED;
17289
Table Op Msg_type Msg_text
17290
test.t1 repair note The storage engine for the table doesn't support repair
17291
# check layout success: 1
17294
# check TRUNCATE success: 1
17295
# check layout success: 1
17296
# End usability test (inc/partition_check.inc)
17303
f_charbig VARCHAR(1000)
17304
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
17306
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
17307
(PARTITION parta VALUES LESS THAN (0),
17308
PARTITION partb VALUES LESS THAN (5),
17309
PARTITION partc VALUES LESS THAN (10),
17310
PARTITION partd VALUES LESS THAN (2147483646));
17311
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17312
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
17313
# Start usability test (inc/partition_check.inc)
17315
SHOW CREATE TABLE t1;
17317
t1 CREATE TABLE `t1` (
17318
`f_int1` int(11) DEFAULT NULL,
17319
`f_int2` int(11) DEFAULT NULL,
17320
`f_char1` char(20) DEFAULT NULL,
17321
`f_char2` char(20) DEFAULT NULL,
17322
`f_charbig` varchar(1000) DEFAULT NULL,
17323
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
17324
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
17325
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1 DIV 2) SUBPARTITION BY HASH (f_int1) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
17328
$MYSQLTEST_VARDIR/master-data/test/t1.frm
17329
$MYSQLTEST_VARDIR/master-data/test/t1.par
17331
# check prerequisites-1 success: 1
17332
# check COUNT(*) success: 1
17333
# check MIN/MAX(f_int1) success: 1
17334
# check MIN/MAX(f_int2) success: 1
17335
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17336
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17337
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17338
WHERE f_int1 IN (2,3);
17339
ERROR 23000: Can't write; duplicate key in table 't1'
17340
# check prerequisites-3 success: 1
17341
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
17342
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17343
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17344
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17345
WHERE f_int1 IN (2,3);
17346
DELETE FROM t1 WHERE f_charbig = 'delete me';
17347
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17348
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17349
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17350
WHERE f_int1 IN (2,3);
17351
DELETE FROM t1 WHERE f_charbig = 'delete me';
17352
# check read via f_int1 success: 1
17353
# check read via f_int2 success: 1
17355
# check multiple-1 success: 1
17356
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17358
# check multiple-2 success: 1
17359
INSERT INTO t1 SELECT * FROM t0_template
17360
WHERE MOD(f_int1,3) = 0;
17362
# check multiple-3 success: 1
17363
UPDATE t1 SET f_int1 = f_int1 + @max_row
17364
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17365
AND @max_row_div2 + @max_row_div4;
17367
# check multiple-4 success: 1
17369
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17370
AND @max_row_div2 + @max_row_div4 + @max_row;
17372
# check multiple-5 success: 1
17373
SELECT COUNT(*) INTO @try_count FROM t0_template
17374
WHERE MOD(f_int1,3) = 0
17375
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17376
SELECT COUNT(*) INTO @clash_count
17377
FROM t1 INNER JOIN t0_template USING(f_int1)
17378
WHERE MOD(f_int1,3) = 0
17379
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17380
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17382
SET f_int1 = @cur_value , f_int2 = @cur_value,
17383
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17384
f_charbig = '#SINGLE#';
17386
# check single-1 success: 1
17387
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17389
SET f_int1 = @cur_value , f_int2 = @cur_value,
17390
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17391
f_charbig = '#SINGLE#';
17393
# check single-2 success: 1
17394
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17395
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17396
UPDATE t1 SET f_int1 = @cur_value2
17397
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17399
# check single-3 success: 1
17400
SET @cur_value1= -1;
17401
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17402
UPDATE t1 SET f_int1 = @cur_value1
17403
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17405
# check single-4 success: 1
17406
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17407
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17409
# check single-5 success: 1
17410
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17412
# check single-6 success: 1
17413
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17415
# check single-7 success: 1
17416
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17417
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17418
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17419
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17420
f_charbig = '#NULL#';
17422
SET f_int1 = NULL , f_int2 = -@max_row,
17423
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17424
f_charbig = '#NULL#';
17425
# check null success: 1
17427
# check null-1 success: 1
17428
UPDATE t1 SET f_int1 = -@max_row
17429
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17430
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17432
# check null-2 success: 1
17433
UPDATE t1 SET f_int1 = NULL
17434
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17435
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17437
# check null-3 success: 1
17439
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17440
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17442
# check null-4 success: 1
17444
WHERE f_int1 = 0 AND f_int2 = 0
17445
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17446
AND f_charbig = '#NULL#';
17447
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17448
SELECT f_int1, f_int1, '', '', 'was inserted'
17449
FROM t0_template source_tab
17450
WHERE MOD(f_int1,3) = 0
17451
AND f_int1 BETWEEN @max_row_div2 AND @max_row
17453
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
17454
f_int2 = 2 * @max_row + source_tab.f_int1,
17455
f_charbig = 'was updated';
17457
# check unique-1-a success: 1
17459
# check unique-1-b success: 1
17460
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17461
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17462
f_int2 = CAST(f_char1 AS SIGNED INT),
17463
f_charbig = CONCAT('===',f_char1,'===')
17464
WHERE f_charbig = 'was updated';
17465
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17466
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
17467
FROM t0_template source_tab
17468
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17470
# check replace success: 1
17472
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
17474
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
17475
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
17476
UPDATE t1 SET f_int2 = f_int1,
17477
f_char1 = CAST(f_int1 AS CHAR),
17478
f_char2 = CAST(f_int1 AS CHAR),
17479
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
17480
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
17482
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17483
SELECT f_int1, f_int1, '', '', 'was inserted'
17484
FROM t0_template source_tab
17485
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17487
# check transactions-1 success: 1
17490
# check transactions-2 success: 1
17493
# check transactions-3 success: 1
17494
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17498
# check transactions-4 success: 1
17499
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17500
SELECT f_int1, f_int1, '', '', 'was inserted'
17501
FROM t0_template source_tab
17502
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17504
# check transactions-5 success: 1
17507
# check transactions-6 success: 1
17508
# INFO: Storage engine used for t1 seems to be transactional.
17511
# check transactions-7 success: 1
17512
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17514
SET @@session.sql_mode = 'traditional';
17515
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17516
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17517
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17518
'', '', 'was inserted' FROM t0_template
17519
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17520
ERROR 22012: Division by 0
17523
# check transactions-8 success: 1
17524
# INFO: Storage engine used for t1 seems to be able to revert
17525
# changes made by the failing statement.
17526
SET @@session.sql_mode = '';
17528
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17530
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17532
# check special-1 success: 1
17533
UPDATE t1 SET f_charbig = '';
17535
# check special-2 success: 1
17536
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17537
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17538
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17539
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17540
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17541
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17542
'just inserted' FROM t0_template
17543
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17544
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17546
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17547
f_charbig = 'updated by trigger'
17548
WHERE f_int1 = new.f_int1;
17550
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17551
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17552
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17554
# check trigger-1 success: 1
17555
DROP TRIGGER trg_1;
17556
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17557
f_int2 = CAST(f_char1 AS SIGNED INT),
17558
f_charbig = 'just inserted'
17559
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17561
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17562
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17563
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17564
'just inserted' FROM t0_template
17565
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17566
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17568
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17569
f_charbig = 'updated by trigger'
17570
WHERE f_int1 = new.f_int1;
17572
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17573
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17574
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17576
# check trigger-2 success: 1
17577
DROP TRIGGER trg_1;
17578
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17579
f_int2 = CAST(f_char1 AS SIGNED INT),
17580
f_charbig = 'just inserted'
17581
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17583
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17584
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17585
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17586
'just inserted' FROM t0_template
17587
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17588
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17590
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17591
f_charbig = 'updated by trigger'
17592
WHERE f_int1 = new.f_int1;
17594
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17595
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17597
# check trigger-3 success: 1
17598
DROP TRIGGER trg_1;
17599
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17600
f_int2 = CAST(f_char1 AS SIGNED INT),
17601
f_charbig = 'just inserted'
17602
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17604
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17605
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17606
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17607
'just inserted' FROM t0_template
17608
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17609
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17611
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17612
f_charbig = 'updated by trigger'
17613
WHERE f_int1 = - old.f_int1;
17615
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17616
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17618
# check trigger-4 success: 1
17619
DROP TRIGGER trg_1;
17620
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17621
f_int2 = CAST(f_char1 AS SIGNED INT),
17622
f_charbig = 'just inserted'
17623
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17625
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17626
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17627
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17628
'just inserted' FROM t0_template
17629
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17630
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17632
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17633
f_charbig = 'updated by trigger'
17634
WHERE f_int1 = new.f_int1;
17636
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17637
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17639
# check trigger-5 success: 1
17640
DROP TRIGGER trg_1;
17641
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17642
f_int2 = CAST(f_char1 AS SIGNED INT),
17643
f_charbig = 'just inserted'
17644
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17646
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17647
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17648
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17649
'just inserted' FROM t0_template
17650
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17651
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17653
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17654
f_charbig = 'updated by trigger'
17655
WHERE f_int1 = - old.f_int1;
17657
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17658
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17660
# check trigger-6 success: 1
17661
DROP TRIGGER trg_1;
17662
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17663
f_int2 = CAST(f_char1 AS SIGNED INT),
17664
f_charbig = 'just inserted'
17665
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17667
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17668
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17669
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17670
'just inserted' FROM t0_template
17671
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17672
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17674
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17675
f_charbig = 'updated by trigger'
17676
WHERE f_int1 = - old.f_int1;
17679
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17681
# check trigger-7 success: 1
17682
DROP TRIGGER trg_1;
17683
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17684
f_int2 = CAST(f_char1 AS SIGNED INT),
17685
f_charbig = 'just inserted'
17686
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17688
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17689
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17690
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17691
'just inserted' FROM t0_template
17692
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17693
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17695
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17696
f_charbig = 'updated by trigger'
17697
WHERE f_int1 = - old.f_int1;
17700
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17702
# check trigger-8 success: 1
17703
DROP TRIGGER trg_1;
17704
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17705
f_int2 = CAST(f_char1 AS SIGNED INT),
17706
f_charbig = 'just inserted'
17707
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17709
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17711
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17712
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17714
SET new.f_int1 = old.f_int1 + @max_row,
17715
new.f_int2 = old.f_int2 - @max_row,
17716
new.f_charbig = '####updated per update trigger####';
17719
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17720
f_charbig = '####updated per update statement itself####';
17722
# check trigger-9 success: 1
17723
DROP TRIGGER trg_2;
17724
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17725
f_int2 = CAST(f_char1 AS SIGNED INT),
17726
f_charbig = CONCAT('===',f_char1,'===');
17727
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17729
SET new.f_int1 = new.f_int1 + @max_row,
17730
new.f_int2 = new.f_int2 - @max_row,
17731
new.f_charbig = '####updated per update trigger####';
17734
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17735
f_charbig = '####updated per update statement itself####';
17737
# check trigger-10 success: 1
17738
DROP TRIGGER trg_2;
17739
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17740
f_int2 = CAST(f_char1 AS SIGNED INT),
17741
f_charbig = CONCAT('===',f_char1,'===');
17742
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17744
SET new.f_int1 = @my_max1 + @counter,
17745
new.f_int2 = @my_min2 - @counter,
17746
new.f_charbig = '####updated per insert trigger####';
17747
SET @counter = @counter + 1;
17750
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17751
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17752
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17753
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17754
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17756
DROP TRIGGER trg_3;
17758
# check trigger-11 success: 1
17760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17761
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17762
AND f_charbig = '####updated per insert trigger####';
17763
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17765
SET new.f_int1 = @my_max1 + @counter,
17766
new.f_int2 = @my_min2 - @counter,
17767
new.f_charbig = '####updated per insert trigger####';
17768
SET @counter = @counter + 1;
17771
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17772
INSERT INTO t1 (f_char1, f_char2, f_charbig)
17773
SELECT CAST(f_int1 AS CHAR),
17774
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17775
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17777
DROP TRIGGER trg_3;
17779
# check trigger-12 success: 1
17781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17782
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17783
AND f_charbig = '####updated per insert trigger####';
17785
Table Op Msg_type Msg_text
17786
test.t1 analyze note The storage engine for the table doesn't support analyze
17787
CHECK TABLE t1 EXTENDED;
17788
Table Op Msg_type Msg_text
17789
test.t1 check note The storage engine for the table doesn't support check
17790
CHECKSUM TABLE t1 EXTENDED;
17792
test.t1 <some_value>
17794
Table Op Msg_type Msg_text
17795
test.t1 optimize note The storage engine for the table doesn't support optimize
17796
# check layout success: 1
17797
REPAIR TABLE t1 EXTENDED;
17798
Table Op Msg_type Msg_text
17799
test.t1 repair note The storage engine for the table doesn't support repair
17800
# check layout success: 1
17803
# check TRUNCATE success: 1
17804
# check layout success: 1
17805
# End usability test (inc/partition_check.inc)
17812
f_charbig VARCHAR(1000)
17813
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
17815
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
17816
(PARTITION part1 VALUES LESS THAN (0)
17817
(SUBPARTITION subpart11, SUBPARTITION subpart12),
17818
PARTITION part2 VALUES LESS THAN (5)
17819
(SUBPARTITION subpart21, SUBPARTITION subpart22),
17820
PARTITION part3 VALUES LESS THAN (10)
17821
(SUBPARTITION subpart31, SUBPARTITION subpart32),
17822
PARTITION part4 VALUES LESS THAN (2147483646)
17823
(SUBPARTITION subpart41, SUBPARTITION subpart42));
17824
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17825
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
17826
# Start usability test (inc/partition_check.inc)
17828
SHOW CREATE TABLE t1;
17830
t1 CREATE TABLE `t1` (
17831
`f_int1` int(11) DEFAULT NULL,
17832
`f_int2` int(11) DEFAULT NULL,
17833
`f_char1` char(20) DEFAULT NULL,
17834
`f_char2` char(20) DEFAULT NULL,
17835
`f_charbig` varchar(1000) DEFAULT NULL,
17836
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
17837
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
17838
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int1) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
17841
$MYSQLTEST_VARDIR/master-data/test/t1.frm
17842
$MYSQLTEST_VARDIR/master-data/test/t1.par
17844
# check prerequisites-1 success: 1
17845
# check COUNT(*) success: 1
17846
# check MIN/MAX(f_int1) success: 1
17847
# check MIN/MAX(f_int2) success: 1
17848
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17849
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17850
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17851
WHERE f_int1 IN (2,3);
17852
ERROR 23000: Can't write; duplicate key in table 't1'
17853
# check prerequisites-3 success: 1
17854
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
17855
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17856
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17857
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17858
WHERE f_int1 IN (2,3);
17859
DELETE FROM t1 WHERE f_charbig = 'delete me';
17860
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17861
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
17862
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
17863
WHERE f_int1 IN (2,3);
17864
DELETE FROM t1 WHERE f_charbig = 'delete me';
17865
# check read via f_int1 success: 1
17866
# check read via f_int2 success: 1
17868
# check multiple-1 success: 1
17869
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17871
# check multiple-2 success: 1
17872
INSERT INTO t1 SELECT * FROM t0_template
17873
WHERE MOD(f_int1,3) = 0;
17875
# check multiple-3 success: 1
17876
UPDATE t1 SET f_int1 = f_int1 + @max_row
17877
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17878
AND @max_row_div2 + @max_row_div4;
17880
# check multiple-4 success: 1
17882
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17883
AND @max_row_div2 + @max_row_div4 + @max_row;
17885
# check multiple-5 success: 1
17886
SELECT COUNT(*) INTO @try_count FROM t0_template
17887
WHERE MOD(f_int1,3) = 0
17888
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17889
SELECT COUNT(*) INTO @clash_count
17890
FROM t1 INNER JOIN t0_template USING(f_int1)
17891
WHERE MOD(f_int1,3) = 0
17892
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17893
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17895
SET f_int1 = @cur_value , f_int2 = @cur_value,
17896
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17897
f_charbig = '#SINGLE#';
17899
# check single-1 success: 1
17900
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17902
SET f_int1 = @cur_value , f_int2 = @cur_value,
17903
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17904
f_charbig = '#SINGLE#';
17906
# check single-2 success: 1
17907
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17908
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17909
UPDATE t1 SET f_int1 = @cur_value2
17910
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17912
# check single-3 success: 1
17913
SET @cur_value1= -1;
17914
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17915
UPDATE t1 SET f_int1 = @cur_value1
17916
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17918
# check single-4 success: 1
17919
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17920
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17922
# check single-5 success: 1
17923
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17925
# check single-6 success: 1
17926
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17927
ERROR HY000: Table has no partition for value 2147483647
17928
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17929
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17930
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17931
f_charbig = '#NULL#';
17933
SET f_int1 = NULL , f_int2 = -@max_row,
17934
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17935
f_charbig = '#NULL#';
17936
# check null success: 1
17938
# check null-1 success: 1
17939
UPDATE t1 SET f_int1 = -@max_row
17940
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17941
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17943
# check null-2 success: 1
17944
UPDATE t1 SET f_int1 = NULL
17945
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17946
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17948
# check null-3 success: 1
17950
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
17951
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
17953
# check null-4 success: 1
17955
WHERE f_int1 = 0 AND f_int2 = 0
17956
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17957
AND f_charbig = '#NULL#';
17958
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17959
SELECT f_int1, f_int1, '', '', 'was inserted'
17960
FROM t0_template source_tab
17961
WHERE MOD(f_int1,3) = 0
17962
AND f_int1 BETWEEN @max_row_div2 AND @max_row
17964
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
17965
f_int2 = 2 * @max_row + source_tab.f_int1,
17966
f_charbig = 'was updated';
17968
# check unique-1-a success: 1
17970
# check unique-1-b success: 1
17971
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17972
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17973
f_int2 = CAST(f_char1 AS SIGNED INT),
17974
f_charbig = CONCAT('===',f_char1,'===')
17975
WHERE f_charbig = 'was updated';
17976
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17977
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
17978
FROM t0_template source_tab
17979
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
17981
# check replace success: 1
17983
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
17985
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
17986
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
17987
UPDATE t1 SET f_int2 = f_int1,
17988
f_char1 = CAST(f_int1 AS CHAR),
17989
f_char2 = CAST(f_int1 AS CHAR),
17990
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
17991
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
17993
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17994
SELECT f_int1, f_int1, '', '', 'was inserted'
17995
FROM t0_template source_tab
17996
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17998
# check transactions-1 success: 1
18001
# check transactions-2 success: 1
18004
# check transactions-3 success: 1
18005
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18009
# check transactions-4 success: 1
18010
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18011
SELECT f_int1, f_int1, '', '', 'was inserted'
18012
FROM t0_template source_tab
18013
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18015
# check transactions-5 success: 1
18018
# check transactions-6 success: 1
18019
# INFO: Storage engine used for t1 seems to be transactional.
18022
# check transactions-7 success: 1
18023
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18025
SET @@session.sql_mode = 'traditional';
18026
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18027
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18028
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18029
'', '', 'was inserted' FROM t0_template
18030
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18031
ERROR 22012: Division by 0
18034
# check transactions-8 success: 1
18035
# INFO: Storage engine used for t1 seems to be able to revert
18036
# changes made by the failing statement.
18037
SET @@session.sql_mode = '';
18039
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18041
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18043
# check special-1 success: 1
18044
UPDATE t1 SET f_charbig = '';
18046
# check special-2 success: 1
18047
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18048
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18049
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18050
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18051
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18052
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18053
'just inserted' FROM t0_template
18054
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18055
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18057
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18058
f_charbig = 'updated by trigger'
18059
WHERE f_int1 = new.f_int1;
18061
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18062
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18063
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18065
# check trigger-1 success: 1
18066
DROP TRIGGER trg_1;
18067
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18068
f_int2 = CAST(f_char1 AS SIGNED INT),
18069
f_charbig = 'just inserted'
18070
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18072
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18073
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18074
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18075
'just inserted' FROM t0_template
18076
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18077
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18079
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18080
f_charbig = 'updated by trigger'
18081
WHERE f_int1 = new.f_int1;
18083
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18084
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18085
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18087
# check trigger-2 success: 1
18088
DROP TRIGGER trg_1;
18089
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18090
f_int2 = CAST(f_char1 AS SIGNED INT),
18091
f_charbig = 'just inserted'
18092
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18094
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18095
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18096
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18097
'just inserted' FROM t0_template
18098
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18099
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18101
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18102
f_charbig = 'updated by trigger'
18103
WHERE f_int1 = new.f_int1;
18105
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18106
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18108
# check trigger-3 success: 1
18109
DROP TRIGGER trg_1;
18110
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18111
f_int2 = CAST(f_char1 AS SIGNED INT),
18112
f_charbig = 'just inserted'
18113
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18115
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18116
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18117
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18118
'just inserted' FROM t0_template
18119
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18120
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18122
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18123
f_charbig = 'updated by trigger'
18124
WHERE f_int1 = - old.f_int1;
18126
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18127
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18129
# check trigger-4 success: 1
18130
DROP TRIGGER trg_1;
18131
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18132
f_int2 = CAST(f_char1 AS SIGNED INT),
18133
f_charbig = 'just inserted'
18134
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18136
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18137
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18138
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18139
'just inserted' FROM t0_template
18140
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18141
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18143
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18144
f_charbig = 'updated by trigger'
18145
WHERE f_int1 = new.f_int1;
18147
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18148
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18150
# check trigger-5 success: 1
18151
DROP TRIGGER trg_1;
18152
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18153
f_int2 = CAST(f_char1 AS SIGNED INT),
18154
f_charbig = 'just inserted'
18155
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18157
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18158
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18159
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18160
'just inserted' FROM t0_template
18161
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18162
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18164
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18165
f_charbig = 'updated by trigger'
18166
WHERE f_int1 = - old.f_int1;
18168
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18169
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18171
# check trigger-6 success: 1
18172
DROP TRIGGER trg_1;
18173
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18174
f_int2 = CAST(f_char1 AS SIGNED INT),
18175
f_charbig = 'just inserted'
18176
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18178
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18179
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18180
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18181
'just inserted' FROM t0_template
18182
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18183
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18185
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18186
f_charbig = 'updated by trigger'
18187
WHERE f_int1 = - old.f_int1;
18190
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18192
# check trigger-7 success: 1
18193
DROP TRIGGER trg_1;
18194
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18195
f_int2 = CAST(f_char1 AS SIGNED INT),
18196
f_charbig = 'just inserted'
18197
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18199
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18200
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18201
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18202
'just inserted' FROM t0_template
18203
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18204
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18206
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18207
f_charbig = 'updated by trigger'
18208
WHERE f_int1 = - old.f_int1;
18211
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18213
# check trigger-8 success: 1
18214
DROP TRIGGER trg_1;
18215
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18216
f_int2 = CAST(f_char1 AS SIGNED INT),
18217
f_charbig = 'just inserted'
18218
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18220
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18222
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18223
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18225
SET new.f_int1 = old.f_int1 + @max_row,
18226
new.f_int2 = old.f_int2 - @max_row,
18227
new.f_charbig = '####updated per update trigger####';
18230
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18231
f_charbig = '####updated per update statement itself####';
18233
# check trigger-9 success: 1
18234
DROP TRIGGER trg_2;
18235
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18236
f_int2 = CAST(f_char1 AS SIGNED INT),
18237
f_charbig = CONCAT('===',f_char1,'===');
18238
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18240
SET new.f_int1 = new.f_int1 + @max_row,
18241
new.f_int2 = new.f_int2 - @max_row,
18242
new.f_charbig = '####updated per update trigger####';
18245
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18246
f_charbig = '####updated per update statement itself####';
18248
# check trigger-10 success: 1
18249
DROP TRIGGER trg_2;
18250
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18251
f_int2 = CAST(f_char1 AS SIGNED INT),
18252
f_charbig = CONCAT('===',f_char1,'===');
18253
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18255
SET new.f_int1 = @my_max1 + @counter,
18256
new.f_int2 = @my_min2 - @counter,
18257
new.f_charbig = '####updated per insert trigger####';
18258
SET @counter = @counter + 1;
18261
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18262
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18263
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18264
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18265
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18267
DROP TRIGGER trg_3;
18269
# check trigger-11 success: 1
18271
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18272
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18273
AND f_charbig = '####updated per insert trigger####';
18274
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18276
SET new.f_int1 = @my_max1 + @counter,
18277
new.f_int2 = @my_min2 - @counter,
18278
new.f_charbig = '####updated per insert trigger####';
18279
SET @counter = @counter + 1;
18282
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18283
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18284
SELECT CAST(f_int1 AS CHAR),
18285
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18286
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18288
DROP TRIGGER trg_3;
18290
# check trigger-12 success: 1
18292
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18293
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18294
AND f_charbig = '####updated per insert trigger####';
18296
Table Op Msg_type Msg_text
18297
test.t1 analyze note The storage engine for the table doesn't support analyze
18298
CHECK TABLE t1 EXTENDED;
18299
Table Op Msg_type Msg_text
18300
test.t1 check note The storage engine for the table doesn't support check
18301
CHECKSUM TABLE t1 EXTENDED;
18303
test.t1 <some_value>
18305
Table Op Msg_type Msg_text
18306
test.t1 optimize note The storage engine for the table doesn't support optimize
18307
# check layout success: 1
18308
REPAIR TABLE t1 EXTENDED;
18309
Table Op Msg_type Msg_text
18310
test.t1 repair note The storage engine for the table doesn't support repair
18311
# check layout success: 1
18314
# check TRUNCATE success: 1
18315
# check layout success: 1
18316
# End usability test (inc/partition_check.inc)
18323
f_charbig VARCHAR(1000)
18324
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
18326
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
18327
(PARTITION part1 VALUES IN (0)
18328
(SUBPARTITION sp11,
18329
SUBPARTITION sp12),
18330
PARTITION part2 VALUES IN (1)
18331
(SUBPARTITION sp21,
18332
SUBPARTITION sp22),
18333
PARTITION part3 VALUES IN (2)
18334
(SUBPARTITION sp31,
18335
SUBPARTITION sp32),
18336
PARTITION part4 VALUES IN (NULL)
18337
(SUBPARTITION sp41,
18338
SUBPARTITION sp42));
18339
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18340
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
18341
# Start usability test (inc/partition_check.inc)
18343
SHOW CREATE TABLE t1;
18345
t1 CREATE TABLE `t1` (
18346
`f_int1` int(11) DEFAULT NULL,
18347
`f_int2` int(11) DEFAULT NULL,
18348
`f_char1` char(20) DEFAULT NULL,
18349
`f_char2` char(20) DEFAULT NULL,
18350
`f_charbig` varchar(1000) DEFAULT NULL,
18351
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
18352
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
18353
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int1 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
18356
$MYSQLTEST_VARDIR/master-data/test/t1.frm
18357
$MYSQLTEST_VARDIR/master-data/test/t1.par
18359
# check prerequisites-1 success: 1
18360
# check COUNT(*) success: 1
18361
# check MIN/MAX(f_int1) success: 1
18362
# check MIN/MAX(f_int2) success: 1
18363
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18364
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18365
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18366
WHERE f_int1 IN (2,3);
18367
ERROR 23000: Can't write; duplicate key in table 't1'
18368
# check prerequisites-3 success: 1
18369
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
18370
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18371
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18372
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18373
WHERE f_int1 IN (2,3);
18374
DELETE FROM t1 WHERE f_charbig = 'delete me';
18375
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18376
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18377
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18378
WHERE f_int1 IN (2,3);
18379
DELETE FROM t1 WHERE f_charbig = 'delete me';
18380
# check read via f_int1 success: 1
18381
# check read via f_int2 success: 1
18383
# check multiple-1 success: 1
18384
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18386
# check multiple-2 success: 1
18387
INSERT INTO t1 SELECT * FROM t0_template
18388
WHERE MOD(f_int1,3) = 0;
18390
# check multiple-3 success: 1
18391
UPDATE t1 SET f_int1 = f_int1 + @max_row
18392
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18393
AND @max_row_div2 + @max_row_div4;
18395
# check multiple-4 success: 1
18397
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18398
AND @max_row_div2 + @max_row_div4 + @max_row;
18400
# check multiple-5 success: 1
18401
SELECT COUNT(*) INTO @try_count FROM t0_template
18402
WHERE MOD(f_int1,3) = 0
18403
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18404
SELECT COUNT(*) INTO @clash_count
18405
FROM t1 INNER JOIN t0_template USING(f_int1)
18406
WHERE MOD(f_int1,3) = 0
18407
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18408
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18410
SET f_int1 = @cur_value , f_int2 = @cur_value,
18411
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18412
f_charbig = '#SINGLE#';
18414
# check single-1 success: 1
18415
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18417
SET f_int1 = @cur_value , f_int2 = @cur_value,
18418
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18419
f_charbig = '#SINGLE#';
18421
# check single-2 success: 1
18422
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18423
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18424
UPDATE t1 SET f_int1 = @cur_value2
18425
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18427
# check single-3 success: 1
18428
SET @cur_value1= -1;
18429
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18430
UPDATE t1 SET f_int1 = @cur_value1
18431
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18433
# check single-4 success: 1
18434
SELECT MAX(f_int1) INTO @cur_value FROM t1;
18435
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18437
# check single-5 success: 1
18438
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18440
# check single-6 success: 1
18441
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18443
# check single-7 success: 1
18444
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18445
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18446
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18447
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18448
f_charbig = '#NULL#';
18450
SET f_int1 = NULL , f_int2 = -@max_row,
18451
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18452
f_charbig = '#NULL#';
18453
# check null success: 1
18455
# check null-1 success: 1
18456
UPDATE t1 SET f_int1 = -@max_row
18457
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18458
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18460
# check null-2 success: 1
18461
UPDATE t1 SET f_int1 = NULL
18462
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18463
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18465
# check null-3 success: 1
18467
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18468
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18470
# check null-4 success: 1
18472
WHERE f_int1 = 0 AND f_int2 = 0
18473
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18474
AND f_charbig = '#NULL#';
18475
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18476
SELECT f_int1, f_int1, '', '', 'was inserted'
18477
FROM t0_template source_tab
18478
WHERE MOD(f_int1,3) = 0
18479
AND f_int1 BETWEEN @max_row_div2 AND @max_row
18481
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
18482
f_int2 = 2 * @max_row + source_tab.f_int1,
18483
f_charbig = 'was updated';
18485
# check unique-1-a success: 1
18487
# check unique-1-b success: 1
18488
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18489
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18490
f_int2 = CAST(f_char1 AS SIGNED INT),
18491
f_charbig = CONCAT('===',f_char1,'===')
18492
WHERE f_charbig = 'was updated';
18493
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18494
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
18495
FROM t0_template source_tab
18496
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18498
# check replace success: 1
18500
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
18502
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
18503
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
18504
UPDATE t1 SET f_int2 = f_int1,
18505
f_char1 = CAST(f_int1 AS CHAR),
18506
f_char2 = CAST(f_int1 AS CHAR),
18507
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
18508
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
18510
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18511
SELECT f_int1, f_int1, '', '', 'was inserted'
18512
FROM t0_template source_tab
18513
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18515
# check transactions-1 success: 1
18518
# check transactions-2 success: 1
18521
# check transactions-3 success: 1
18522
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18526
# check transactions-4 success: 1
18527
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18528
SELECT f_int1, f_int1, '', '', 'was inserted'
18529
FROM t0_template source_tab
18530
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18532
# check transactions-5 success: 1
18535
# check transactions-6 success: 1
18536
# INFO: Storage engine used for t1 seems to be transactional.
18539
# check transactions-7 success: 1
18540
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18542
SET @@session.sql_mode = 'traditional';
18543
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18544
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18545
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18546
'', '', 'was inserted' FROM t0_template
18547
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18548
ERROR 22012: Division by 0
18551
# check transactions-8 success: 1
18552
# INFO: Storage engine used for t1 seems to be able to revert
18553
# changes made by the failing statement.
18554
SET @@session.sql_mode = '';
18556
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18558
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18560
# check special-1 success: 1
18561
UPDATE t1 SET f_charbig = '';
18563
# check special-2 success: 1
18564
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18565
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18566
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18567
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18568
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18569
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18570
'just inserted' FROM t0_template
18571
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18572
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18574
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18575
f_charbig = 'updated by trigger'
18576
WHERE f_int1 = new.f_int1;
18578
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18579
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18580
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18582
# check trigger-1 success: 1
18583
DROP TRIGGER trg_1;
18584
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18585
f_int2 = CAST(f_char1 AS SIGNED INT),
18586
f_charbig = 'just inserted'
18587
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18589
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18590
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18591
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18592
'just inserted' FROM t0_template
18593
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18594
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18596
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18597
f_charbig = 'updated by trigger'
18598
WHERE f_int1 = new.f_int1;
18600
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18601
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18602
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18604
# check trigger-2 success: 1
18605
DROP TRIGGER trg_1;
18606
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18607
f_int2 = CAST(f_char1 AS SIGNED INT),
18608
f_charbig = 'just inserted'
18609
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18611
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18612
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18613
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18614
'just inserted' FROM t0_template
18615
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18616
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18618
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18619
f_charbig = 'updated by trigger'
18620
WHERE f_int1 = new.f_int1;
18622
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18623
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18625
# check trigger-3 success: 1
18626
DROP TRIGGER trg_1;
18627
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18628
f_int2 = CAST(f_char1 AS SIGNED INT),
18629
f_charbig = 'just inserted'
18630
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18632
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18633
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18634
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18635
'just inserted' FROM t0_template
18636
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18637
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18639
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18640
f_charbig = 'updated by trigger'
18641
WHERE f_int1 = - old.f_int1;
18643
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18644
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18646
# check trigger-4 success: 1
18647
DROP TRIGGER trg_1;
18648
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18649
f_int2 = CAST(f_char1 AS SIGNED INT),
18650
f_charbig = 'just inserted'
18651
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18653
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18654
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18655
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18656
'just inserted' FROM t0_template
18657
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18658
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18660
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18661
f_charbig = 'updated by trigger'
18662
WHERE f_int1 = new.f_int1;
18664
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18665
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18667
# check trigger-5 success: 1
18668
DROP TRIGGER trg_1;
18669
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18670
f_int2 = CAST(f_char1 AS SIGNED INT),
18671
f_charbig = 'just inserted'
18672
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18674
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18675
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18676
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18677
'just inserted' FROM t0_template
18678
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18679
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18681
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18682
f_charbig = 'updated by trigger'
18683
WHERE f_int1 = - old.f_int1;
18685
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18686
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18688
# check trigger-6 success: 1
18689
DROP TRIGGER trg_1;
18690
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18691
f_int2 = CAST(f_char1 AS SIGNED INT),
18692
f_charbig = 'just inserted'
18693
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18695
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18696
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18697
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18698
'just inserted' FROM t0_template
18699
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18700
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18702
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18703
f_charbig = 'updated by trigger'
18704
WHERE f_int1 = - old.f_int1;
18707
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18709
# check trigger-7 success: 1
18710
DROP TRIGGER trg_1;
18711
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18712
f_int2 = CAST(f_char1 AS SIGNED INT),
18713
f_charbig = 'just inserted'
18714
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18716
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18717
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18718
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18719
'just inserted' FROM t0_template
18720
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18721
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18723
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18724
f_charbig = 'updated by trigger'
18725
WHERE f_int1 = - old.f_int1;
18728
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18730
# check trigger-8 success: 1
18731
DROP TRIGGER trg_1;
18732
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18733
f_int2 = CAST(f_char1 AS SIGNED INT),
18734
f_charbig = 'just inserted'
18735
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18737
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18739
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18740
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18742
SET new.f_int1 = old.f_int1 + @max_row,
18743
new.f_int2 = old.f_int2 - @max_row,
18744
new.f_charbig = '####updated per update trigger####';
18747
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18748
f_charbig = '####updated per update statement itself####';
18750
# check trigger-9 success: 1
18751
DROP TRIGGER trg_2;
18752
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18753
f_int2 = CAST(f_char1 AS SIGNED INT),
18754
f_charbig = CONCAT('===',f_char1,'===');
18755
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18757
SET new.f_int1 = new.f_int1 + @max_row,
18758
new.f_int2 = new.f_int2 - @max_row,
18759
new.f_charbig = '####updated per update trigger####';
18762
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18763
f_charbig = '####updated per update statement itself####';
18765
# check trigger-10 success: 1
18766
DROP TRIGGER trg_2;
18767
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18768
f_int2 = CAST(f_char1 AS SIGNED INT),
18769
f_charbig = CONCAT('===',f_char1,'===');
18770
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18772
SET new.f_int1 = @my_max1 + @counter,
18773
new.f_int2 = @my_min2 - @counter,
18774
new.f_charbig = '####updated per insert trigger####';
18775
SET @counter = @counter + 1;
18778
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18779
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18780
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18781
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18782
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18784
DROP TRIGGER trg_3;
18786
# check trigger-11 success: 1
18788
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18789
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18790
AND f_charbig = '####updated per insert trigger####';
18791
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18793
SET new.f_int1 = @my_max1 + @counter,
18794
new.f_int2 = @my_min2 - @counter,
18795
new.f_charbig = '####updated per insert trigger####';
18796
SET @counter = @counter + 1;
18799
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18800
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18801
SELECT CAST(f_int1 AS CHAR),
18802
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18803
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18805
DROP TRIGGER trg_3;
18807
# check trigger-12 success: 1
18809
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18810
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18811
AND f_charbig = '####updated per insert trigger####';
18813
Table Op Msg_type Msg_text
18814
test.t1 analyze note The storage engine for the table doesn't support analyze
18815
CHECK TABLE t1 EXTENDED;
18816
Table Op Msg_type Msg_text
18817
test.t1 check note The storage engine for the table doesn't support check
18818
CHECKSUM TABLE t1 EXTENDED;
18820
test.t1 <some_value>
18822
Table Op Msg_type Msg_text
18823
test.t1 optimize note The storage engine for the table doesn't support optimize
18824
# check layout success: 1
18825
REPAIR TABLE t1 EXTENDED;
18826
Table Op Msg_type Msg_text
18827
test.t1 repair note The storage engine for the table doesn't support repair
18828
# check layout success: 1
18831
# check TRUNCATE success: 1
18832
# check layout success: 1
18833
# End usability test (inc/partition_check.inc)
18840
f_charbig VARCHAR(1000)
18841
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
18843
PARTITION BY LIST(ABS(MOD(f_int1,2)))
18844
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
18845
(PARTITION part1 VALUES IN (0),
18846
PARTITION part2 VALUES IN (1),
18847
PARTITION part3 VALUES IN (NULL));
18848
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18849
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
18850
# Start usability test (inc/partition_check.inc)
18852
SHOW CREATE TABLE t1;
18854
t1 CREATE TABLE `t1` (
18855
`f_int1` int(11) DEFAULT NULL,
18856
`f_int2` int(11) DEFAULT NULL,
18857
`f_char1` char(20) DEFAULT NULL,
18858
`f_char2` char(20) DEFAULT NULL,
18859
`f_charbig` varchar(1000) DEFAULT NULL,
18860
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
18861
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
18862
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int1) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
18865
$MYSQLTEST_VARDIR/master-data/test/t1.frm
18866
$MYSQLTEST_VARDIR/master-data/test/t1.par
18868
# check prerequisites-1 success: 1
18869
# check COUNT(*) success: 1
18870
# check MIN/MAX(f_int1) success: 1
18871
# check MIN/MAX(f_int2) success: 1
18872
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18873
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18874
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18875
WHERE f_int1 IN (2,3);
18876
ERROR 23000: Can't write; duplicate key in table 't1'
18877
# check prerequisites-3 success: 1
18878
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
18879
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18880
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18881
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18882
WHERE f_int1 IN (2,3);
18883
DELETE FROM t1 WHERE f_charbig = 'delete me';
18884
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18885
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
18886
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
18887
WHERE f_int1 IN (2,3);
18888
DELETE FROM t1 WHERE f_charbig = 'delete me';
18889
# check read via f_int1 success: 1
18890
# check read via f_int2 success: 1
18892
# check multiple-1 success: 1
18893
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18895
# check multiple-2 success: 1
18896
INSERT INTO t1 SELECT * FROM t0_template
18897
WHERE MOD(f_int1,3) = 0;
18899
# check multiple-3 success: 1
18900
UPDATE t1 SET f_int1 = f_int1 + @max_row
18901
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18902
AND @max_row_div2 + @max_row_div4;
18904
# check multiple-4 success: 1
18906
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18907
AND @max_row_div2 + @max_row_div4 + @max_row;
18909
# check multiple-5 success: 1
18910
SELECT COUNT(*) INTO @try_count FROM t0_template
18911
WHERE MOD(f_int1,3) = 0
18912
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18913
SELECT COUNT(*) INTO @clash_count
18914
FROM t1 INNER JOIN t0_template USING(f_int1)
18915
WHERE MOD(f_int1,3) = 0
18916
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
18917
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18919
SET f_int1 = @cur_value , f_int2 = @cur_value,
18920
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18921
f_charbig = '#SINGLE#';
18923
# check single-1 success: 1
18924
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18926
SET f_int1 = @cur_value , f_int2 = @cur_value,
18927
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18928
f_charbig = '#SINGLE#';
18930
# check single-2 success: 1
18931
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18932
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18933
UPDATE t1 SET f_int1 = @cur_value2
18934
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18936
# check single-3 success: 1
18937
SET @cur_value1= -1;
18938
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18939
UPDATE t1 SET f_int1 = @cur_value1
18940
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18942
# check single-4 success: 1
18943
SELECT MAX(f_int1) INTO @cur_value FROM t1;
18944
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18946
# check single-5 success: 1
18947
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18949
# check single-6 success: 1
18950
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18952
# check single-7 success: 1
18953
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18954
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18955
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18956
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18957
f_charbig = '#NULL#';
18959
SET f_int1 = NULL , f_int2 = -@max_row,
18960
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18961
f_charbig = '#NULL#';
18962
# check null success: 1
18964
# check null-1 success: 1
18965
UPDATE t1 SET f_int1 = -@max_row
18966
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18967
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18969
# check null-2 success: 1
18970
UPDATE t1 SET f_int1 = NULL
18971
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18972
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18974
# check null-3 success: 1
18976
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18977
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18979
# check null-4 success: 1
18981
WHERE f_int1 = 0 AND f_int2 = 0
18982
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18983
AND f_charbig = '#NULL#';
18984
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18985
SELECT f_int1, f_int1, '', '', 'was inserted'
18986
FROM t0_template source_tab
18987
WHERE MOD(f_int1,3) = 0
18988
AND f_int1 BETWEEN @max_row_div2 AND @max_row
18990
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
18991
f_int2 = 2 * @max_row + source_tab.f_int1,
18992
f_charbig = 'was updated';
18994
# check unique-1-a success: 1
18996
# check unique-1-b success: 1
18997
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18998
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18999
f_int2 = CAST(f_char1 AS SIGNED INT),
19000
f_charbig = CONCAT('===',f_char1,'===')
19001
WHERE f_charbig = 'was updated';
19002
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19003
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
19004
FROM t0_template source_tab
19005
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19007
# check replace success: 1
19009
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
19011
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
19012
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
19013
UPDATE t1 SET f_int2 = f_int1,
19014
f_char1 = CAST(f_int1 AS CHAR),
19015
f_char2 = CAST(f_int1 AS CHAR),
19016
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
19017
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
19019
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19020
SELECT f_int1, f_int1, '', '', 'was inserted'
19021
FROM t0_template source_tab
19022
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19024
# check transactions-1 success: 1
19027
# check transactions-2 success: 1
19030
# check transactions-3 success: 1
19031
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19035
# check transactions-4 success: 1
19036
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19037
SELECT f_int1, f_int1, '', '', 'was inserted'
19038
FROM t0_template source_tab
19039
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19041
# check transactions-5 success: 1
19044
# check transactions-6 success: 1
19045
# INFO: Storage engine used for t1 seems to be transactional.
19048
# check transactions-7 success: 1
19049
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19051
SET @@session.sql_mode = 'traditional';
19052
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19053
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19054
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19055
'', '', 'was inserted' FROM t0_template
19056
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19057
ERROR 22012: Division by 0
19060
# check transactions-8 success: 1
19061
# INFO: Storage engine used for t1 seems to be able to revert
19062
# changes made by the failing statement.
19063
SET @@session.sql_mode = '';
19065
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19067
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19069
# check special-1 success: 1
19070
UPDATE t1 SET f_charbig = '';
19072
# check special-2 success: 1
19073
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19074
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19075
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19076
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19077
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19078
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19079
'just inserted' FROM t0_template
19080
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19081
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19083
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19084
f_charbig = 'updated by trigger'
19085
WHERE f_int1 = new.f_int1;
19087
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19088
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19089
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19091
# check trigger-1 success: 1
19092
DROP TRIGGER trg_1;
19093
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19094
f_int2 = CAST(f_char1 AS SIGNED INT),
19095
f_charbig = 'just inserted'
19096
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19098
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19099
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19100
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19101
'just inserted' FROM t0_template
19102
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19103
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19105
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19106
f_charbig = 'updated by trigger'
19107
WHERE f_int1 = new.f_int1;
19109
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19110
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19111
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19113
# check trigger-2 success: 1
19114
DROP TRIGGER trg_1;
19115
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19116
f_int2 = CAST(f_char1 AS SIGNED INT),
19117
f_charbig = 'just inserted'
19118
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19120
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19121
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19122
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19123
'just inserted' FROM t0_template
19124
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19125
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19127
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19128
f_charbig = 'updated by trigger'
19129
WHERE f_int1 = new.f_int1;
19131
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19132
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19134
# check trigger-3 success: 1
19135
DROP TRIGGER trg_1;
19136
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19137
f_int2 = CAST(f_char1 AS SIGNED INT),
19138
f_charbig = 'just inserted'
19139
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19141
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19142
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19143
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19144
'just inserted' FROM t0_template
19145
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19146
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19148
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19149
f_charbig = 'updated by trigger'
19150
WHERE f_int1 = - old.f_int1;
19152
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19153
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19155
# check trigger-4 success: 1
19156
DROP TRIGGER trg_1;
19157
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19158
f_int2 = CAST(f_char1 AS SIGNED INT),
19159
f_charbig = 'just inserted'
19160
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19162
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19163
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19164
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19165
'just inserted' FROM t0_template
19166
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19167
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19169
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19170
f_charbig = 'updated by trigger'
19171
WHERE f_int1 = new.f_int1;
19173
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19174
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19176
# check trigger-5 success: 1
19177
DROP TRIGGER trg_1;
19178
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19179
f_int2 = CAST(f_char1 AS SIGNED INT),
19180
f_charbig = 'just inserted'
19181
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19183
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19184
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19185
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19186
'just inserted' FROM t0_template
19187
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19188
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19190
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19191
f_charbig = 'updated by trigger'
19192
WHERE f_int1 = - old.f_int1;
19194
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19195
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19197
# check trigger-6 success: 1
19198
DROP TRIGGER trg_1;
19199
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19200
f_int2 = CAST(f_char1 AS SIGNED INT),
19201
f_charbig = 'just inserted'
19202
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19204
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19205
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19206
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19207
'just inserted' FROM t0_template
19208
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19209
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19211
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19212
f_charbig = 'updated by trigger'
19213
WHERE f_int1 = - old.f_int1;
19216
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19218
# check trigger-7 success: 1
19219
DROP TRIGGER trg_1;
19220
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19221
f_int2 = CAST(f_char1 AS SIGNED INT),
19222
f_charbig = 'just inserted'
19223
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19225
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19226
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19227
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19228
'just inserted' FROM t0_template
19229
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19230
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19232
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19233
f_charbig = 'updated by trigger'
19234
WHERE f_int1 = - old.f_int1;
19237
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19239
# check trigger-8 success: 1
19240
DROP TRIGGER trg_1;
19241
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19242
f_int2 = CAST(f_char1 AS SIGNED INT),
19243
f_charbig = 'just inserted'
19244
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19246
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19248
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19249
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19251
SET new.f_int1 = old.f_int1 + @max_row,
19252
new.f_int2 = old.f_int2 - @max_row,
19253
new.f_charbig = '####updated per update trigger####';
19256
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19257
f_charbig = '####updated per update statement itself####';
19259
# check trigger-9 success: 1
19260
DROP TRIGGER trg_2;
19261
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19262
f_int2 = CAST(f_char1 AS SIGNED INT),
19263
f_charbig = CONCAT('===',f_char1,'===');
19264
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19266
SET new.f_int1 = new.f_int1 + @max_row,
19267
new.f_int2 = new.f_int2 - @max_row,
19268
new.f_charbig = '####updated per update trigger####';
19271
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19272
f_charbig = '####updated per update statement itself####';
19274
# check trigger-10 success: 1
19275
DROP TRIGGER trg_2;
19276
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19277
f_int2 = CAST(f_char1 AS SIGNED INT),
19278
f_charbig = CONCAT('===',f_char1,'===');
19279
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19281
SET new.f_int1 = @my_max1 + @counter,
19282
new.f_int2 = @my_min2 - @counter,
19283
new.f_charbig = '####updated per insert trigger####';
19284
SET @counter = @counter + 1;
19287
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19288
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19289
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19290
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19291
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19293
DROP TRIGGER trg_3;
19295
# check trigger-11 success: 1
19297
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19298
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19299
AND f_charbig = '####updated per insert trigger####';
19300
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19302
SET new.f_int1 = @my_max1 + @counter,
19303
new.f_int2 = @my_min2 - @counter,
19304
new.f_charbig = '####updated per insert trigger####';
19305
SET @counter = @counter + 1;
19308
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19309
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19310
SELECT CAST(f_int1 AS CHAR),
19311
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19312
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19314
DROP TRIGGER trg_3;
19316
# check trigger-12 success: 1
19318
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19319
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19320
AND f_charbig = '####updated per insert trigger####';
19322
Table Op Msg_type Msg_text
19323
test.t1 analyze note The storage engine for the table doesn't support analyze
19324
CHECK TABLE t1 EXTENDED;
19325
Table Op Msg_type Msg_text
19326
test.t1 check note The storage engine for the table doesn't support check
19327
CHECKSUM TABLE t1 EXTENDED;
19329
test.t1 <some_value>
19331
Table Op Msg_type Msg_text
19332
test.t1 optimize note The storage engine for the table doesn't support optimize
19333
# check layout success: 1
19334
REPAIR TABLE t1 EXTENDED;
19335
Table Op Msg_type Msg_text
19336
test.t1 repair note The storage engine for the table doesn't support repair
19337
# check layout success: 1
19340
# check TRUNCATE success: 1
19341
# check layout success: 1
19342
# End usability test (inc/partition_check.inc)
19344
#------------------------------------------------------------------------
19345
# 3 Tables with PRIMARY KEY and/or UNIQUE INDEXes
19346
# The partitioning function contains two columns.
19347
#------------------------------------------------------------------------
19348
# 3.3 PRIMARY KEY and UNIQUE INDEX consisting of two columns
19349
DROP TABLE IF EXISTS t1;
19355
f_charbig VARCHAR(1000)
19356
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
19358
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
19359
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19360
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
19361
# Start usability test (inc/partition_check.inc)
19363
SHOW CREATE TABLE t1;
19365
t1 CREATE TABLE `t1` (
19366
`f_int1` int(11) NOT NULL DEFAULT '0',
19367
`f_int2` int(11) NOT NULL DEFAULT '0',
19368
`f_char1` char(20) DEFAULT NULL,
19369
`f_char2` char(20) DEFAULT NULL,
19370
`f_charbig` varchar(1000) DEFAULT NULL,
19371
PRIMARY KEY (`f_int2`,`f_int1`),
19372
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
19373
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
19376
$MYSQLTEST_VARDIR/master-data/test/t1.frm
19377
$MYSQLTEST_VARDIR/master-data/test/t1.par
19379
# check prerequisites-1 success: 1
19380
# check COUNT(*) success: 1
19381
# check MIN/MAX(f_int1) success: 1
19382
# check MIN/MAX(f_int2) success: 1
19383
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19384
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19385
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19386
WHERE f_int1 IN (2,3);
19387
ERROR 23000: Can't write; duplicate key in table 't1'
19388
# check prerequisites-3 success: 1
19389
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
19390
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19391
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19392
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19393
WHERE f_int1 IN (2,3);
19394
DELETE FROM t1 WHERE f_charbig = 'delete me';
19395
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19396
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19397
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19398
WHERE f_int1 IN (2,3);
19399
DELETE FROM t1 WHERE f_charbig = 'delete me';
19400
# check read via f_int1 success: 1
19401
# check read via f_int2 success: 1
19403
# check multiple-1 success: 1
19404
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19406
# check multiple-2 success: 1
19407
INSERT INTO t1 SELECT * FROM t0_template
19408
WHERE MOD(f_int1,3) = 0;
19410
# check multiple-3 success: 1
19411
UPDATE t1 SET f_int1 = f_int1 + @max_row
19412
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19413
AND @max_row_div2 + @max_row_div4;
19415
# check multiple-4 success: 1
19417
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19418
AND @max_row_div2 + @max_row_div4 + @max_row;
19420
# check multiple-5 success: 1
19421
SELECT COUNT(*) INTO @try_count FROM t0_template
19422
WHERE MOD(f_int1,3) = 0
19423
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19424
SELECT COUNT(*) INTO @clash_count
19425
FROM t1 INNER JOIN t0_template USING(f_int1)
19426
WHERE MOD(f_int1,3) = 0
19427
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19428
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19430
SET f_int1 = @cur_value , f_int2 = @cur_value,
19431
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19432
f_charbig = '#SINGLE#';
19434
# check single-1 success: 1
19435
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19437
SET f_int1 = @cur_value , f_int2 = @cur_value,
19438
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19439
f_charbig = '#SINGLE#';
19441
# check single-2 success: 1
19442
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19443
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19444
UPDATE t1 SET f_int1 = @cur_value2
19445
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19447
# check single-3 success: 1
19448
SET @cur_value1= -1;
19449
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19450
UPDATE t1 SET f_int1 = @cur_value1
19451
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19453
# check single-4 success: 1
19454
SELECT MAX(f_int1) INTO @cur_value FROM t1;
19455
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19457
# check single-5 success: 1
19458
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19460
# check single-6 success: 1
19461
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19463
# check single-7 success: 1
19464
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19465
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19466
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19467
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19468
f_charbig = '#NULL#';
19470
SET f_int1 = NULL , f_int2 = -@max_row,
19471
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19472
f_charbig = '#NULL#';
19473
ERROR 23000: Column 'f_int1' cannot be null
19474
# check null success: 1
19476
WHERE f_int1 = 0 AND f_int2 = 0
19477
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19478
AND f_charbig = '#NULL#';
19479
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19480
SELECT f_int1, f_int1, '', '', 'was inserted'
19481
FROM t0_template source_tab
19482
WHERE MOD(f_int1,3) = 0
19483
AND f_int1 BETWEEN @max_row_div2 AND @max_row
19485
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
19486
f_int2 = 2 * @max_row + source_tab.f_int1,
19487
f_charbig = 'was updated';
19489
# check unique-1-a success: 1
19491
# check unique-1-b success: 1
19492
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19493
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19494
f_int2 = CAST(f_char1 AS SIGNED INT),
19495
f_charbig = CONCAT('===',f_char1,'===')
19496
WHERE f_charbig = 'was updated';
19497
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19498
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
19499
FROM t0_template source_tab
19500
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19502
# check replace success: 1
19504
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
19506
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
19507
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
19508
UPDATE t1 SET f_int2 = f_int1,
19509
f_char1 = CAST(f_int1 AS CHAR),
19510
f_char2 = CAST(f_int1 AS CHAR),
19511
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
19512
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
19514
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19515
SELECT f_int1, f_int1, '', '', 'was inserted'
19516
FROM t0_template source_tab
19517
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19519
# check transactions-1 success: 1
19522
# check transactions-2 success: 1
19525
# check transactions-3 success: 1
19526
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19530
# check transactions-4 success: 1
19531
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19532
SELECT f_int1, f_int1, '', '', 'was inserted'
19533
FROM t0_template source_tab
19534
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19536
# check transactions-5 success: 1
19539
# check transactions-6 success: 1
19540
# INFO: Storage engine used for t1 seems to be transactional.
19543
# check transactions-7 success: 1
19544
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19546
SET @@session.sql_mode = 'traditional';
19547
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19548
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19549
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19550
'', '', 'was inserted' FROM t0_template
19551
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19552
ERROR 22012: Division by 0
19555
# check transactions-8 success: 1
19556
# INFO: Storage engine used for t1 seems to be able to revert
19557
# changes made by the failing statement.
19558
SET @@session.sql_mode = '';
19560
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19562
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19564
# check special-1 success: 1
19565
UPDATE t1 SET f_charbig = '';
19567
# check special-2 success: 1
19568
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19569
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19570
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19571
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19572
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19573
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19574
'just inserted' FROM t0_template
19575
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19576
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19578
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19579
f_charbig = 'updated by trigger'
19580
WHERE f_int1 = new.f_int1;
19582
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19583
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19584
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19586
# check trigger-1 success: 1
19587
DROP TRIGGER trg_1;
19588
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19589
f_int2 = CAST(f_char1 AS SIGNED INT),
19590
f_charbig = 'just inserted'
19591
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19593
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19594
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19595
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19596
'just inserted' FROM t0_template
19597
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19598
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19600
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19601
f_charbig = 'updated by trigger'
19602
WHERE f_int1 = new.f_int1;
19604
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19605
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19606
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19608
# check trigger-2 success: 1
19609
DROP TRIGGER trg_1;
19610
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19611
f_int2 = CAST(f_char1 AS SIGNED INT),
19612
f_charbig = 'just inserted'
19613
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19615
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19616
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19617
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19618
'just inserted' FROM t0_template
19619
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19620
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19622
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19623
f_charbig = 'updated by trigger'
19624
WHERE f_int1 = new.f_int1;
19626
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19627
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19629
# check trigger-3 success: 1
19630
DROP TRIGGER trg_1;
19631
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19632
f_int2 = CAST(f_char1 AS SIGNED INT),
19633
f_charbig = 'just inserted'
19634
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19636
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19637
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19638
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19639
'just inserted' FROM t0_template
19640
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19641
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19643
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19644
f_charbig = 'updated by trigger'
19645
WHERE f_int1 = - old.f_int1;
19647
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19648
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19650
# check trigger-4 success: 1
19651
DROP TRIGGER trg_1;
19652
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19653
f_int2 = CAST(f_char1 AS SIGNED INT),
19654
f_charbig = 'just inserted'
19655
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19657
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19658
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19659
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19660
'just inserted' FROM t0_template
19661
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19662
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19664
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19665
f_charbig = 'updated by trigger'
19666
WHERE f_int1 = new.f_int1;
19668
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19669
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19671
# check trigger-5 success: 1
19672
DROP TRIGGER trg_1;
19673
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19674
f_int2 = CAST(f_char1 AS SIGNED INT),
19675
f_charbig = 'just inserted'
19676
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19678
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19679
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19680
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19681
'just inserted' FROM t0_template
19682
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19683
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19685
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19686
f_charbig = 'updated by trigger'
19687
WHERE f_int1 = - old.f_int1;
19689
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19690
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19692
# check trigger-6 success: 1
19693
DROP TRIGGER trg_1;
19694
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19695
f_int2 = CAST(f_char1 AS SIGNED INT),
19696
f_charbig = 'just inserted'
19697
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19699
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19702
'just inserted' FROM t0_template
19703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19704
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19707
f_charbig = 'updated by trigger'
19708
WHERE f_int1 = - old.f_int1;
19711
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19713
# check trigger-7 success: 1
19714
DROP TRIGGER trg_1;
19715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19716
f_int2 = CAST(f_char1 AS SIGNED INT),
19717
f_charbig = 'just inserted'
19718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19723
'just inserted' FROM t0_template
19724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19725
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19728
f_charbig = 'updated by trigger'
19729
WHERE f_int1 = - old.f_int1;
19732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19734
# check trigger-8 success: 1
19735
DROP TRIGGER trg_1;
19736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19737
f_int2 = CAST(f_char1 AS SIGNED INT),
19738
f_charbig = 'just inserted'
19739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19743
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19744
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19746
SET new.f_int1 = old.f_int1 + @max_row,
19747
new.f_int2 = old.f_int2 - @max_row,
19748
new.f_charbig = '####updated per update trigger####';
19751
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19752
f_charbig = '####updated per update statement itself####';
19754
# check trigger-9 success: 1
19755
DROP TRIGGER trg_2;
19756
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19757
f_int2 = CAST(f_char1 AS SIGNED INT),
19758
f_charbig = CONCAT('===',f_char1,'===');
19759
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19761
SET new.f_int1 = new.f_int1 + @max_row,
19762
new.f_int2 = new.f_int2 - @max_row,
19763
new.f_charbig = '####updated per update trigger####';
19766
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19767
f_charbig = '####updated per update statement itself####';
19769
# check trigger-10 success: 1
19770
DROP TRIGGER trg_2;
19771
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19772
f_int2 = CAST(f_char1 AS SIGNED INT),
19773
f_charbig = CONCAT('===',f_char1,'===');
19774
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19776
SET new.f_int1 = @my_max1 + @counter,
19777
new.f_int2 = @my_min2 - @counter,
19778
new.f_charbig = '####updated per insert trigger####';
19779
SET @counter = @counter + 1;
19782
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19783
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19784
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19785
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19786
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19788
DROP TRIGGER trg_3;
19790
# check trigger-11 success: 1
19792
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19793
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19794
AND f_charbig = '####updated per insert trigger####';
19795
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19797
SET new.f_int1 = @my_max1 + @counter,
19798
new.f_int2 = @my_min2 - @counter,
19799
new.f_charbig = '####updated per insert trigger####';
19800
SET @counter = @counter + 1;
19803
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19804
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19805
SELECT CAST(f_int1 AS CHAR),
19806
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19807
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19809
DROP TRIGGER trg_3;
19811
# check trigger-12 success: 1
19813
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19814
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19815
AND f_charbig = '####updated per insert trigger####';
19817
Table Op Msg_type Msg_text
19818
test.t1 analyze note The storage engine for the table doesn't support analyze
19819
CHECK TABLE t1 EXTENDED;
19820
Table Op Msg_type Msg_text
19821
test.t1 check note The storage engine for the table doesn't support check
19822
CHECKSUM TABLE t1 EXTENDED;
19824
test.t1 <some_value>
19826
Table Op Msg_type Msg_text
19827
test.t1 optimize note The storage engine for the table doesn't support optimize
19828
# check layout success: 1
19829
REPAIR TABLE t1 EXTENDED;
19830
Table Op Msg_type Msg_text
19831
test.t1 repair note The storage engine for the table doesn't support repair
19832
# check layout success: 1
19835
# check TRUNCATE success: 1
19836
# check layout success: 1
19837
# End usability test (inc/partition_check.inc)
19844
f_charbig VARCHAR(1000)
19845
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
19847
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
19848
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19849
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
19850
# Start usability test (inc/partition_check.inc)
19852
SHOW CREATE TABLE t1;
19854
t1 CREATE TABLE `t1` (
19855
`f_int1` int(11) NOT NULL DEFAULT '0',
19856
`f_int2` int(11) NOT NULL DEFAULT '0',
19857
`f_char1` char(20) DEFAULT NULL,
19858
`f_char2` char(20) DEFAULT NULL,
19859
`f_charbig` varchar(1000) DEFAULT NULL,
19860
PRIMARY KEY (`f_int2`,`f_int1`),
19861
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
19862
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
19865
$MYSQLTEST_VARDIR/master-data/test/t1.frm
19866
$MYSQLTEST_VARDIR/master-data/test/t1.par
19868
# check prerequisites-1 success: 1
19869
# check COUNT(*) success: 1
19870
# check MIN/MAX(f_int1) success: 1
19871
# check MIN/MAX(f_int2) success: 1
19872
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19873
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19874
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19875
WHERE f_int1 IN (2,3);
19876
ERROR 23000: Can't write; duplicate key in table 't1'
19877
# check prerequisites-3 success: 1
19878
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
19879
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19880
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19881
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19882
WHERE f_int1 IN (2,3);
19883
DELETE FROM t1 WHERE f_charbig = 'delete me';
19884
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19885
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
19886
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
19887
WHERE f_int1 IN (2,3);
19888
DELETE FROM t1 WHERE f_charbig = 'delete me';
19889
# check read via f_int1 success: 1
19890
# check read via f_int2 success: 1
19892
# check multiple-1 success: 1
19893
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19895
# check multiple-2 success: 1
19896
INSERT INTO t1 SELECT * FROM t0_template
19897
WHERE MOD(f_int1,3) = 0;
19899
# check multiple-3 success: 1
19900
UPDATE t1 SET f_int1 = f_int1 + @max_row
19901
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19902
AND @max_row_div2 + @max_row_div4;
19904
# check multiple-4 success: 1
19906
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19907
AND @max_row_div2 + @max_row_div4 + @max_row;
19909
# check multiple-5 success: 1
19910
SELECT COUNT(*) INTO @try_count FROM t0_template
19911
WHERE MOD(f_int1,3) = 0
19912
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19913
SELECT COUNT(*) INTO @clash_count
19914
FROM t1 INNER JOIN t0_template USING(f_int1)
19915
WHERE MOD(f_int1,3) = 0
19916
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19917
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19919
SET f_int1 = @cur_value , f_int2 = @cur_value,
19920
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19921
f_charbig = '#SINGLE#';
19923
# check single-1 success: 1
19924
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19926
SET f_int1 = @cur_value , f_int2 = @cur_value,
19927
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19928
f_charbig = '#SINGLE#';
19930
# check single-2 success: 1
19931
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19932
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19933
UPDATE t1 SET f_int1 = @cur_value2
19934
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19936
# check single-3 success: 1
19937
SET @cur_value1= -1;
19938
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19939
UPDATE t1 SET f_int1 = @cur_value1
19940
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19942
# check single-4 success: 1
19943
SELECT MAX(f_int1) INTO @cur_value FROM t1;
19944
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19946
# check single-5 success: 1
19947
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19949
# check single-6 success: 1
19950
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19952
# check single-7 success: 1
19953
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19954
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19955
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19956
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19957
f_charbig = '#NULL#';
19959
SET f_int1 = NULL , f_int2 = -@max_row,
19960
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19961
f_charbig = '#NULL#';
19962
ERROR 23000: Column 'f_int1' cannot be null
19963
# check null success: 1
19965
WHERE f_int1 = 0 AND f_int2 = 0
19966
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19967
AND f_charbig = '#NULL#';
19968
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19969
SELECT f_int1, f_int1, '', '', 'was inserted'
19970
FROM t0_template source_tab
19971
WHERE MOD(f_int1,3) = 0
19972
AND f_int1 BETWEEN @max_row_div2 AND @max_row
19974
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
19975
f_int2 = 2 * @max_row + source_tab.f_int1,
19976
f_charbig = 'was updated';
19978
# check unique-1-a success: 1
19980
# check unique-1-b success: 1
19981
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19982
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19983
f_int2 = CAST(f_char1 AS SIGNED INT),
19984
f_charbig = CONCAT('===',f_char1,'===')
19985
WHERE f_charbig = 'was updated';
19986
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19987
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
19988
FROM t0_template source_tab
19989
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
19991
# check replace success: 1
19993
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
19995
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
19996
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
19997
UPDATE t1 SET f_int2 = f_int1,
19998
f_char1 = CAST(f_int1 AS CHAR),
19999
f_char2 = CAST(f_int1 AS CHAR),
20000
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
20001
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
20003
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20004
SELECT f_int1, f_int1, '', '', 'was inserted'
20005
FROM t0_template source_tab
20006
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20008
# check transactions-1 success: 1
20011
# check transactions-2 success: 1
20014
# check transactions-3 success: 1
20015
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20019
# check transactions-4 success: 1
20020
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20021
SELECT f_int1, f_int1, '', '', 'was inserted'
20022
FROM t0_template source_tab
20023
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20025
# check transactions-5 success: 1
20028
# check transactions-6 success: 1
20029
# INFO: Storage engine used for t1 seems to be transactional.
20032
# check transactions-7 success: 1
20033
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20035
SET @@session.sql_mode = 'traditional';
20036
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20037
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20038
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20039
'', '', 'was inserted' FROM t0_template
20040
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20041
ERROR 22012: Division by 0
20044
# check transactions-8 success: 1
20045
# INFO: Storage engine used for t1 seems to be able to revert
20046
# changes made by the failing statement.
20047
SET @@session.sql_mode = '';
20049
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20051
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20053
# check special-1 success: 1
20054
UPDATE t1 SET f_charbig = '';
20056
# check special-2 success: 1
20057
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20058
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20059
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20060
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20061
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20062
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20063
'just inserted' FROM t0_template
20064
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20065
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20067
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20068
f_charbig = 'updated by trigger'
20069
WHERE f_int1 = new.f_int1;
20071
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20072
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20073
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20075
# check trigger-1 success: 1
20076
DROP TRIGGER trg_1;
20077
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20078
f_int2 = CAST(f_char1 AS SIGNED INT),
20079
f_charbig = 'just inserted'
20080
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20082
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20083
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20084
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20085
'just inserted' FROM t0_template
20086
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20087
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20089
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20090
f_charbig = 'updated by trigger'
20091
WHERE f_int1 = new.f_int1;
20093
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20094
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20095
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20097
# check trigger-2 success: 1
20098
DROP TRIGGER trg_1;
20099
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20100
f_int2 = CAST(f_char1 AS SIGNED INT),
20101
f_charbig = 'just inserted'
20102
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20104
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20105
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20106
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20107
'just inserted' FROM t0_template
20108
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20109
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20111
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20112
f_charbig = 'updated by trigger'
20113
WHERE f_int1 = new.f_int1;
20115
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20116
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20118
# check trigger-3 success: 1
20119
DROP TRIGGER trg_1;
20120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20121
f_int2 = CAST(f_char1 AS SIGNED INT),
20122
f_charbig = 'just inserted'
20123
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20125
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20127
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20128
'just inserted' FROM t0_template
20129
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20130
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20132
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20133
f_charbig = 'updated by trigger'
20134
WHERE f_int1 = - old.f_int1;
20136
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20137
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20139
# check trigger-4 success: 1
20140
DROP TRIGGER trg_1;
20141
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20142
f_int2 = CAST(f_char1 AS SIGNED INT),
20143
f_charbig = 'just inserted'
20144
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20146
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20147
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20148
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20149
'just inserted' FROM t0_template
20150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20151
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20153
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20154
f_charbig = 'updated by trigger'
20155
WHERE f_int1 = new.f_int1;
20157
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20158
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20160
# check trigger-5 success: 1
20161
DROP TRIGGER trg_1;
20162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20163
f_int2 = CAST(f_char1 AS SIGNED INT),
20164
f_charbig = 'just inserted'
20165
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20167
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20168
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20169
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20170
'just inserted' FROM t0_template
20171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20172
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20174
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20175
f_charbig = 'updated by trigger'
20176
WHERE f_int1 = - old.f_int1;
20178
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20179
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20181
# check trigger-6 success: 1
20182
DROP TRIGGER trg_1;
20183
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20184
f_int2 = CAST(f_char1 AS SIGNED INT),
20185
f_charbig = 'just inserted'
20186
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20188
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20189
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20190
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20191
'just inserted' FROM t0_template
20192
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20193
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20195
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20196
f_charbig = 'updated by trigger'
20197
WHERE f_int1 = - old.f_int1;
20200
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20202
# check trigger-7 success: 1
20203
DROP TRIGGER trg_1;
20204
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20205
f_int2 = CAST(f_char1 AS SIGNED INT),
20206
f_charbig = 'just inserted'
20207
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20209
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20210
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20211
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20212
'just inserted' FROM t0_template
20213
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20214
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20216
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20217
f_charbig = 'updated by trigger'
20218
WHERE f_int1 = - old.f_int1;
20221
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20223
# check trigger-8 success: 1
20224
DROP TRIGGER trg_1;
20225
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20226
f_int2 = CAST(f_char1 AS SIGNED INT),
20227
f_charbig = 'just inserted'
20228
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20230
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20232
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20233
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20235
SET new.f_int1 = old.f_int1 + @max_row,
20236
new.f_int2 = old.f_int2 - @max_row,
20237
new.f_charbig = '####updated per update trigger####';
20240
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20241
f_charbig = '####updated per update statement itself####';
20243
# check trigger-9 success: 1
20244
DROP TRIGGER trg_2;
20245
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20246
f_int2 = CAST(f_char1 AS SIGNED INT),
20247
f_charbig = CONCAT('===',f_char1,'===');
20248
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20250
SET new.f_int1 = new.f_int1 + @max_row,
20251
new.f_int2 = new.f_int2 - @max_row,
20252
new.f_charbig = '####updated per update trigger####';
20255
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20256
f_charbig = '####updated per update statement itself####';
20258
# check trigger-10 success: 1
20259
DROP TRIGGER trg_2;
20260
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20261
f_int2 = CAST(f_char1 AS SIGNED INT),
20262
f_charbig = CONCAT('===',f_char1,'===');
20263
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20265
SET new.f_int1 = @my_max1 + @counter,
20266
new.f_int2 = @my_min2 - @counter,
20267
new.f_charbig = '####updated per insert trigger####';
20268
SET @counter = @counter + 1;
20271
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20272
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20273
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20274
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20275
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20277
DROP TRIGGER trg_3;
20279
# check trigger-11 success: 1
20281
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20282
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20283
AND f_charbig = '####updated per insert trigger####';
20284
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20286
SET new.f_int1 = @my_max1 + @counter,
20287
new.f_int2 = @my_min2 - @counter,
20288
new.f_charbig = '####updated per insert trigger####';
20289
SET @counter = @counter + 1;
20292
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20293
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20294
SELECT CAST(f_int1 AS CHAR),
20295
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20298
DROP TRIGGER trg_3;
20300
# check trigger-12 success: 1
20302
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20303
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20304
AND f_charbig = '####updated per insert trigger####';
20306
Table Op Msg_type Msg_text
20307
test.t1 analyze note The storage engine for the table doesn't support analyze
20308
CHECK TABLE t1 EXTENDED;
20309
Table Op Msg_type Msg_text
20310
test.t1 check note The storage engine for the table doesn't support check
20311
CHECKSUM TABLE t1 EXTENDED;
20313
test.t1 <some_value>
20315
Table Op Msg_type Msg_text
20316
test.t1 optimize note The storage engine for the table doesn't support optimize
20317
# check layout success: 1
20318
REPAIR TABLE t1 EXTENDED;
20319
Table Op Msg_type Msg_text
20320
test.t1 repair note The storage engine for the table doesn't support repair
20321
# check layout success: 1
20324
# check TRUNCATE success: 1
20325
# check layout success: 1
20326
# End usability test (inc/partition_check.inc)
20333
f_charbig VARCHAR(1000)
20334
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
20336
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
20337
(PARTITION part_3 VALUES IN (-3),
20338
PARTITION part_2 VALUES IN (-2),
20339
PARTITION part_1 VALUES IN (-1),
20340
PARTITION part_N VALUES IN (NULL),
20341
PARTITION part0 VALUES IN (0),
20342
PARTITION part1 VALUES IN (1),
20343
PARTITION part2 VALUES IN (2),
20344
PARTITION part3 VALUES IN (3));
20345
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20346
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
20347
# Start usability test (inc/partition_check.inc)
20349
SHOW CREATE TABLE t1;
20351
t1 CREATE TABLE `t1` (
20352
`f_int1` int(11) NOT NULL DEFAULT '0',
20353
`f_int2` int(11) NOT NULL DEFAULT '0',
20354
`f_char1` char(20) DEFAULT NULL,
20355
`f_char2` char(20) DEFAULT NULL,
20356
`f_charbig` varchar(1000) DEFAULT NULL,
20357
PRIMARY KEY (`f_int2`,`f_int1`),
20358
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
20359
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
20362
$MYSQLTEST_VARDIR/master-data/test/t1.frm
20363
$MYSQLTEST_VARDIR/master-data/test/t1.par
20365
# check prerequisites-1 success: 1
20366
# check COUNT(*) success: 1
20367
# check MIN/MAX(f_int1) success: 1
20368
# check MIN/MAX(f_int2) success: 1
20369
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20370
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20371
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20372
WHERE f_int1 IN (2,3);
20373
ERROR 23000: Can't write; duplicate key in table 't1'
20374
# check prerequisites-3 success: 1
20375
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
20376
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20377
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20378
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20379
WHERE f_int1 IN (2,3);
20380
DELETE FROM t1 WHERE f_charbig = 'delete me';
20381
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20382
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20383
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20384
WHERE f_int1 IN (2,3);
20385
DELETE FROM t1 WHERE f_charbig = 'delete me';
20386
# check read via f_int1 success: 1
20387
# check read via f_int2 success: 1
20389
# check multiple-1 success: 1
20390
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20392
# check multiple-2 success: 1
20393
INSERT INTO t1 SELECT * FROM t0_template
20394
WHERE MOD(f_int1,3) = 0;
20396
# check multiple-3 success: 1
20397
UPDATE t1 SET f_int1 = f_int1 + @max_row
20398
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20399
AND @max_row_div2 + @max_row_div4;
20401
# check multiple-4 success: 1
20403
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20404
AND @max_row_div2 + @max_row_div4 + @max_row;
20406
# check multiple-5 success: 1
20407
SELECT COUNT(*) INTO @try_count FROM t0_template
20408
WHERE MOD(f_int1,3) = 0
20409
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20410
SELECT COUNT(*) INTO @clash_count
20411
FROM t1 INNER JOIN t0_template USING(f_int1)
20412
WHERE MOD(f_int1,3) = 0
20413
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20414
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20416
SET f_int1 = @cur_value , f_int2 = @cur_value,
20417
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20418
f_charbig = '#SINGLE#';
20420
# check single-1 success: 1
20421
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20423
SET f_int1 = @cur_value , f_int2 = @cur_value,
20424
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20425
f_charbig = '#SINGLE#';
20427
# check single-2 success: 1
20428
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20429
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20430
UPDATE t1 SET f_int1 = @cur_value2
20431
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20433
# check single-3 success: 1
20434
SET @cur_value1= -1;
20435
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20436
UPDATE t1 SET f_int1 = @cur_value1
20437
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20439
# check single-4 success: 1
20440
SELECT MAX(f_int1) INTO @cur_value FROM t1;
20441
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20443
# check single-5 success: 1
20444
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20446
# check single-6 success: 1
20447
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20449
# check single-7 success: 1
20450
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
20451
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20452
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20453
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20454
f_charbig = '#NULL#';
20456
SET f_int1 = NULL , f_int2 = -@max_row,
20457
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20458
f_charbig = '#NULL#';
20459
ERROR 23000: Column 'f_int1' cannot be null
20460
# check null success: 1
20462
WHERE f_int1 = 0 AND f_int2 = 0
20463
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20464
AND f_charbig = '#NULL#';
20465
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20466
SELECT f_int1, f_int1, '', '', 'was inserted'
20467
FROM t0_template source_tab
20468
WHERE MOD(f_int1,3) = 0
20469
AND f_int1 BETWEEN @max_row_div2 AND @max_row
20471
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
20472
f_int2 = 2 * @max_row + source_tab.f_int1,
20473
f_charbig = 'was updated';
20475
# check unique-1-a success: 1
20477
# check unique-1-b success: 1
20478
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20479
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20480
f_int2 = CAST(f_char1 AS SIGNED INT),
20481
f_charbig = CONCAT('===',f_char1,'===')
20482
WHERE f_charbig = 'was updated';
20483
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20484
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
20485
FROM t0_template source_tab
20486
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20488
# check replace success: 1
20490
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
20492
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
20493
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
20494
UPDATE t1 SET f_int2 = f_int1,
20495
f_char1 = CAST(f_int1 AS CHAR),
20496
f_char2 = CAST(f_int1 AS CHAR),
20497
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
20498
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
20500
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20501
SELECT f_int1, f_int1, '', '', 'was inserted'
20502
FROM t0_template source_tab
20503
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20505
# check transactions-1 success: 1
20508
# check transactions-2 success: 1
20511
# check transactions-3 success: 1
20512
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20516
# check transactions-4 success: 1
20517
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20518
SELECT f_int1, f_int1, '', '', 'was inserted'
20519
FROM t0_template source_tab
20520
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20522
# check transactions-5 success: 1
20525
# check transactions-6 success: 1
20526
# INFO: Storage engine used for t1 seems to be transactional.
20529
# check transactions-7 success: 1
20530
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20532
SET @@session.sql_mode = 'traditional';
20533
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20534
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20535
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20536
'', '', 'was inserted' FROM t0_template
20537
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20538
ERROR 22012: Division by 0
20541
# check transactions-8 success: 1
20542
# INFO: Storage engine used for t1 seems to be able to revert
20543
# changes made by the failing statement.
20544
SET @@session.sql_mode = '';
20546
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20548
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20550
# check special-1 success: 1
20551
UPDATE t1 SET f_charbig = '';
20553
# check special-2 success: 1
20554
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20555
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20556
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20557
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20558
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20559
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20560
'just inserted' FROM t0_template
20561
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20562
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20564
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20565
f_charbig = 'updated by trigger'
20566
WHERE f_int1 = new.f_int1;
20568
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20569
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20572
# check trigger-1 success: 1
20573
DROP TRIGGER trg_1;
20574
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20575
f_int2 = CAST(f_char1 AS SIGNED INT),
20576
f_charbig = 'just inserted'
20577
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20579
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20580
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20581
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20582
'just inserted' FROM t0_template
20583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20584
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20586
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20587
f_charbig = 'updated by trigger'
20588
WHERE f_int1 = new.f_int1;
20590
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20591
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20592
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20594
# check trigger-2 success: 1
20595
DROP TRIGGER trg_1;
20596
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20597
f_int2 = CAST(f_char1 AS SIGNED INT),
20598
f_charbig = 'just inserted'
20599
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20601
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20602
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20603
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20604
'just inserted' FROM t0_template
20605
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20606
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20608
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20609
f_charbig = 'updated by trigger'
20610
WHERE f_int1 = new.f_int1;
20612
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20613
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20615
# check trigger-3 success: 1
20616
DROP TRIGGER trg_1;
20617
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20618
f_int2 = CAST(f_char1 AS SIGNED INT),
20619
f_charbig = 'just inserted'
20620
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20622
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20623
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20624
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20625
'just inserted' FROM t0_template
20626
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20627
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20629
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20630
f_charbig = 'updated by trigger'
20631
WHERE f_int1 = - old.f_int1;
20633
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20634
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20636
# check trigger-4 success: 1
20637
DROP TRIGGER trg_1;
20638
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20639
f_int2 = CAST(f_char1 AS SIGNED INT),
20640
f_charbig = 'just inserted'
20641
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20643
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20644
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20645
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20646
'just inserted' FROM t0_template
20647
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20648
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20650
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20651
f_charbig = 'updated by trigger'
20652
WHERE f_int1 = new.f_int1;
20654
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20655
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20657
# check trigger-5 success: 1
20658
DROP TRIGGER trg_1;
20659
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20660
f_int2 = CAST(f_char1 AS SIGNED INT),
20661
f_charbig = 'just inserted'
20662
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20664
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20665
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20666
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20667
'just inserted' FROM t0_template
20668
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20669
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20671
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20672
f_charbig = 'updated by trigger'
20673
WHERE f_int1 = - old.f_int1;
20675
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20676
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20678
# check trigger-6 success: 1
20679
DROP TRIGGER trg_1;
20680
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20681
f_int2 = CAST(f_char1 AS SIGNED INT),
20682
f_charbig = 'just inserted'
20683
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20685
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20686
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20687
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20688
'just inserted' FROM t0_template
20689
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20690
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20692
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20693
f_charbig = 'updated by trigger'
20694
WHERE f_int1 = - old.f_int1;
20697
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20699
# check trigger-7 success: 1
20700
DROP TRIGGER trg_1;
20701
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20702
f_int2 = CAST(f_char1 AS SIGNED INT),
20703
f_charbig = 'just inserted'
20704
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20706
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20707
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20708
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20709
'just inserted' FROM t0_template
20710
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20711
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20713
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20714
f_charbig = 'updated by trigger'
20715
WHERE f_int1 = - old.f_int1;
20718
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20720
# check trigger-8 success: 1
20721
DROP TRIGGER trg_1;
20722
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20723
f_int2 = CAST(f_char1 AS SIGNED INT),
20724
f_charbig = 'just inserted'
20725
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20727
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20729
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20730
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20732
SET new.f_int1 = old.f_int1 + @max_row,
20733
new.f_int2 = old.f_int2 - @max_row,
20734
new.f_charbig = '####updated per update trigger####';
20737
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20738
f_charbig = '####updated per update statement itself####';
20740
# check trigger-9 success: 1
20741
DROP TRIGGER trg_2;
20742
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20743
f_int2 = CAST(f_char1 AS SIGNED INT),
20744
f_charbig = CONCAT('===',f_char1,'===');
20745
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20747
SET new.f_int1 = new.f_int1 + @max_row,
20748
new.f_int2 = new.f_int2 - @max_row,
20749
new.f_charbig = '####updated per update trigger####';
20752
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20753
f_charbig = '####updated per update statement itself####';
20755
# check trigger-10 success: 1
20756
DROP TRIGGER trg_2;
20757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20758
f_int2 = CAST(f_char1 AS SIGNED INT),
20759
f_charbig = CONCAT('===',f_char1,'===');
20760
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20762
SET new.f_int1 = @my_max1 + @counter,
20763
new.f_int2 = @my_min2 - @counter,
20764
new.f_charbig = '####updated per insert trigger####';
20765
SET @counter = @counter + 1;
20768
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20769
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20770
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20771
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20772
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20774
DROP TRIGGER trg_3;
20776
# check trigger-11 success: 1
20778
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20779
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20780
AND f_charbig = '####updated per insert trigger####';
20781
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20783
SET new.f_int1 = @my_max1 + @counter,
20784
new.f_int2 = @my_min2 - @counter,
20785
new.f_charbig = '####updated per insert trigger####';
20786
SET @counter = @counter + 1;
20789
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20790
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20791
SELECT CAST(f_int1 AS CHAR),
20792
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20793
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20795
DROP TRIGGER trg_3;
20797
# check trigger-12 success: 1
20799
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20800
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20801
AND f_charbig = '####updated per insert trigger####';
20803
Table Op Msg_type Msg_text
20804
test.t1 analyze note The storage engine for the table doesn't support analyze
20805
CHECK TABLE t1 EXTENDED;
20806
Table Op Msg_type Msg_text
20807
test.t1 check note The storage engine for the table doesn't support check
20808
CHECKSUM TABLE t1 EXTENDED;
20810
test.t1 <some_value>
20812
Table Op Msg_type Msg_text
20813
test.t1 optimize note The storage engine for the table doesn't support optimize
20814
# check layout success: 1
20815
REPAIR TABLE t1 EXTENDED;
20816
Table Op Msg_type Msg_text
20817
test.t1 repair note The storage engine for the table doesn't support repair
20818
# check layout success: 1
20821
# check TRUNCATE success: 1
20822
# check layout success: 1
20823
# End usability test (inc/partition_check.inc)
20830
f_charbig VARCHAR(1000)
20831
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
20833
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
20834
(PARTITION parta VALUES LESS THAN (0),
20835
PARTITION partb VALUES LESS THAN (5),
20836
PARTITION partc VALUES LESS THAN (10),
20837
PARTITION partd VALUES LESS THAN (10 + 5),
20838
PARTITION parte VALUES LESS THAN (20),
20839
PARTITION partf VALUES LESS THAN (2147483646));
20840
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20841
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
20842
# Start usability test (inc/partition_check.inc)
20844
SHOW CREATE TABLE t1;
20846
t1 CREATE TABLE `t1` (
20847
`f_int1` int(11) NOT NULL DEFAULT '0',
20848
`f_int2` int(11) NOT NULL DEFAULT '0',
20849
`f_char1` char(20) DEFAULT NULL,
20850
`f_char2` char(20) DEFAULT NULL,
20851
`f_charbig` varchar(1000) DEFAULT NULL,
20852
PRIMARY KEY (`f_int2`,`f_int1`),
20853
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
20854
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
20857
$MYSQLTEST_VARDIR/master-data/test/t1.frm
20858
$MYSQLTEST_VARDIR/master-data/test/t1.par
20860
# check prerequisites-1 success: 1
20861
# check COUNT(*) success: 1
20862
# check MIN/MAX(f_int1) success: 1
20863
# check MIN/MAX(f_int2) success: 1
20864
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20865
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20866
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20867
WHERE f_int1 IN (2,3);
20868
ERROR 23000: Can't write; duplicate key in table 't1'
20869
# check prerequisites-3 success: 1
20870
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
20871
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20872
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20873
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20874
WHERE f_int1 IN (2,3);
20875
DELETE FROM t1 WHERE f_charbig = 'delete me';
20876
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20877
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
20878
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
20879
WHERE f_int1 IN (2,3);
20880
DELETE FROM t1 WHERE f_charbig = 'delete me';
20881
# check read via f_int1 success: 1
20882
# check read via f_int2 success: 1
20884
# check multiple-1 success: 1
20885
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20887
# check multiple-2 success: 1
20888
INSERT INTO t1 SELECT * FROM t0_template
20889
WHERE MOD(f_int1,3) = 0;
20891
# check multiple-3 success: 1
20892
UPDATE t1 SET f_int1 = f_int1 + @max_row
20893
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20894
AND @max_row_div2 + @max_row_div4;
20896
# check multiple-4 success: 1
20898
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20899
AND @max_row_div2 + @max_row_div4 + @max_row;
20901
# check multiple-5 success: 1
20902
SELECT COUNT(*) INTO @try_count FROM t0_template
20903
WHERE MOD(f_int1,3) = 0
20904
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20905
SELECT COUNT(*) INTO @clash_count
20906
FROM t1 INNER JOIN t0_template USING(f_int1)
20907
WHERE MOD(f_int1,3) = 0
20908
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20909
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20911
SET f_int1 = @cur_value , f_int2 = @cur_value,
20912
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20913
f_charbig = '#SINGLE#';
20915
# check single-1 success: 1
20916
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20918
SET f_int1 = @cur_value , f_int2 = @cur_value,
20919
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20920
f_charbig = '#SINGLE#';
20922
# check single-2 success: 1
20923
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20924
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20925
UPDATE t1 SET f_int1 = @cur_value2
20926
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20928
# check single-3 success: 1
20929
SET @cur_value1= -1;
20930
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20931
UPDATE t1 SET f_int1 = @cur_value1
20932
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20934
# check single-4 success: 1
20935
SELECT MAX(f_int1) INTO @cur_value FROM t1;
20936
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20938
# check single-5 success: 1
20939
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20941
# check single-6 success: 1
20942
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20943
ERROR HY000: Table has no partition for value 2147483647
20944
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20945
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20946
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20947
f_charbig = '#NULL#';
20949
SET f_int1 = NULL , f_int2 = -@max_row,
20950
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20951
f_charbig = '#NULL#';
20952
ERROR 23000: Column 'f_int1' cannot be null
20953
# check null success: 1
20955
WHERE f_int1 = 0 AND f_int2 = 0
20956
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20957
AND f_charbig = '#NULL#';
20958
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20959
SELECT f_int1, f_int1, '', '', 'was inserted'
20960
FROM t0_template source_tab
20961
WHERE MOD(f_int1,3) = 0
20962
AND f_int1 BETWEEN @max_row_div2 AND @max_row
20964
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
20965
f_int2 = 2 * @max_row + source_tab.f_int1,
20966
f_charbig = 'was updated';
20968
# check unique-1-a success: 1
20970
# check unique-1-b success: 1
20971
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20972
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20973
f_int2 = CAST(f_char1 AS SIGNED INT),
20974
f_charbig = CONCAT('===',f_char1,'===')
20975
WHERE f_charbig = 'was updated';
20976
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20977
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
20978
FROM t0_template source_tab
20979
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
20981
# check replace success: 1
20983
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
20985
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
20986
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
20987
UPDATE t1 SET f_int2 = f_int1,
20988
f_char1 = CAST(f_int1 AS CHAR),
20989
f_char2 = CAST(f_int1 AS CHAR),
20990
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
20991
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
20993
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20994
SELECT f_int1, f_int1, '', '', 'was inserted'
20995
FROM t0_template source_tab
20996
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20998
# check transactions-1 success: 1
21001
# check transactions-2 success: 1
21004
# check transactions-3 success: 1
21005
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21009
# check transactions-4 success: 1
21010
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21011
SELECT f_int1, f_int1, '', '', 'was inserted'
21012
FROM t0_template source_tab
21013
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21015
# check transactions-5 success: 1
21018
# check transactions-6 success: 1
21019
# INFO: Storage engine used for t1 seems to be transactional.
21022
# check transactions-7 success: 1
21023
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21025
SET @@session.sql_mode = 'traditional';
21026
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21027
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21028
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21029
'', '', 'was inserted' FROM t0_template
21030
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21031
ERROR 22012: Division by 0
21034
# check transactions-8 success: 1
21035
# INFO: Storage engine used for t1 seems to be able to revert
21036
# changes made by the failing statement.
21037
SET @@session.sql_mode = '';
21039
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21041
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21043
# check special-1 success: 1
21044
UPDATE t1 SET f_charbig = '';
21046
# check special-2 success: 1
21047
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21048
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21049
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21050
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21051
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21052
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21053
'just inserted' FROM t0_template
21054
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21055
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21057
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21058
f_charbig = 'updated by trigger'
21059
WHERE f_int1 = new.f_int1;
21061
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21062
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21063
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21065
# check trigger-1 success: 1
21066
DROP TRIGGER trg_1;
21067
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21068
f_int2 = CAST(f_char1 AS SIGNED INT),
21069
f_charbig = 'just inserted'
21070
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21072
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21073
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21074
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21075
'just inserted' FROM t0_template
21076
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21077
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21079
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21080
f_charbig = 'updated by trigger'
21081
WHERE f_int1 = new.f_int1;
21083
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21084
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21085
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21087
# check trigger-2 success: 1
21088
DROP TRIGGER trg_1;
21089
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21090
f_int2 = CAST(f_char1 AS SIGNED INT),
21091
f_charbig = 'just inserted'
21092
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21094
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21095
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21096
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21097
'just inserted' FROM t0_template
21098
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21099
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21101
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21102
f_charbig = 'updated by trigger'
21103
WHERE f_int1 = new.f_int1;
21105
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21106
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21108
# check trigger-3 success: 1
21109
DROP TRIGGER trg_1;
21110
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21111
f_int2 = CAST(f_char1 AS SIGNED INT),
21112
f_charbig = 'just inserted'
21113
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21115
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21116
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21117
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21118
'just inserted' FROM t0_template
21119
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21120
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21122
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21123
f_charbig = 'updated by trigger'
21124
WHERE f_int1 = - old.f_int1;
21126
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21127
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21129
# check trigger-4 success: 1
21130
DROP TRIGGER trg_1;
21131
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21132
f_int2 = CAST(f_char1 AS SIGNED INT),
21133
f_charbig = 'just inserted'
21134
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21136
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21137
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21138
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21139
'just inserted' FROM t0_template
21140
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21141
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21143
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21144
f_charbig = 'updated by trigger'
21145
WHERE f_int1 = new.f_int1;
21147
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21148
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21150
# check trigger-5 success: 1
21151
DROP TRIGGER trg_1;
21152
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21153
f_int2 = CAST(f_char1 AS SIGNED INT),
21154
f_charbig = 'just inserted'
21155
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21157
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21158
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21159
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21160
'just inserted' FROM t0_template
21161
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21162
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21164
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21165
f_charbig = 'updated by trigger'
21166
WHERE f_int1 = - old.f_int1;
21168
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21169
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21171
# check trigger-6 success: 1
21172
DROP TRIGGER trg_1;
21173
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21174
f_int2 = CAST(f_char1 AS SIGNED INT),
21175
f_charbig = 'just inserted'
21176
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21178
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21179
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21180
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21181
'just inserted' FROM t0_template
21182
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21183
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21185
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21186
f_charbig = 'updated by trigger'
21187
WHERE f_int1 = - old.f_int1;
21190
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21192
# check trigger-7 success: 1
21193
DROP TRIGGER trg_1;
21194
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21195
f_int2 = CAST(f_char1 AS SIGNED INT),
21196
f_charbig = 'just inserted'
21197
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21199
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21200
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21201
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21202
'just inserted' FROM t0_template
21203
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21204
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21206
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21207
f_charbig = 'updated by trigger'
21208
WHERE f_int1 = - old.f_int1;
21211
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21213
# check trigger-8 success: 1
21214
DROP TRIGGER trg_1;
21215
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21216
f_int2 = CAST(f_char1 AS SIGNED INT),
21217
f_charbig = 'just inserted'
21218
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21220
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21222
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21223
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21225
SET new.f_int1 = old.f_int1 + @max_row,
21226
new.f_int2 = old.f_int2 - @max_row,
21227
new.f_charbig = '####updated per update trigger####';
21230
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21231
f_charbig = '####updated per update statement itself####';
21233
# check trigger-9 success: 1
21234
DROP TRIGGER trg_2;
21235
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21236
f_int2 = CAST(f_char1 AS SIGNED INT),
21237
f_charbig = CONCAT('===',f_char1,'===');
21238
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21240
SET new.f_int1 = new.f_int1 + @max_row,
21241
new.f_int2 = new.f_int2 - @max_row,
21242
new.f_charbig = '####updated per update trigger####';
21245
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21246
f_charbig = '####updated per update statement itself####';
21248
# check trigger-10 success: 1
21249
DROP TRIGGER trg_2;
21250
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21251
f_int2 = CAST(f_char1 AS SIGNED INT),
21252
f_charbig = CONCAT('===',f_char1,'===');
21253
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21255
SET new.f_int1 = @my_max1 + @counter,
21256
new.f_int2 = @my_min2 - @counter,
21257
new.f_charbig = '####updated per insert trigger####';
21258
SET @counter = @counter + 1;
21261
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21262
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21263
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21264
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21265
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21267
DROP TRIGGER trg_3;
21269
# check trigger-11 success: 1
21271
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21272
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21273
AND f_charbig = '####updated per insert trigger####';
21274
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21276
SET new.f_int1 = @my_max1 + @counter,
21277
new.f_int2 = @my_min2 - @counter,
21278
new.f_charbig = '####updated per insert trigger####';
21279
SET @counter = @counter + 1;
21282
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21283
INSERT INTO t1 (f_char1, f_char2, f_charbig)
21284
SELECT CAST(f_int1 AS CHAR),
21285
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21286
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21288
DROP TRIGGER trg_3;
21290
# check trigger-12 success: 1
21292
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21293
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21294
AND f_charbig = '####updated per insert trigger####';
21296
Table Op Msg_type Msg_text
21297
test.t1 analyze note The storage engine for the table doesn't support analyze
21298
CHECK TABLE t1 EXTENDED;
21299
Table Op Msg_type Msg_text
21300
test.t1 check note The storage engine for the table doesn't support check
21301
CHECKSUM TABLE t1 EXTENDED;
21303
test.t1 <some_value>
21305
Table Op Msg_type Msg_text
21306
test.t1 optimize note The storage engine for the table doesn't support optimize
21307
# check layout success: 1
21308
REPAIR TABLE t1 EXTENDED;
21309
Table Op Msg_type Msg_text
21310
test.t1 repair note The storage engine for the table doesn't support repair
21311
# check layout success: 1
21314
# check TRUNCATE success: 1
21315
# check layout success: 1
21316
# End usability test (inc/partition_check.inc)
21323
f_charbig VARCHAR(1000)
21324
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
21326
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
21327
(PARTITION parta VALUES LESS THAN (0),
21328
PARTITION partb VALUES LESS THAN (5),
21329
PARTITION partc VALUES LESS THAN (10),
21330
PARTITION partd VALUES LESS THAN (2147483646));
21331
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21332
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
21333
# Start usability test (inc/partition_check.inc)
21335
SHOW CREATE TABLE t1;
21337
t1 CREATE TABLE `t1` (
21338
`f_int1` int(11) NOT NULL DEFAULT '0',
21339
`f_int2` int(11) NOT NULL DEFAULT '0',
21340
`f_char1` char(20) DEFAULT NULL,
21341
`f_char2` char(20) DEFAULT NULL,
21342
`f_charbig` varchar(1000) DEFAULT NULL,
21343
PRIMARY KEY (`f_int2`,`f_int1`),
21344
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
21345
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
21348
$MYSQLTEST_VARDIR/master-data/test/t1.frm
21349
$MYSQLTEST_VARDIR/master-data/test/t1.par
21351
# check prerequisites-1 success: 1
21352
# check COUNT(*) success: 1
21353
# check MIN/MAX(f_int1) success: 1
21354
# check MIN/MAX(f_int2) success: 1
21355
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21356
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21357
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21358
WHERE f_int1 IN (2,3);
21359
ERROR 23000: Can't write; duplicate key in table 't1'
21360
# check prerequisites-3 success: 1
21361
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
21362
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21363
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21364
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21365
WHERE f_int1 IN (2,3);
21366
DELETE FROM t1 WHERE f_charbig = 'delete me';
21367
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21368
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21369
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21370
WHERE f_int1 IN (2,3);
21371
DELETE FROM t1 WHERE f_charbig = 'delete me';
21372
# check read via f_int1 success: 1
21373
# check read via f_int2 success: 1
21375
# check multiple-1 success: 1
21376
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21378
# check multiple-2 success: 1
21379
INSERT INTO t1 SELECT * FROM t0_template
21380
WHERE MOD(f_int1,3) = 0;
21382
# check multiple-3 success: 1
21383
UPDATE t1 SET f_int1 = f_int1 + @max_row
21384
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21385
AND @max_row_div2 + @max_row_div4;
21387
# check multiple-4 success: 1
21389
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21390
AND @max_row_div2 + @max_row_div4 + @max_row;
21392
# check multiple-5 success: 1
21393
SELECT COUNT(*) INTO @try_count FROM t0_template
21394
WHERE MOD(f_int1,3) = 0
21395
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21396
SELECT COUNT(*) INTO @clash_count
21397
FROM t1 INNER JOIN t0_template USING(f_int1)
21398
WHERE MOD(f_int1,3) = 0
21399
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21400
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21402
SET f_int1 = @cur_value , f_int2 = @cur_value,
21403
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21404
f_charbig = '#SINGLE#';
21406
# check single-1 success: 1
21407
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21409
SET f_int1 = @cur_value , f_int2 = @cur_value,
21410
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21411
f_charbig = '#SINGLE#';
21413
# check single-2 success: 1
21414
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21415
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21416
UPDATE t1 SET f_int1 = @cur_value2
21417
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21419
# check single-3 success: 1
21420
SET @cur_value1= -1;
21421
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21422
UPDATE t1 SET f_int1 = @cur_value1
21423
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21425
# check single-4 success: 1
21426
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21427
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21429
# check single-5 success: 1
21430
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21432
# check single-6 success: 1
21433
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21434
ERROR HY000: Table has no partition for value 2147483647
21435
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21436
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21437
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21438
f_charbig = '#NULL#';
21440
SET f_int1 = NULL , f_int2 = -@max_row,
21441
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21442
f_charbig = '#NULL#';
21443
ERROR 23000: Column 'f_int1' cannot be null
21444
# check null success: 1
21446
WHERE f_int1 = 0 AND f_int2 = 0
21447
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21448
AND f_charbig = '#NULL#';
21449
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21450
SELECT f_int1, f_int1, '', '', 'was inserted'
21451
FROM t0_template source_tab
21452
WHERE MOD(f_int1,3) = 0
21453
AND f_int1 BETWEEN @max_row_div2 AND @max_row
21455
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
21456
f_int2 = 2 * @max_row + source_tab.f_int1,
21457
f_charbig = 'was updated';
21459
# check unique-1-a success: 1
21461
# check unique-1-b success: 1
21462
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21463
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21464
f_int2 = CAST(f_char1 AS SIGNED INT),
21465
f_charbig = CONCAT('===',f_char1,'===')
21466
WHERE f_charbig = 'was updated';
21467
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21468
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
21469
FROM t0_template source_tab
21470
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21472
# check replace success: 1
21474
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
21476
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
21477
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
21478
UPDATE t1 SET f_int2 = f_int1,
21479
f_char1 = CAST(f_int1 AS CHAR),
21480
f_char2 = CAST(f_int1 AS CHAR),
21481
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
21482
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
21484
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21485
SELECT f_int1, f_int1, '', '', 'was inserted'
21486
FROM t0_template source_tab
21487
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21489
# check transactions-1 success: 1
21492
# check transactions-2 success: 1
21495
# check transactions-3 success: 1
21496
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21500
# check transactions-4 success: 1
21501
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21502
SELECT f_int1, f_int1, '', '', 'was inserted'
21503
FROM t0_template source_tab
21504
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21506
# check transactions-5 success: 1
21509
# check transactions-6 success: 1
21510
# INFO: Storage engine used for t1 seems to be transactional.
21513
# check transactions-7 success: 1
21514
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21516
SET @@session.sql_mode = 'traditional';
21517
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21518
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21519
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21520
'', '', 'was inserted' FROM t0_template
21521
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21522
ERROR 22012: Division by 0
21525
# check transactions-8 success: 1
21526
# INFO: Storage engine used for t1 seems to be able to revert
21527
# changes made by the failing statement.
21528
SET @@session.sql_mode = '';
21530
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21532
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21534
# check special-1 success: 1
21535
UPDATE t1 SET f_charbig = '';
21537
# check special-2 success: 1
21538
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21539
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21540
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21541
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21542
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21543
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21544
'just inserted' FROM t0_template
21545
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21546
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21548
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21549
f_charbig = 'updated by trigger'
21550
WHERE f_int1 = new.f_int1;
21552
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21553
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21554
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21556
# check trigger-1 success: 1
21557
DROP TRIGGER trg_1;
21558
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21559
f_int2 = CAST(f_char1 AS SIGNED INT),
21560
f_charbig = 'just inserted'
21561
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21563
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21564
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21565
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21566
'just inserted' FROM t0_template
21567
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21568
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21570
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21571
f_charbig = 'updated by trigger'
21572
WHERE f_int1 = new.f_int1;
21574
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21575
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21576
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21578
# check trigger-2 success: 1
21579
DROP TRIGGER trg_1;
21580
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21581
f_int2 = CAST(f_char1 AS SIGNED INT),
21582
f_charbig = 'just inserted'
21583
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21585
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21586
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21587
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21588
'just inserted' FROM t0_template
21589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21590
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21592
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21593
f_charbig = 'updated by trigger'
21594
WHERE f_int1 = new.f_int1;
21596
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21597
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21599
# check trigger-3 success: 1
21600
DROP TRIGGER trg_1;
21601
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21602
f_int2 = CAST(f_char1 AS SIGNED INT),
21603
f_charbig = 'just inserted'
21604
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21606
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21607
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21608
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21609
'just inserted' FROM t0_template
21610
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21611
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21613
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21614
f_charbig = 'updated by trigger'
21615
WHERE f_int1 = - old.f_int1;
21617
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21618
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21620
# check trigger-4 success: 1
21621
DROP TRIGGER trg_1;
21622
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21623
f_int2 = CAST(f_char1 AS SIGNED INT),
21624
f_charbig = 'just inserted'
21625
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21627
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21628
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21629
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21630
'just inserted' FROM t0_template
21631
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21632
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21634
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21635
f_charbig = 'updated by trigger'
21636
WHERE f_int1 = new.f_int1;
21638
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21639
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21641
# check trigger-5 success: 1
21642
DROP TRIGGER trg_1;
21643
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21644
f_int2 = CAST(f_char1 AS SIGNED INT),
21645
f_charbig = 'just inserted'
21646
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21648
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21649
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21650
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21651
'just inserted' FROM t0_template
21652
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21653
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21655
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21656
f_charbig = 'updated by trigger'
21657
WHERE f_int1 = - old.f_int1;
21659
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21660
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21662
# check trigger-6 success: 1
21663
DROP TRIGGER trg_1;
21664
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21665
f_int2 = CAST(f_char1 AS SIGNED INT),
21666
f_charbig = 'just inserted'
21667
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21669
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21670
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21671
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21672
'just inserted' FROM t0_template
21673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21674
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21676
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21677
f_charbig = 'updated by trigger'
21678
WHERE f_int1 = - old.f_int1;
21681
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21683
# check trigger-7 success: 1
21684
DROP TRIGGER trg_1;
21685
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21686
f_int2 = CAST(f_char1 AS SIGNED INT),
21687
f_charbig = 'just inserted'
21688
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21690
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21691
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21692
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21693
'just inserted' FROM t0_template
21694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21695
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21697
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21698
f_charbig = 'updated by trigger'
21699
WHERE f_int1 = - old.f_int1;
21702
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21704
# check trigger-8 success: 1
21705
DROP TRIGGER trg_1;
21706
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21707
f_int2 = CAST(f_char1 AS SIGNED INT),
21708
f_charbig = 'just inserted'
21709
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21711
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21713
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21714
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21716
SET new.f_int1 = old.f_int1 + @max_row,
21717
new.f_int2 = old.f_int2 - @max_row,
21718
new.f_charbig = '####updated per update trigger####';
21721
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21722
f_charbig = '####updated per update statement itself####';
21724
# check trigger-9 success: 1
21725
DROP TRIGGER trg_2;
21726
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21727
f_int2 = CAST(f_char1 AS SIGNED INT),
21728
f_charbig = CONCAT('===',f_char1,'===');
21729
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21731
SET new.f_int1 = new.f_int1 + @max_row,
21732
new.f_int2 = new.f_int2 - @max_row,
21733
new.f_charbig = '####updated per update trigger####';
21736
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21737
f_charbig = '####updated per update statement itself####';
21739
# check trigger-10 success: 1
21740
DROP TRIGGER trg_2;
21741
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21742
f_int2 = CAST(f_char1 AS SIGNED INT),
21743
f_charbig = CONCAT('===',f_char1,'===');
21744
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21746
SET new.f_int1 = @my_max1 + @counter,
21747
new.f_int2 = @my_min2 - @counter,
21748
new.f_charbig = '####updated per insert trigger####';
21749
SET @counter = @counter + 1;
21752
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21753
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21754
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21755
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21756
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21758
DROP TRIGGER trg_3;
21760
# check trigger-11 success: 1
21762
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21763
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21764
AND f_charbig = '####updated per insert trigger####';
21765
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21767
SET new.f_int1 = @my_max1 + @counter,
21768
new.f_int2 = @my_min2 - @counter,
21769
new.f_charbig = '####updated per insert trigger####';
21770
SET @counter = @counter + 1;
21773
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21774
INSERT INTO t1 (f_char1, f_char2, f_charbig)
21775
SELECT CAST(f_int1 AS CHAR),
21776
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21779
DROP TRIGGER trg_3;
21781
# check trigger-12 success: 1
21783
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21784
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21785
AND f_charbig = '####updated per insert trigger####';
21787
Table Op Msg_type Msg_text
21788
test.t1 analyze note The storage engine for the table doesn't support analyze
21789
CHECK TABLE t1 EXTENDED;
21790
Table Op Msg_type Msg_text
21791
test.t1 check note The storage engine for the table doesn't support check
21792
CHECKSUM TABLE t1 EXTENDED;
21794
test.t1 <some_value>
21796
Table Op Msg_type Msg_text
21797
test.t1 optimize note The storage engine for the table doesn't support optimize
21798
# check layout success: 1
21799
REPAIR TABLE t1 EXTENDED;
21800
Table Op Msg_type Msg_text
21801
test.t1 repair note The storage engine for the table doesn't support repair
21802
# check layout success: 1
21805
# check TRUNCATE success: 1
21806
# check layout success: 1
21807
# End usability test (inc/partition_check.inc)
21814
f_charbig VARCHAR(1000)
21815
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
21817
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
21818
(PARTITION part1 VALUES LESS THAN (0)
21819
(SUBPARTITION subpart11, SUBPARTITION subpart12),
21820
PARTITION part2 VALUES LESS THAN (5)
21821
(SUBPARTITION subpart21, SUBPARTITION subpart22),
21822
PARTITION part3 VALUES LESS THAN (10)
21823
(SUBPARTITION subpart31, SUBPARTITION subpart32),
21824
PARTITION part4 VALUES LESS THAN (2147483646)
21825
(SUBPARTITION subpart41, SUBPARTITION subpart42));
21826
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21827
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
21828
# Start usability test (inc/partition_check.inc)
21830
SHOW CREATE TABLE t1;
21832
t1 CREATE TABLE `t1` (
21833
`f_int1` int(11) NOT NULL DEFAULT '0',
21834
`f_int2` int(11) NOT NULL DEFAULT '0',
21835
`f_char1` char(20) DEFAULT NULL,
21836
`f_char2` char(20) DEFAULT NULL,
21837
`f_charbig` varchar(1000) DEFAULT NULL,
21838
PRIMARY KEY (`f_int2`,`f_int1`),
21839
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
21840
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
21843
$MYSQLTEST_VARDIR/master-data/test/t1.frm
21844
$MYSQLTEST_VARDIR/master-data/test/t1.par
21846
# check prerequisites-1 success: 1
21847
# check COUNT(*) success: 1
21848
# check MIN/MAX(f_int1) success: 1
21849
# check MIN/MAX(f_int2) success: 1
21850
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21851
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21852
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21853
WHERE f_int1 IN (2,3);
21854
ERROR 23000: Can't write; duplicate key in table 't1'
21855
# check prerequisites-3 success: 1
21856
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
21857
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21858
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21859
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21860
WHERE f_int1 IN (2,3);
21861
DELETE FROM t1 WHERE f_charbig = 'delete me';
21862
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21863
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
21864
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
21865
WHERE f_int1 IN (2,3);
21866
DELETE FROM t1 WHERE f_charbig = 'delete me';
21867
# check read via f_int1 success: 1
21868
# check read via f_int2 success: 1
21870
# check multiple-1 success: 1
21871
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21873
# check multiple-2 success: 1
21874
INSERT INTO t1 SELECT * FROM t0_template
21875
WHERE MOD(f_int1,3) = 0;
21877
# check multiple-3 success: 1
21878
UPDATE t1 SET f_int1 = f_int1 + @max_row
21879
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21880
AND @max_row_div2 + @max_row_div4;
21882
# check multiple-4 success: 1
21884
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21885
AND @max_row_div2 + @max_row_div4 + @max_row;
21887
# check multiple-5 success: 1
21888
SELECT COUNT(*) INTO @try_count FROM t0_template
21889
WHERE MOD(f_int1,3) = 0
21890
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21891
SELECT COUNT(*) INTO @clash_count
21892
FROM t1 INNER JOIN t0_template USING(f_int1)
21893
WHERE MOD(f_int1,3) = 0
21894
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21895
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21897
SET f_int1 = @cur_value , f_int2 = @cur_value,
21898
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21899
f_charbig = '#SINGLE#';
21901
# check single-1 success: 1
21902
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21904
SET f_int1 = @cur_value , f_int2 = @cur_value,
21905
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21906
f_charbig = '#SINGLE#';
21908
# check single-2 success: 1
21909
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21910
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21911
UPDATE t1 SET f_int1 = @cur_value2
21912
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21914
# check single-3 success: 1
21915
SET @cur_value1= -1;
21916
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21917
UPDATE t1 SET f_int1 = @cur_value1
21918
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21920
# check single-4 success: 1
21921
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21922
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21924
# check single-5 success: 1
21925
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21927
# check single-6 success: 1
21928
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21929
ERROR HY000: Table has no partition for value 2147483647
21930
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21931
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21932
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21933
f_charbig = '#NULL#';
21935
SET f_int1 = NULL , f_int2 = -@max_row,
21936
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21937
f_charbig = '#NULL#';
21938
ERROR 23000: Column 'f_int1' cannot be null
21939
# check null success: 1
21941
WHERE f_int1 = 0 AND f_int2 = 0
21942
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21943
AND f_charbig = '#NULL#';
21944
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21945
SELECT f_int1, f_int1, '', '', 'was inserted'
21946
FROM t0_template source_tab
21947
WHERE MOD(f_int1,3) = 0
21948
AND f_int1 BETWEEN @max_row_div2 AND @max_row
21950
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
21951
f_int2 = 2 * @max_row + source_tab.f_int1,
21952
f_charbig = 'was updated';
21954
# check unique-1-a success: 1
21956
# check unique-1-b success: 1
21957
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21958
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21959
f_int2 = CAST(f_char1 AS SIGNED INT),
21960
f_charbig = CONCAT('===',f_char1,'===')
21961
WHERE f_charbig = 'was updated';
21962
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21963
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
21964
FROM t0_template source_tab
21965
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
21967
# check replace success: 1
21969
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
21971
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
21972
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
21973
UPDATE t1 SET f_int2 = f_int1,
21974
f_char1 = CAST(f_int1 AS CHAR),
21975
f_char2 = CAST(f_int1 AS CHAR),
21976
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
21977
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
21979
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21980
SELECT f_int1, f_int1, '', '', 'was inserted'
21981
FROM t0_template source_tab
21982
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21984
# check transactions-1 success: 1
21987
# check transactions-2 success: 1
21990
# check transactions-3 success: 1
21991
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21995
# check transactions-4 success: 1
21996
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21997
SELECT f_int1, f_int1, '', '', 'was inserted'
21998
FROM t0_template source_tab
21999
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22001
# check transactions-5 success: 1
22004
# check transactions-6 success: 1
22005
# INFO: Storage engine used for t1 seems to be transactional.
22008
# check transactions-7 success: 1
22009
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22011
SET @@session.sql_mode = 'traditional';
22012
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22013
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22014
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22015
'', '', 'was inserted' FROM t0_template
22016
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22017
ERROR 22012: Division by 0
22020
# check transactions-8 success: 1
22021
# INFO: Storage engine used for t1 seems to be able to revert
22022
# changes made by the failing statement.
22023
SET @@session.sql_mode = '';
22025
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22027
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22029
# check special-1 success: 1
22030
UPDATE t1 SET f_charbig = '';
22032
# check special-2 success: 1
22033
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22034
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22035
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22036
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22037
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22038
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22039
'just inserted' FROM t0_template
22040
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22041
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22043
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22044
f_charbig = 'updated by trigger'
22045
WHERE f_int1 = new.f_int1;
22047
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22048
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22049
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22051
# check trigger-1 success: 1
22052
DROP TRIGGER trg_1;
22053
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22054
f_int2 = CAST(f_char1 AS SIGNED INT),
22055
f_charbig = 'just inserted'
22056
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22058
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22059
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22060
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22061
'just inserted' FROM t0_template
22062
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22063
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22065
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22066
f_charbig = 'updated by trigger'
22067
WHERE f_int1 = new.f_int1;
22069
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22070
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22071
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22073
# check trigger-2 success: 1
22074
DROP TRIGGER trg_1;
22075
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22076
f_int2 = CAST(f_char1 AS SIGNED INT),
22077
f_charbig = 'just inserted'
22078
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22080
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22081
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22082
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22083
'just inserted' FROM t0_template
22084
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22085
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22087
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22088
f_charbig = 'updated by trigger'
22089
WHERE f_int1 = new.f_int1;
22091
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22092
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22094
# check trigger-3 success: 1
22095
DROP TRIGGER trg_1;
22096
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22097
f_int2 = CAST(f_char1 AS SIGNED INT),
22098
f_charbig = 'just inserted'
22099
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22101
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22102
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22103
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22104
'just inserted' FROM t0_template
22105
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22106
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22108
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22109
f_charbig = 'updated by trigger'
22110
WHERE f_int1 = - old.f_int1;
22112
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22113
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22115
# check trigger-4 success: 1
22116
DROP TRIGGER trg_1;
22117
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22118
f_int2 = CAST(f_char1 AS SIGNED INT),
22119
f_charbig = 'just inserted'
22120
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22122
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22123
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22124
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22125
'just inserted' FROM t0_template
22126
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22127
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22129
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22130
f_charbig = 'updated by trigger'
22131
WHERE f_int1 = new.f_int1;
22133
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22134
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22136
# check trigger-5 success: 1
22137
DROP TRIGGER trg_1;
22138
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22139
f_int2 = CAST(f_char1 AS SIGNED INT),
22140
f_charbig = 'just inserted'
22141
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22143
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22144
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22145
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22146
'just inserted' FROM t0_template
22147
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22148
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22150
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22151
f_charbig = 'updated by trigger'
22152
WHERE f_int1 = - old.f_int1;
22154
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22155
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22157
# check trigger-6 success: 1
22158
DROP TRIGGER trg_1;
22159
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22160
f_int2 = CAST(f_char1 AS SIGNED INT),
22161
f_charbig = 'just inserted'
22162
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22164
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22165
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22166
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22167
'just inserted' FROM t0_template
22168
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22169
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22171
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22172
f_charbig = 'updated by trigger'
22173
WHERE f_int1 = - old.f_int1;
22176
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22178
# check trigger-7 success: 1
22179
DROP TRIGGER trg_1;
22180
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22181
f_int2 = CAST(f_char1 AS SIGNED INT),
22182
f_charbig = 'just inserted'
22183
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22185
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22186
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22187
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22188
'just inserted' FROM t0_template
22189
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22190
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22192
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22193
f_charbig = 'updated by trigger'
22194
WHERE f_int1 = - old.f_int1;
22197
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22199
# check trigger-8 success: 1
22200
DROP TRIGGER trg_1;
22201
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22202
f_int2 = CAST(f_char1 AS SIGNED INT),
22203
f_charbig = 'just inserted'
22204
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22206
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22208
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22209
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22211
SET new.f_int1 = old.f_int1 + @max_row,
22212
new.f_int2 = old.f_int2 - @max_row,
22213
new.f_charbig = '####updated per update trigger####';
22216
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22217
f_charbig = '####updated per update statement itself####';
22219
# check trigger-9 success: 1
22220
DROP TRIGGER trg_2;
22221
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22222
f_int2 = CAST(f_char1 AS SIGNED INT),
22223
f_charbig = CONCAT('===',f_char1,'===');
22224
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22226
SET new.f_int1 = new.f_int1 + @max_row,
22227
new.f_int2 = new.f_int2 - @max_row,
22228
new.f_charbig = '####updated per update trigger####';
22231
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22232
f_charbig = '####updated per update statement itself####';
22234
# check trigger-10 success: 1
22235
DROP TRIGGER trg_2;
22236
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22237
f_int2 = CAST(f_char1 AS SIGNED INT),
22238
f_charbig = CONCAT('===',f_char1,'===');
22239
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22241
SET new.f_int1 = @my_max1 + @counter,
22242
new.f_int2 = @my_min2 - @counter,
22243
new.f_charbig = '####updated per insert trigger####';
22244
SET @counter = @counter + 1;
22247
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22248
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22249
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22250
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22251
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22253
DROP TRIGGER trg_3;
22255
# check trigger-11 success: 1
22257
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22258
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22259
AND f_charbig = '####updated per insert trigger####';
22260
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22262
SET new.f_int1 = @my_max1 + @counter,
22263
new.f_int2 = @my_min2 - @counter,
22264
new.f_charbig = '####updated per insert trigger####';
22265
SET @counter = @counter + 1;
22268
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22269
INSERT INTO t1 (f_char1, f_char2, f_charbig)
22270
SELECT CAST(f_int1 AS CHAR),
22271
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22272
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22274
DROP TRIGGER trg_3;
22276
# check trigger-12 success: 1
22278
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22279
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22280
AND f_charbig = '####updated per insert trigger####';
22282
Table Op Msg_type Msg_text
22283
test.t1 analyze note The storage engine for the table doesn't support analyze
22284
CHECK TABLE t1 EXTENDED;
22285
Table Op Msg_type Msg_text
22286
test.t1 check note The storage engine for the table doesn't support check
22287
CHECKSUM TABLE t1 EXTENDED;
22289
test.t1 <some_value>
22291
Table Op Msg_type Msg_text
22292
test.t1 optimize note The storage engine for the table doesn't support optimize
22293
# check layout success: 1
22294
REPAIR TABLE t1 EXTENDED;
22295
Table Op Msg_type Msg_text
22296
test.t1 repair note The storage engine for the table doesn't support repair
22297
# check layout success: 1
22300
# check TRUNCATE success: 1
22301
# check layout success: 1
22302
# End usability test (inc/partition_check.inc)
22309
f_charbig VARCHAR(1000)
22310
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
22312
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
22313
(PARTITION part1 VALUES IN (0)
22314
(SUBPARTITION sp11, SUBPARTITION sp12),
22315
PARTITION part2 VALUES IN (1)
22316
(SUBPARTITION sp21, SUBPARTITION sp22),
22317
PARTITION part3 VALUES IN (2)
22318
(SUBPARTITION sp31, SUBPARTITION sp32),
22319
PARTITION part4 VALUES IN (NULL)
22320
(SUBPARTITION sp41, SUBPARTITION sp42));
22321
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22322
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
22323
# Start usability test (inc/partition_check.inc)
22325
SHOW CREATE TABLE t1;
22327
t1 CREATE TABLE `t1` (
22328
`f_int1` int(11) NOT NULL DEFAULT '0',
22329
`f_int2` int(11) NOT NULL DEFAULT '0',
22330
`f_char1` char(20) DEFAULT NULL,
22331
`f_char2` char(20) DEFAULT NULL,
22332
`f_charbig` varchar(1000) DEFAULT NULL,
22333
PRIMARY KEY (`f_int2`,`f_int1`),
22334
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
22335
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
22338
$MYSQLTEST_VARDIR/master-data/test/t1.frm
22339
$MYSQLTEST_VARDIR/master-data/test/t1.par
22341
# check prerequisites-1 success: 1
22342
# check COUNT(*) success: 1
22343
# check MIN/MAX(f_int1) success: 1
22344
# check MIN/MAX(f_int2) success: 1
22345
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22346
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22347
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22348
WHERE f_int1 IN (2,3);
22349
ERROR 23000: Can't write; duplicate key in table 't1'
22350
# check prerequisites-3 success: 1
22351
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
22352
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22353
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
22354
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
22355
WHERE f_int1 IN (2,3);
22356
DELETE FROM t1 WHERE f_charbig = 'delete me';
22357
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22358
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
22359
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
22360
WHERE f_int1 IN (2,3);
22361
DELETE FROM t1 WHERE f_charbig = 'delete me';
22362
# check read via f_int1 success: 1
22363
# check read via f_int2 success: 1
22365
# check multiple-1 success: 1
22366
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22368
# check multiple-2 success: 1
22369
INSERT INTO t1 SELECT * FROM t0_template
22370
WHERE MOD(f_int1,3) = 0;
22372
# check multiple-3 success: 1
22373
UPDATE t1 SET f_int1 = f_int1 + @max_row
22374
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22375
AND @max_row_div2 + @max_row_div4;
22377
# check multiple-4 success: 1
22379
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22380
AND @max_row_div2 + @max_row_div4 + @max_row;
22382
# check multiple-5 success: 1
22383
SELECT COUNT(*) INTO @try_count FROM t0_template
22384
WHERE MOD(f_int1,3) = 0
22385
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22386
SELECT COUNT(*) INTO @clash_count
22387
FROM t1 INNER JOIN t0_template USING(f_int1)
22388
WHERE MOD(f_int1,3) = 0
22389
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22390
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22392
SET f_int1 = @cur_value , f_int2 = @cur_value,
22393
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22394
f_charbig = '#SINGLE#';
22396
# check single-1 success: 1
22397
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22399
SET f_int1 = @cur_value , f_int2 = @cur_value,
22400
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22401
f_charbig = '#SINGLE#';
22403
# check single-2 success: 1
22404
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22405
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22406
UPDATE t1 SET f_int1 = @cur_value2
22407
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22409
# check single-3 success: 1
22410
SET @cur_value1= -1;
22411
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22412
UPDATE t1 SET f_int1 = @cur_value1
22413
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22415
# check single-4 success: 1
22416
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22417
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22419
# check single-5 success: 1
22420
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22422
# check single-6 success: 1
22423
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22425
# check single-7 success: 1
22426
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22427
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22428
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22429
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22430
f_charbig = '#NULL#';
22432
SET f_int1 = NULL , f_int2 = -@max_row,
22433
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22434
f_charbig = '#NULL#';
22435
ERROR 23000: Column 'f_int1' cannot be null
22436
# check null success: 1
22438
WHERE f_int1 = 0 AND f_int2 = 0
22439
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22440
AND f_charbig = '#NULL#';
22441
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22442
SELECT f_int1, f_int1, '', '', 'was inserted'
22443
FROM t0_template source_tab
22444
WHERE MOD(f_int1,3) = 0
22445
AND f_int1 BETWEEN @max_row_div2 AND @max_row
22447
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
22448
f_int2 = 2 * @max_row + source_tab.f_int1,
22449
f_charbig = 'was updated';
22451
# check unique-1-a success: 1
22453
# check unique-1-b success: 1
22454
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22455
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22456
f_int2 = CAST(f_char1 AS SIGNED INT),
22457
f_charbig = CONCAT('===',f_char1,'===')
22458
WHERE f_charbig = 'was updated';
22459
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22460
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
22461
FROM t0_template source_tab
22462
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22464
# check replace success: 1
22466
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
22468
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
22469
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
22470
UPDATE t1 SET f_int2 = f_int1,
22471
f_char1 = CAST(f_int1 AS CHAR),
22472
f_char2 = CAST(f_int1 AS CHAR),
22473
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
22474
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
22476
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22477
SELECT f_int1, f_int1, '', '', 'was inserted'
22478
FROM t0_template source_tab
22479
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22481
# check transactions-1 success: 1
22484
# check transactions-2 success: 1
22487
# check transactions-3 success: 1
22488
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22492
# check transactions-4 success: 1
22493
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22494
SELECT f_int1, f_int1, '', '', 'was inserted'
22495
FROM t0_template source_tab
22496
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22498
# check transactions-5 success: 1
22501
# check transactions-6 success: 1
22502
# INFO: Storage engine used for t1 seems to be transactional.
22505
# check transactions-7 success: 1
22506
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22508
SET @@session.sql_mode = 'traditional';
22509
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22510
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22511
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22512
'', '', 'was inserted' FROM t0_template
22513
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22514
ERROR 22012: Division by 0
22517
# check transactions-8 success: 1
22518
# INFO: Storage engine used for t1 seems to be able to revert
22519
# changes made by the failing statement.
22520
SET @@session.sql_mode = '';
22522
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22524
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22526
# check special-1 success: 1
22527
UPDATE t1 SET f_charbig = '';
22529
# check special-2 success: 1
22530
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22531
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22532
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22533
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22534
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22535
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22536
'just inserted' FROM t0_template
22537
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22538
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22540
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22541
f_charbig = 'updated by trigger'
22542
WHERE f_int1 = new.f_int1;
22544
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22545
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22546
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22548
# check trigger-1 success: 1
22549
DROP TRIGGER trg_1;
22550
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22551
f_int2 = CAST(f_char1 AS SIGNED INT),
22552
f_charbig = 'just inserted'
22553
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22555
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22556
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22557
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22558
'just inserted' FROM t0_template
22559
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22560
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22562
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22563
f_charbig = 'updated by trigger'
22564
WHERE f_int1 = new.f_int1;
22566
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22567
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22568
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22570
# check trigger-2 success: 1
22571
DROP TRIGGER trg_1;
22572
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22573
f_int2 = CAST(f_char1 AS SIGNED INT),
22574
f_charbig = 'just inserted'
22575
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22577
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22578
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22579
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22580
'just inserted' FROM t0_template
22581
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22582
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22584
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22585
f_charbig = 'updated by trigger'
22586
WHERE f_int1 = new.f_int1;
22588
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22589
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22591
# check trigger-3 success: 1
22592
DROP TRIGGER trg_1;
22593
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22594
f_int2 = CAST(f_char1 AS SIGNED INT),
22595
f_charbig = 'just inserted'
22596
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22598
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22599
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22600
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22601
'just inserted' FROM t0_template
22602
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22603
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22605
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22606
f_charbig = 'updated by trigger'
22607
WHERE f_int1 = - old.f_int1;
22609
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22610
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22612
# check trigger-4 success: 1
22613
DROP TRIGGER trg_1;
22614
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22615
f_int2 = CAST(f_char1 AS SIGNED INT),
22616
f_charbig = 'just inserted'
22617
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22619
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22620
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22621
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22622
'just inserted' FROM t0_template
22623
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22624
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22626
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22627
f_charbig = 'updated by trigger'
22628
WHERE f_int1 = new.f_int1;
22630
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22631
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22633
# check trigger-5 success: 1
22634
DROP TRIGGER trg_1;
22635
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22636
f_int2 = CAST(f_char1 AS SIGNED INT),
22637
f_charbig = 'just inserted'
22638
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22640
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22641
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22642
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22643
'just inserted' FROM t0_template
22644
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22645
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22647
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22648
f_charbig = 'updated by trigger'
22649
WHERE f_int1 = - old.f_int1;
22651
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22652
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22654
# check trigger-6 success: 1
22655
DROP TRIGGER trg_1;
22656
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22657
f_int2 = CAST(f_char1 AS SIGNED INT),
22658
f_charbig = 'just inserted'
22659
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22661
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22662
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22663
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22664
'just inserted' FROM t0_template
22665
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22666
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22668
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22669
f_charbig = 'updated by trigger'
22670
WHERE f_int1 = - old.f_int1;
22673
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22675
# check trigger-7 success: 1
22676
DROP TRIGGER trg_1;
22677
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22678
f_int2 = CAST(f_char1 AS SIGNED INT),
22679
f_charbig = 'just inserted'
22680
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22682
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22683
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22684
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22685
'just inserted' FROM t0_template
22686
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22687
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22689
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22690
f_charbig = 'updated by trigger'
22691
WHERE f_int1 = - old.f_int1;
22694
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22696
# check trigger-8 success: 1
22697
DROP TRIGGER trg_1;
22698
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22699
f_int2 = CAST(f_char1 AS SIGNED INT),
22700
f_charbig = 'just inserted'
22701
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22703
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22705
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22706
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22708
SET new.f_int1 = old.f_int1 + @max_row,
22709
new.f_int2 = old.f_int2 - @max_row,
22710
new.f_charbig = '####updated per update trigger####';
22713
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22714
f_charbig = '####updated per update statement itself####';
22716
# check trigger-9 success: 1
22717
DROP TRIGGER trg_2;
22718
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22719
f_int2 = CAST(f_char1 AS SIGNED INT),
22720
f_charbig = CONCAT('===',f_char1,'===');
22721
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22723
SET new.f_int1 = new.f_int1 + @max_row,
22724
new.f_int2 = new.f_int2 - @max_row,
22725
new.f_charbig = '####updated per update trigger####';
22728
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22729
f_charbig = '####updated per update statement itself####';
22731
# check trigger-10 success: 1
22732
DROP TRIGGER trg_2;
22733
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22734
f_int2 = CAST(f_char1 AS SIGNED INT),
22735
f_charbig = CONCAT('===',f_char1,'===');
22736
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22738
SET new.f_int1 = @my_max1 + @counter,
22739
new.f_int2 = @my_min2 - @counter,
22740
new.f_charbig = '####updated per insert trigger####';
22741
SET @counter = @counter + 1;
22744
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22745
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22746
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22747
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22748
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22750
DROP TRIGGER trg_3;
22752
# check trigger-11 success: 1
22754
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22755
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22756
AND f_charbig = '####updated per insert trigger####';
22757
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22759
SET new.f_int1 = @my_max1 + @counter,
22760
new.f_int2 = @my_min2 - @counter,
22761
new.f_charbig = '####updated per insert trigger####';
22762
SET @counter = @counter + 1;
22765
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22766
INSERT INTO t1 (f_char1, f_char2, f_charbig)
22767
SELECT CAST(f_int1 AS CHAR),
22768
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22769
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22771
DROP TRIGGER trg_3;
22773
# check trigger-12 success: 1
22775
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22776
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22777
AND f_charbig = '####updated per insert trigger####';
22779
Table Op Msg_type Msg_text
22780
test.t1 analyze note The storage engine for the table doesn't support analyze
22781
CHECK TABLE t1 EXTENDED;
22782
Table Op Msg_type Msg_text
22783
test.t1 check note The storage engine for the table doesn't support check
22784
CHECKSUM TABLE t1 EXTENDED;
22786
test.t1 <some_value>
22788
Table Op Msg_type Msg_text
22789
test.t1 optimize note The storage engine for the table doesn't support optimize
22790
# check layout success: 1
22791
REPAIR TABLE t1 EXTENDED;
22792
Table Op Msg_type Msg_text
22793
test.t1 repair note The storage engine for the table doesn't support repair
22794
# check layout success: 1
22797
# check TRUNCATE success: 1
22798
# check layout success: 1
22799
# End usability test (inc/partition_check.inc)
22806
f_charbig VARCHAR(1000)
22807
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
22809
PARTITION BY LIST(ABS(MOD(f_int1,2)))
22810
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
22811
(PARTITION part1 VALUES IN (0),
22812
PARTITION part2 VALUES IN (1),
22813
PARTITION part3 VALUES IN (NULL));
22814
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22815
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
22816
# Start usability test (inc/partition_check.inc)
22818
SHOW CREATE TABLE t1;
22820
t1 CREATE TABLE `t1` (
22821
`f_int1` int(11) NOT NULL DEFAULT '0',
22822
`f_int2` int(11) NOT NULL DEFAULT '0',
22823
`f_char1` char(20) DEFAULT NULL,
22824
`f_char2` char(20) DEFAULT NULL,
22825
`f_charbig` varchar(1000) DEFAULT NULL,
22826
PRIMARY KEY (`f_int2`,`f_int1`),
22827
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`)
22828
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
22831
$MYSQLTEST_VARDIR/master-data/test/t1.frm
22832
$MYSQLTEST_VARDIR/master-data/test/t1.par
22834
# check prerequisites-1 success: 1
22835
# check COUNT(*) success: 1
22836
# check MIN/MAX(f_int1) success: 1
22837
# check MIN/MAX(f_int2) success: 1
22838
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22839
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22840
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22841
WHERE f_int1 IN (2,3);
22842
ERROR 23000: Can't write; duplicate key in table 't1'
22843
# check prerequisites-3 success: 1
22844
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
22845
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22846
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
22847
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
22848
WHERE f_int1 IN (2,3);
22849
DELETE FROM t1 WHERE f_charbig = 'delete me';
22850
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22851
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
22852
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
22853
WHERE f_int1 IN (2,3);
22854
DELETE FROM t1 WHERE f_charbig = 'delete me';
22855
# check read via f_int1 success: 1
22856
# check read via f_int2 success: 1
22858
# check multiple-1 success: 1
22859
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22861
# check multiple-2 success: 1
22862
INSERT INTO t1 SELECT * FROM t0_template
22863
WHERE MOD(f_int1,3) = 0;
22865
# check multiple-3 success: 1
22866
UPDATE t1 SET f_int1 = f_int1 + @max_row
22867
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22868
AND @max_row_div2 + @max_row_div4;
22870
# check multiple-4 success: 1
22872
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22873
AND @max_row_div2 + @max_row_div4 + @max_row;
22875
# check multiple-5 success: 1
22876
SELECT COUNT(*) INTO @try_count FROM t0_template
22877
WHERE MOD(f_int1,3) = 0
22878
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22879
SELECT COUNT(*) INTO @clash_count
22880
FROM t1 INNER JOIN t0_template USING(f_int1)
22881
WHERE MOD(f_int1,3) = 0
22882
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22883
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22885
SET f_int1 = @cur_value , f_int2 = @cur_value,
22886
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22887
f_charbig = '#SINGLE#';
22889
# check single-1 success: 1
22890
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22892
SET f_int1 = @cur_value , f_int2 = @cur_value,
22893
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22894
f_charbig = '#SINGLE#';
22896
# check single-2 success: 1
22897
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22898
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22899
UPDATE t1 SET f_int1 = @cur_value2
22900
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22902
# check single-3 success: 1
22903
SET @cur_value1= -1;
22904
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22905
UPDATE t1 SET f_int1 = @cur_value1
22906
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22908
# check single-4 success: 1
22909
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22910
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22912
# check single-5 success: 1
22913
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22915
# check single-6 success: 1
22916
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22918
# check single-7 success: 1
22919
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22920
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22921
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22922
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22923
f_charbig = '#NULL#';
22925
SET f_int1 = NULL , f_int2 = -@max_row,
22926
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22927
f_charbig = '#NULL#';
22928
ERROR 23000: Column 'f_int1' cannot be null
22929
# check null success: 1
22931
WHERE f_int1 = 0 AND f_int2 = 0
22932
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22933
AND f_charbig = '#NULL#';
22934
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22935
SELECT f_int1, f_int1, '', '', 'was inserted'
22936
FROM t0_template source_tab
22937
WHERE MOD(f_int1,3) = 0
22938
AND f_int1 BETWEEN @max_row_div2 AND @max_row
22940
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
22941
f_int2 = 2 * @max_row + source_tab.f_int1,
22942
f_charbig = 'was updated';
22944
# check unique-1-a success: 1
22946
# check unique-1-b success: 1
22947
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22948
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22949
f_int2 = CAST(f_char1 AS SIGNED INT),
22950
f_charbig = CONCAT('===',f_char1,'===')
22951
WHERE f_charbig = 'was updated';
22952
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22953
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
22954
FROM t0_template source_tab
22955
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
22957
# check replace success: 1
22959
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
22961
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
22962
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
22963
UPDATE t1 SET f_int2 = f_int1,
22964
f_char1 = CAST(f_int1 AS CHAR),
22965
f_char2 = CAST(f_int1 AS CHAR),
22966
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
22967
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
22969
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22970
SELECT f_int1, f_int1, '', '', 'was inserted'
22971
FROM t0_template source_tab
22972
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22974
# check transactions-1 success: 1
22977
# check transactions-2 success: 1
22980
# check transactions-3 success: 1
22981
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22985
# check transactions-4 success: 1
22986
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22987
SELECT f_int1, f_int1, '', '', 'was inserted'
22988
FROM t0_template source_tab
22989
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22991
# check transactions-5 success: 1
22994
# check transactions-6 success: 1
22995
# INFO: Storage engine used for t1 seems to be transactional.
22998
# check transactions-7 success: 1
22999
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23001
SET @@session.sql_mode = 'traditional';
23002
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23003
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23004
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23005
'', '', 'was inserted' FROM t0_template
23006
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23007
ERROR 22012: Division by 0
23010
# check transactions-8 success: 1
23011
# INFO: Storage engine used for t1 seems to be able to revert
23012
# changes made by the failing statement.
23013
SET @@session.sql_mode = '';
23015
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23017
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23019
# check special-1 success: 1
23020
UPDATE t1 SET f_charbig = '';
23022
# check special-2 success: 1
23023
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23024
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23025
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23026
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23027
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23028
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23029
'just inserted' FROM t0_template
23030
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23031
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23033
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23034
f_charbig = 'updated by trigger'
23035
WHERE f_int1 = new.f_int1;
23037
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23038
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23041
# check trigger-1 success: 1
23042
DROP TRIGGER trg_1;
23043
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23044
f_int2 = CAST(f_char1 AS SIGNED INT),
23045
f_charbig = 'just inserted'
23046
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23048
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23049
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23050
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23051
'just inserted' FROM t0_template
23052
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23053
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23055
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23056
f_charbig = 'updated by trigger'
23057
WHERE f_int1 = new.f_int1;
23059
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23060
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23061
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23063
# check trigger-2 success: 1
23064
DROP TRIGGER trg_1;
23065
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23066
f_int2 = CAST(f_char1 AS SIGNED INT),
23067
f_charbig = 'just inserted'
23068
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23070
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23071
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23072
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23073
'just inserted' FROM t0_template
23074
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23075
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23077
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23078
f_charbig = 'updated by trigger'
23079
WHERE f_int1 = new.f_int1;
23081
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23082
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23084
# check trigger-3 success: 1
23085
DROP TRIGGER trg_1;
23086
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23087
f_int2 = CAST(f_char1 AS SIGNED INT),
23088
f_charbig = 'just inserted'
23089
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23091
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23092
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23093
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23094
'just inserted' FROM t0_template
23095
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23096
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23098
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23099
f_charbig = 'updated by trigger'
23100
WHERE f_int1 = - old.f_int1;
23102
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23103
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23105
# check trigger-4 success: 1
23106
DROP TRIGGER trg_1;
23107
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23108
f_int2 = CAST(f_char1 AS SIGNED INT),
23109
f_charbig = 'just inserted'
23110
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23112
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23113
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23114
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23115
'just inserted' FROM t0_template
23116
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23117
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23119
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23120
f_charbig = 'updated by trigger'
23121
WHERE f_int1 = new.f_int1;
23123
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23124
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23126
# check trigger-5 success: 1
23127
DROP TRIGGER trg_1;
23128
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23129
f_int2 = CAST(f_char1 AS SIGNED INT),
23130
f_charbig = 'just inserted'
23131
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23133
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23134
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23135
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23136
'just inserted' FROM t0_template
23137
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23138
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23140
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23141
f_charbig = 'updated by trigger'
23142
WHERE f_int1 = - old.f_int1;
23144
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23145
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23147
# check trigger-6 success: 1
23148
DROP TRIGGER trg_1;
23149
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23150
f_int2 = CAST(f_char1 AS SIGNED INT),
23151
f_charbig = 'just inserted'
23152
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23154
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23155
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23156
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23157
'just inserted' FROM t0_template
23158
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23159
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23161
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23162
f_charbig = 'updated by trigger'
23163
WHERE f_int1 = - old.f_int1;
23166
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23168
# check trigger-7 success: 1
23169
DROP TRIGGER trg_1;
23170
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23171
f_int2 = CAST(f_char1 AS SIGNED INT),
23172
f_charbig = 'just inserted'
23173
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23175
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23176
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23177
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23178
'just inserted' FROM t0_template
23179
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23180
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23182
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23183
f_charbig = 'updated by trigger'
23184
WHERE f_int1 = - old.f_int1;
23187
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23189
# check trigger-8 success: 1
23190
DROP TRIGGER trg_1;
23191
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23192
f_int2 = CAST(f_char1 AS SIGNED INT),
23193
f_charbig = 'just inserted'
23194
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23196
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23198
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23199
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23201
SET new.f_int1 = old.f_int1 + @max_row,
23202
new.f_int2 = old.f_int2 - @max_row,
23203
new.f_charbig = '####updated per update trigger####';
23206
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23207
f_charbig = '####updated per update statement itself####';
23209
# check trigger-9 success: 1
23210
DROP TRIGGER trg_2;
23211
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23212
f_int2 = CAST(f_char1 AS SIGNED INT),
23213
f_charbig = CONCAT('===',f_char1,'===');
23214
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23216
SET new.f_int1 = new.f_int1 + @max_row,
23217
new.f_int2 = new.f_int2 - @max_row,
23218
new.f_charbig = '####updated per update trigger####';
23221
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23222
f_charbig = '####updated per update statement itself####';
23224
# check trigger-10 success: 1
23225
DROP TRIGGER trg_2;
23226
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23227
f_int2 = CAST(f_char1 AS SIGNED INT),
23228
f_charbig = CONCAT('===',f_char1,'===');
23229
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23231
SET new.f_int1 = @my_max1 + @counter,
23232
new.f_int2 = @my_min2 - @counter,
23233
new.f_charbig = '####updated per insert trigger####';
23234
SET @counter = @counter + 1;
23237
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23238
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23239
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23240
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23241
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23243
DROP TRIGGER trg_3;
23245
# check trigger-11 success: 1
23247
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23248
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23249
AND f_charbig = '####updated per insert trigger####';
23250
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23252
SET new.f_int1 = @my_max1 + @counter,
23253
new.f_int2 = @my_min2 - @counter,
23254
new.f_charbig = '####updated per insert trigger####';
23255
SET @counter = @counter + 1;
23258
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23259
INSERT INTO t1 (f_char1, f_char2, f_charbig)
23260
SELECT CAST(f_int1 AS CHAR),
23261
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23262
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23264
DROP TRIGGER trg_3;
23266
# check trigger-12 success: 1
23268
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23269
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23270
AND f_charbig = '####updated per insert trigger####';
23272
Table Op Msg_type Msg_text
23273
test.t1 analyze note The storage engine for the table doesn't support analyze
23274
CHECK TABLE t1 EXTENDED;
23275
Table Op Msg_type Msg_text
23276
test.t1 check note The storage engine for the table doesn't support check
23277
CHECKSUM TABLE t1 EXTENDED;
23279
test.t1 <some_value>
23281
Table Op Msg_type Msg_text
23282
test.t1 optimize note The storage engine for the table doesn't support optimize
23283
# check layout success: 1
23284
REPAIR TABLE t1 EXTENDED;
23285
Table Op Msg_type Msg_text
23286
test.t1 repair note The storage engine for the table doesn't support repair
23287
# check layout success: 1
23290
# check TRUNCATE success: 1
23291
# check layout success: 1
23292
# End usability test (inc/partition_check.inc)
23294
DROP TABLE IF EXISTS t1;
23300
f_charbig VARCHAR(1000)
23301
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
23303
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
23304
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23305
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
23306
# Start usability test (inc/partition_check.inc)
23308
SHOW CREATE TABLE t1;
23310
t1 CREATE TABLE `t1` (
23311
`f_int1` int(11) NOT NULL DEFAULT '0',
23312
`f_int2` int(11) NOT NULL DEFAULT '0',
23313
`f_char1` char(20) DEFAULT NULL,
23314
`f_char2` char(20) DEFAULT NULL,
23315
`f_charbig` varchar(1000) DEFAULT NULL,
23316
PRIMARY KEY (`f_int1`,`f_int2`),
23317
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
23318
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
23321
$MYSQLTEST_VARDIR/master-data/test/t1.frm
23322
$MYSQLTEST_VARDIR/master-data/test/t1.par
23324
# check prerequisites-1 success: 1
23325
# check COUNT(*) success: 1
23326
# check MIN/MAX(f_int1) success: 1
23327
# check MIN/MAX(f_int2) success: 1
23328
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23329
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23330
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23331
WHERE f_int1 IN (2,3);
23332
ERROR 23000: Can't write; duplicate key in table 't1'
23333
# check prerequisites-3 success: 1
23334
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
23335
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23336
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
23337
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
23338
WHERE f_int1 IN (2,3);
23339
DELETE FROM t1 WHERE f_charbig = 'delete me';
23340
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23341
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
23342
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
23343
WHERE f_int1 IN (2,3);
23344
DELETE FROM t1 WHERE f_charbig = 'delete me';
23345
# check read via f_int1 success: 1
23346
# check read via f_int2 success: 1
23348
# check multiple-1 success: 1
23349
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23351
# check multiple-2 success: 1
23352
INSERT INTO t1 SELECT * FROM t0_template
23353
WHERE MOD(f_int1,3) = 0;
23355
# check multiple-3 success: 1
23356
UPDATE t1 SET f_int1 = f_int1 + @max_row
23357
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23358
AND @max_row_div2 + @max_row_div4;
23360
# check multiple-4 success: 1
23362
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23363
AND @max_row_div2 + @max_row_div4 + @max_row;
23365
# check multiple-5 success: 1
23366
SELECT COUNT(*) INTO @try_count FROM t0_template
23367
WHERE MOD(f_int1,3) = 0
23368
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23369
SELECT COUNT(*) INTO @clash_count
23370
FROM t1 INNER JOIN t0_template USING(f_int1)
23371
WHERE MOD(f_int1,3) = 0
23372
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23373
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23375
SET f_int1 = @cur_value , f_int2 = @cur_value,
23376
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23377
f_charbig = '#SINGLE#';
23379
# check single-1 success: 1
23380
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23382
SET f_int1 = @cur_value , f_int2 = @cur_value,
23383
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23384
f_charbig = '#SINGLE#';
23386
# check single-2 success: 1
23387
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23388
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23389
UPDATE t1 SET f_int1 = @cur_value2
23390
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23392
# check single-3 success: 1
23393
SET @cur_value1= -1;
23394
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23395
UPDATE t1 SET f_int1 = @cur_value1
23396
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23398
# check single-4 success: 1
23399
SELECT MAX(f_int1) INTO @cur_value FROM t1;
23400
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23402
# check single-5 success: 1
23403
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23405
# check single-6 success: 1
23406
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23408
# check single-7 success: 1
23409
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
23410
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23411
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23412
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23413
f_charbig = '#NULL#';
23415
SET f_int1 = NULL , f_int2 = -@max_row,
23416
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23417
f_charbig = '#NULL#';
23418
ERROR 23000: Column 'f_int1' cannot be null
23419
# check null success: 1
23421
WHERE f_int1 = 0 AND f_int2 = 0
23422
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23423
AND f_charbig = '#NULL#';
23424
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23425
SELECT f_int1, f_int1, '', '', 'was inserted'
23426
FROM t0_template source_tab
23427
WHERE MOD(f_int1,3) = 0
23428
AND f_int1 BETWEEN @max_row_div2 AND @max_row
23430
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
23431
f_int2 = 2 * @max_row + source_tab.f_int1,
23432
f_charbig = 'was updated';
23434
# check unique-1-a success: 1
23436
# check unique-1-b success: 1
23437
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23438
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23439
f_int2 = CAST(f_char1 AS SIGNED INT),
23440
f_charbig = CONCAT('===',f_char1,'===')
23441
WHERE f_charbig = 'was updated';
23442
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23443
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
23444
FROM t0_template source_tab
23445
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23447
# check replace success: 1
23449
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
23451
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
23452
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
23453
UPDATE t1 SET f_int2 = f_int1,
23454
f_char1 = CAST(f_int1 AS CHAR),
23455
f_char2 = CAST(f_int1 AS CHAR),
23456
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
23457
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
23459
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23460
SELECT f_int1, f_int1, '', '', 'was inserted'
23461
FROM t0_template source_tab
23462
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23464
# check transactions-1 success: 1
23467
# check transactions-2 success: 1
23470
# check transactions-3 success: 1
23471
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23475
# check transactions-4 success: 1
23476
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23477
SELECT f_int1, f_int1, '', '', 'was inserted'
23478
FROM t0_template source_tab
23479
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23481
# check transactions-5 success: 1
23484
# check transactions-6 success: 1
23485
# INFO: Storage engine used for t1 seems to be transactional.
23488
# check transactions-7 success: 1
23489
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23491
SET @@session.sql_mode = 'traditional';
23492
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23493
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23494
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23495
'', '', 'was inserted' FROM t0_template
23496
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23497
ERROR 22012: Division by 0
23500
# check transactions-8 success: 1
23501
# INFO: Storage engine used for t1 seems to be able to revert
23502
# changes made by the failing statement.
23503
SET @@session.sql_mode = '';
23505
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23507
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23509
# check special-1 success: 1
23510
UPDATE t1 SET f_charbig = '';
23512
# check special-2 success: 1
23513
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23514
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23515
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23516
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23517
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23518
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23519
'just inserted' FROM t0_template
23520
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23521
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23523
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23524
f_charbig = 'updated by trigger'
23525
WHERE f_int1 = new.f_int1;
23527
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23528
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23529
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23531
# check trigger-1 success: 1
23532
DROP TRIGGER trg_1;
23533
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23534
f_int2 = CAST(f_char1 AS SIGNED INT),
23535
f_charbig = 'just inserted'
23536
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23538
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23539
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23540
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23541
'just inserted' FROM t0_template
23542
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23543
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23545
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23546
f_charbig = 'updated by trigger'
23547
WHERE f_int1 = new.f_int1;
23549
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23550
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23551
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23553
# check trigger-2 success: 1
23554
DROP TRIGGER trg_1;
23555
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23556
f_int2 = CAST(f_char1 AS SIGNED INT),
23557
f_charbig = 'just inserted'
23558
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23560
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23561
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23562
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23563
'just inserted' FROM t0_template
23564
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23565
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23567
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23568
f_charbig = 'updated by trigger'
23569
WHERE f_int1 = new.f_int1;
23571
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23572
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23574
# check trigger-3 success: 1
23575
DROP TRIGGER trg_1;
23576
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23577
f_int2 = CAST(f_char1 AS SIGNED INT),
23578
f_charbig = 'just inserted'
23579
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23581
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23582
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23583
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23584
'just inserted' FROM t0_template
23585
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23586
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23588
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23589
f_charbig = 'updated by trigger'
23590
WHERE f_int1 = - old.f_int1;
23592
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23593
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23595
# check trigger-4 success: 1
23596
DROP TRIGGER trg_1;
23597
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23598
f_int2 = CAST(f_char1 AS SIGNED INT),
23599
f_charbig = 'just inserted'
23600
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23602
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23603
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23604
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23605
'just inserted' FROM t0_template
23606
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23607
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23609
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23610
f_charbig = 'updated by trigger'
23611
WHERE f_int1 = new.f_int1;
23613
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23614
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23616
# check trigger-5 success: 1
23617
DROP TRIGGER trg_1;
23618
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23619
f_int2 = CAST(f_char1 AS SIGNED INT),
23620
f_charbig = 'just inserted'
23621
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23623
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23624
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23625
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23626
'just inserted' FROM t0_template
23627
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23628
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23630
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23631
f_charbig = 'updated by trigger'
23632
WHERE f_int1 = - old.f_int1;
23634
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23635
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23637
# check trigger-6 success: 1
23638
DROP TRIGGER trg_1;
23639
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23640
f_int2 = CAST(f_char1 AS SIGNED INT),
23641
f_charbig = 'just inserted'
23642
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23644
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23645
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23646
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23647
'just inserted' FROM t0_template
23648
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23649
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23651
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23652
f_charbig = 'updated by trigger'
23653
WHERE f_int1 = - old.f_int1;
23656
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23658
# check trigger-7 success: 1
23659
DROP TRIGGER trg_1;
23660
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23661
f_int2 = CAST(f_char1 AS SIGNED INT),
23662
f_charbig = 'just inserted'
23663
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23665
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23666
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23667
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23668
'just inserted' FROM t0_template
23669
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23670
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23672
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23673
f_charbig = 'updated by trigger'
23674
WHERE f_int1 = - old.f_int1;
23677
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23679
# check trigger-8 success: 1
23680
DROP TRIGGER trg_1;
23681
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23682
f_int2 = CAST(f_char1 AS SIGNED INT),
23683
f_charbig = 'just inserted'
23684
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23686
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23688
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23689
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23691
SET new.f_int1 = old.f_int1 + @max_row,
23692
new.f_int2 = old.f_int2 - @max_row,
23693
new.f_charbig = '####updated per update trigger####';
23696
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23697
f_charbig = '####updated per update statement itself####';
23699
# check trigger-9 success: 1
23700
DROP TRIGGER trg_2;
23701
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23702
f_int2 = CAST(f_char1 AS SIGNED INT),
23703
f_charbig = CONCAT('===',f_char1,'===');
23704
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23706
SET new.f_int1 = new.f_int1 + @max_row,
23707
new.f_int2 = new.f_int2 - @max_row,
23708
new.f_charbig = '####updated per update trigger####';
23711
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23712
f_charbig = '####updated per update statement itself####';
23714
# check trigger-10 success: 1
23715
DROP TRIGGER trg_2;
23716
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23717
f_int2 = CAST(f_char1 AS SIGNED INT),
23718
f_charbig = CONCAT('===',f_char1,'===');
23719
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23721
SET new.f_int1 = @my_max1 + @counter,
23722
new.f_int2 = @my_min2 - @counter,
23723
new.f_charbig = '####updated per insert trigger####';
23724
SET @counter = @counter + 1;
23727
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23728
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23729
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23730
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23731
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23733
DROP TRIGGER trg_3;
23735
# check trigger-11 success: 1
23737
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23738
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23739
AND f_charbig = '####updated per insert trigger####';
23740
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23742
SET new.f_int1 = @my_max1 + @counter,
23743
new.f_int2 = @my_min2 - @counter,
23744
new.f_charbig = '####updated per insert trigger####';
23745
SET @counter = @counter + 1;
23748
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23749
INSERT INTO t1 (f_char1, f_char2, f_charbig)
23750
SELECT CAST(f_int1 AS CHAR),
23751
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23752
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23754
DROP TRIGGER trg_3;
23756
# check trigger-12 success: 1
23758
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23759
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23760
AND f_charbig = '####updated per insert trigger####';
23762
Table Op Msg_type Msg_text
23763
test.t1 analyze note The storage engine for the table doesn't support analyze
23764
CHECK TABLE t1 EXTENDED;
23765
Table Op Msg_type Msg_text
23766
test.t1 check note The storage engine for the table doesn't support check
23767
CHECKSUM TABLE t1 EXTENDED;
23769
test.t1 <some_value>
23771
Table Op Msg_type Msg_text
23772
test.t1 optimize note The storage engine for the table doesn't support optimize
23773
# check layout success: 1
23774
REPAIR TABLE t1 EXTENDED;
23775
Table Op Msg_type Msg_text
23776
test.t1 repair note The storage engine for the table doesn't support repair
23777
# check layout success: 1
23780
# check TRUNCATE success: 1
23781
# check layout success: 1
23782
# End usability test (inc/partition_check.inc)
23789
f_charbig VARCHAR(1000)
23790
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
23792
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
23793
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23794
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
23795
# Start usability test (inc/partition_check.inc)
23797
SHOW CREATE TABLE t1;
23799
t1 CREATE TABLE `t1` (
23800
`f_int1` int(11) NOT NULL DEFAULT '0',
23801
`f_int2` int(11) NOT NULL DEFAULT '0',
23802
`f_char1` char(20) DEFAULT NULL,
23803
`f_char2` char(20) DEFAULT NULL,
23804
`f_charbig` varchar(1000) DEFAULT NULL,
23805
PRIMARY KEY (`f_int1`,`f_int2`),
23806
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
23807
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
23810
$MYSQLTEST_VARDIR/master-data/test/t1.frm
23811
$MYSQLTEST_VARDIR/master-data/test/t1.par
23813
# check prerequisites-1 success: 1
23814
# check COUNT(*) success: 1
23815
# check MIN/MAX(f_int1) success: 1
23816
# check MIN/MAX(f_int2) success: 1
23817
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23818
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23819
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23820
WHERE f_int1 IN (2,3);
23821
ERROR 23000: Can't write; duplicate key in table 't1'
23822
# check prerequisites-3 success: 1
23823
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
23824
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23825
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
23826
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
23827
WHERE f_int1 IN (2,3);
23828
DELETE FROM t1 WHERE f_charbig = 'delete me';
23829
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23830
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
23831
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
23832
WHERE f_int1 IN (2,3);
23833
DELETE FROM t1 WHERE f_charbig = 'delete me';
23834
# check read via f_int1 success: 1
23835
# check read via f_int2 success: 1
23837
# check multiple-1 success: 1
23838
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23840
# check multiple-2 success: 1
23841
INSERT INTO t1 SELECT * FROM t0_template
23842
WHERE MOD(f_int1,3) = 0;
23844
# check multiple-3 success: 1
23845
UPDATE t1 SET f_int1 = f_int1 + @max_row
23846
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23847
AND @max_row_div2 + @max_row_div4;
23849
# check multiple-4 success: 1
23851
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23852
AND @max_row_div2 + @max_row_div4 + @max_row;
23854
# check multiple-5 success: 1
23855
SELECT COUNT(*) INTO @try_count FROM t0_template
23856
WHERE MOD(f_int1,3) = 0
23857
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23858
SELECT COUNT(*) INTO @clash_count
23859
FROM t1 INNER JOIN t0_template USING(f_int1)
23860
WHERE MOD(f_int1,3) = 0
23861
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23862
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23864
SET f_int1 = @cur_value , f_int2 = @cur_value,
23865
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23866
f_charbig = '#SINGLE#';
23868
# check single-1 success: 1
23869
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23871
SET f_int1 = @cur_value , f_int2 = @cur_value,
23872
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23873
f_charbig = '#SINGLE#';
23875
# check single-2 success: 1
23876
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23877
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23878
UPDATE t1 SET f_int1 = @cur_value2
23879
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23881
# check single-3 success: 1
23882
SET @cur_value1= -1;
23883
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23884
UPDATE t1 SET f_int1 = @cur_value1
23885
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23887
# check single-4 success: 1
23888
SELECT MAX(f_int1) INTO @cur_value FROM t1;
23889
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23891
# check single-5 success: 1
23892
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23894
# check single-6 success: 1
23895
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23897
# check single-7 success: 1
23898
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
23899
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23900
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23901
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23902
f_charbig = '#NULL#';
23904
SET f_int1 = NULL , f_int2 = -@max_row,
23905
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23906
f_charbig = '#NULL#';
23907
ERROR 23000: Column 'f_int1' cannot be null
23908
# check null success: 1
23910
WHERE f_int1 = 0 AND f_int2 = 0
23911
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23912
AND f_charbig = '#NULL#';
23913
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23914
SELECT f_int1, f_int1, '', '', 'was inserted'
23915
FROM t0_template source_tab
23916
WHERE MOD(f_int1,3) = 0
23917
AND f_int1 BETWEEN @max_row_div2 AND @max_row
23919
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
23920
f_int2 = 2 * @max_row + source_tab.f_int1,
23921
f_charbig = 'was updated';
23923
# check unique-1-a success: 1
23925
# check unique-1-b success: 1
23926
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23927
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23928
f_int2 = CAST(f_char1 AS SIGNED INT),
23929
f_charbig = CONCAT('===',f_char1,'===')
23930
WHERE f_charbig = 'was updated';
23931
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23932
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
23933
FROM t0_template source_tab
23934
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
23936
# check replace success: 1
23938
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
23940
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
23941
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
23942
UPDATE t1 SET f_int2 = f_int1,
23943
f_char1 = CAST(f_int1 AS CHAR),
23944
f_char2 = CAST(f_int1 AS CHAR),
23945
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
23946
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
23948
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23949
SELECT f_int1, f_int1, '', '', 'was inserted'
23950
FROM t0_template source_tab
23951
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23953
# check transactions-1 success: 1
23956
# check transactions-2 success: 1
23959
# check transactions-3 success: 1
23960
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23964
# check transactions-4 success: 1
23965
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23966
SELECT f_int1, f_int1, '', '', 'was inserted'
23967
FROM t0_template source_tab
23968
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23970
# check transactions-5 success: 1
23973
# check transactions-6 success: 1
23974
# INFO: Storage engine used for t1 seems to be transactional.
23977
# check transactions-7 success: 1
23978
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23980
SET @@session.sql_mode = 'traditional';
23981
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23982
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23983
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23984
'', '', 'was inserted' FROM t0_template
23985
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23986
ERROR 22012: Division by 0
23989
# check transactions-8 success: 1
23990
# INFO: Storage engine used for t1 seems to be able to revert
23991
# changes made by the failing statement.
23992
SET @@session.sql_mode = '';
23994
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23996
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23998
# check special-1 success: 1
23999
UPDATE t1 SET f_charbig = '';
24001
# check special-2 success: 1
24002
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24003
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24004
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24005
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24006
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24007
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24008
'just inserted' FROM t0_template
24009
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24010
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24012
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24013
f_charbig = 'updated by trigger'
24014
WHERE f_int1 = new.f_int1;
24016
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24017
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24018
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24020
# check trigger-1 success: 1
24021
DROP TRIGGER trg_1;
24022
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24023
f_int2 = CAST(f_char1 AS SIGNED INT),
24024
f_charbig = 'just inserted'
24025
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24027
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24028
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24029
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24030
'just inserted' FROM t0_template
24031
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24032
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24034
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24035
f_charbig = 'updated by trigger'
24036
WHERE f_int1 = new.f_int1;
24038
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24039
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24040
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24042
# check trigger-2 success: 1
24043
DROP TRIGGER trg_1;
24044
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24045
f_int2 = CAST(f_char1 AS SIGNED INT),
24046
f_charbig = 'just inserted'
24047
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24049
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24050
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24051
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24052
'just inserted' FROM t0_template
24053
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24054
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24056
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24057
f_charbig = 'updated by trigger'
24058
WHERE f_int1 = new.f_int1;
24060
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24061
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24063
# check trigger-3 success: 1
24064
DROP TRIGGER trg_1;
24065
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24066
f_int2 = CAST(f_char1 AS SIGNED INT),
24067
f_charbig = 'just inserted'
24068
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24070
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24071
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24072
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24073
'just inserted' FROM t0_template
24074
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24075
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24077
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24078
f_charbig = 'updated by trigger'
24079
WHERE f_int1 = - old.f_int1;
24081
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24082
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24084
# check trigger-4 success: 1
24085
DROP TRIGGER trg_1;
24086
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24087
f_int2 = CAST(f_char1 AS SIGNED INT),
24088
f_charbig = 'just inserted'
24089
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24091
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24092
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24093
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24094
'just inserted' FROM t0_template
24095
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24096
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24098
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24099
f_charbig = 'updated by trigger'
24100
WHERE f_int1 = new.f_int1;
24102
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24103
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24105
# check trigger-5 success: 1
24106
DROP TRIGGER trg_1;
24107
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24108
f_int2 = CAST(f_char1 AS SIGNED INT),
24109
f_charbig = 'just inserted'
24110
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24112
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24113
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24114
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24115
'just inserted' FROM t0_template
24116
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24117
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24119
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24120
f_charbig = 'updated by trigger'
24121
WHERE f_int1 = - old.f_int1;
24123
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24124
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24126
# check trigger-6 success: 1
24127
DROP TRIGGER trg_1;
24128
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24129
f_int2 = CAST(f_char1 AS SIGNED INT),
24130
f_charbig = 'just inserted'
24131
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24133
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24134
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24135
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24136
'just inserted' FROM t0_template
24137
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24138
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24140
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24141
f_charbig = 'updated by trigger'
24142
WHERE f_int1 = - old.f_int1;
24145
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24147
# check trigger-7 success: 1
24148
DROP TRIGGER trg_1;
24149
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24150
f_int2 = CAST(f_char1 AS SIGNED INT),
24151
f_charbig = 'just inserted'
24152
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24154
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24155
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24156
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24157
'just inserted' FROM t0_template
24158
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24159
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24161
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24162
f_charbig = 'updated by trigger'
24163
WHERE f_int1 = - old.f_int1;
24166
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24168
# check trigger-8 success: 1
24169
DROP TRIGGER trg_1;
24170
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24171
f_int2 = CAST(f_char1 AS SIGNED INT),
24172
f_charbig = 'just inserted'
24173
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24175
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24177
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24178
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24180
SET new.f_int1 = old.f_int1 + @max_row,
24181
new.f_int2 = old.f_int2 - @max_row,
24182
new.f_charbig = '####updated per update trigger####';
24185
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24186
f_charbig = '####updated per update statement itself####';
24188
# check trigger-9 success: 1
24189
DROP TRIGGER trg_2;
24190
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24191
f_int2 = CAST(f_char1 AS SIGNED INT),
24192
f_charbig = CONCAT('===',f_char1,'===');
24193
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24195
SET new.f_int1 = new.f_int1 + @max_row,
24196
new.f_int2 = new.f_int2 - @max_row,
24197
new.f_charbig = '####updated per update trigger####';
24200
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24201
f_charbig = '####updated per update statement itself####';
24203
# check trigger-10 success: 1
24204
DROP TRIGGER trg_2;
24205
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24206
f_int2 = CAST(f_char1 AS SIGNED INT),
24207
f_charbig = CONCAT('===',f_char1,'===');
24208
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24210
SET new.f_int1 = @my_max1 + @counter,
24211
new.f_int2 = @my_min2 - @counter,
24212
new.f_charbig = '####updated per insert trigger####';
24213
SET @counter = @counter + 1;
24216
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24217
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24218
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24219
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24220
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24222
DROP TRIGGER trg_3;
24224
# check trigger-11 success: 1
24226
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24227
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24228
AND f_charbig = '####updated per insert trigger####';
24229
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24231
SET new.f_int1 = @my_max1 + @counter,
24232
new.f_int2 = @my_min2 - @counter,
24233
new.f_charbig = '####updated per insert trigger####';
24234
SET @counter = @counter + 1;
24237
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24238
INSERT INTO t1 (f_char1, f_char2, f_charbig)
24239
SELECT CAST(f_int1 AS CHAR),
24240
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24241
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24243
DROP TRIGGER trg_3;
24245
# check trigger-12 success: 1
24247
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24248
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24249
AND f_charbig = '####updated per insert trigger####';
24251
Table Op Msg_type Msg_text
24252
test.t1 analyze note The storage engine for the table doesn't support analyze
24253
CHECK TABLE t1 EXTENDED;
24254
Table Op Msg_type Msg_text
24255
test.t1 check note The storage engine for the table doesn't support check
24256
CHECKSUM TABLE t1 EXTENDED;
24258
test.t1 <some_value>
24260
Table Op Msg_type Msg_text
24261
test.t1 optimize note The storage engine for the table doesn't support optimize
24262
# check layout success: 1
24263
REPAIR TABLE t1 EXTENDED;
24264
Table Op Msg_type Msg_text
24265
test.t1 repair note The storage engine for the table doesn't support repair
24266
# check layout success: 1
24269
# check TRUNCATE success: 1
24270
# check layout success: 1
24271
# End usability test (inc/partition_check.inc)
24278
f_charbig VARCHAR(1000)
24279
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
24281
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
24282
(PARTITION part_3 VALUES IN (-3),
24283
PARTITION part_2 VALUES IN (-2),
24284
PARTITION part_1 VALUES IN (-1),
24285
PARTITION part_N VALUES IN (NULL),
24286
PARTITION part0 VALUES IN (0),
24287
PARTITION part1 VALUES IN (1),
24288
PARTITION part2 VALUES IN (2),
24289
PARTITION part3 VALUES IN (3));
24290
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24291
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
24292
# Start usability test (inc/partition_check.inc)
24294
SHOW CREATE TABLE t1;
24296
t1 CREATE TABLE `t1` (
24297
`f_int1` int(11) NOT NULL DEFAULT '0',
24298
`f_int2` int(11) NOT NULL DEFAULT '0',
24299
`f_char1` char(20) DEFAULT NULL,
24300
`f_char2` char(20) DEFAULT NULL,
24301
`f_charbig` varchar(1000) DEFAULT NULL,
24302
PRIMARY KEY (`f_int1`,`f_int2`),
24303
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
24304
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
24307
$MYSQLTEST_VARDIR/master-data/test/t1.frm
24308
$MYSQLTEST_VARDIR/master-data/test/t1.par
24310
# check prerequisites-1 success: 1
24311
# check COUNT(*) success: 1
24312
# check MIN/MAX(f_int1) success: 1
24313
# check MIN/MAX(f_int2) success: 1
24314
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24315
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24316
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24317
WHERE f_int1 IN (2,3);
24318
ERROR 23000: Can't write; duplicate key in table 't1'
24319
# check prerequisites-3 success: 1
24320
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
24321
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24322
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
24323
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
24324
WHERE f_int1 IN (2,3);
24325
DELETE FROM t1 WHERE f_charbig = 'delete me';
24326
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24327
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
24328
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
24329
WHERE f_int1 IN (2,3);
24330
DELETE FROM t1 WHERE f_charbig = 'delete me';
24331
# check read via f_int1 success: 1
24332
# check read via f_int2 success: 1
24334
# check multiple-1 success: 1
24335
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24337
# check multiple-2 success: 1
24338
INSERT INTO t1 SELECT * FROM t0_template
24339
WHERE MOD(f_int1,3) = 0;
24341
# check multiple-3 success: 1
24342
UPDATE t1 SET f_int1 = f_int1 + @max_row
24343
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24344
AND @max_row_div2 + @max_row_div4;
24346
# check multiple-4 success: 1
24348
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24349
AND @max_row_div2 + @max_row_div4 + @max_row;
24351
# check multiple-5 success: 1
24352
SELECT COUNT(*) INTO @try_count FROM t0_template
24353
WHERE MOD(f_int1,3) = 0
24354
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24355
SELECT COUNT(*) INTO @clash_count
24356
FROM t1 INNER JOIN t0_template USING(f_int1)
24357
WHERE MOD(f_int1,3) = 0
24358
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24359
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24361
SET f_int1 = @cur_value , f_int2 = @cur_value,
24362
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24363
f_charbig = '#SINGLE#';
24365
# check single-1 success: 1
24366
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24368
SET f_int1 = @cur_value , f_int2 = @cur_value,
24369
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24370
f_charbig = '#SINGLE#';
24372
# check single-2 success: 1
24373
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24374
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24375
UPDATE t1 SET f_int1 = @cur_value2
24376
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24378
# check single-3 success: 1
24379
SET @cur_value1= -1;
24380
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24381
UPDATE t1 SET f_int1 = @cur_value1
24382
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24384
# check single-4 success: 1
24385
SELECT MAX(f_int1) INTO @cur_value FROM t1;
24386
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24388
# check single-5 success: 1
24389
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24391
# check single-6 success: 1
24392
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24394
# check single-7 success: 1
24395
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24396
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24397
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24398
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24399
f_charbig = '#NULL#';
24401
SET f_int1 = NULL , f_int2 = -@max_row,
24402
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24403
f_charbig = '#NULL#';
24404
ERROR 23000: Column 'f_int1' cannot be null
24405
# check null success: 1
24407
WHERE f_int1 = 0 AND f_int2 = 0
24408
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24409
AND f_charbig = '#NULL#';
24410
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24411
SELECT f_int1, f_int1, '', '', 'was inserted'
24412
FROM t0_template source_tab
24413
WHERE MOD(f_int1,3) = 0
24414
AND f_int1 BETWEEN @max_row_div2 AND @max_row
24416
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
24417
f_int2 = 2 * @max_row + source_tab.f_int1,
24418
f_charbig = 'was updated';
24420
# check unique-1-a success: 1
24422
# check unique-1-b success: 1
24423
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24424
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24425
f_int2 = CAST(f_char1 AS SIGNED INT),
24426
f_charbig = CONCAT('===',f_char1,'===')
24427
WHERE f_charbig = 'was updated';
24428
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24429
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
24430
FROM t0_template source_tab
24431
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24433
# check replace success: 1
24435
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
24437
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
24438
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
24439
UPDATE t1 SET f_int2 = f_int1,
24440
f_char1 = CAST(f_int1 AS CHAR),
24441
f_char2 = CAST(f_int1 AS CHAR),
24442
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
24443
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
24445
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24446
SELECT f_int1, f_int1, '', '', 'was inserted'
24447
FROM t0_template source_tab
24448
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24450
# check transactions-1 success: 1
24453
# check transactions-2 success: 1
24456
# check transactions-3 success: 1
24457
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24461
# check transactions-4 success: 1
24462
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24463
SELECT f_int1, f_int1, '', '', 'was inserted'
24464
FROM t0_template source_tab
24465
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24467
# check transactions-5 success: 1
24470
# check transactions-6 success: 1
24471
# INFO: Storage engine used for t1 seems to be transactional.
24474
# check transactions-7 success: 1
24475
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24477
SET @@session.sql_mode = 'traditional';
24478
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24479
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24480
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24481
'', '', 'was inserted' FROM t0_template
24482
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24483
ERROR 22012: Division by 0
24486
# check transactions-8 success: 1
24487
# INFO: Storage engine used for t1 seems to be able to revert
24488
# changes made by the failing statement.
24489
SET @@session.sql_mode = '';
24491
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24493
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24495
# check special-1 success: 1
24496
UPDATE t1 SET f_charbig = '';
24498
# check special-2 success: 1
24499
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24500
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24501
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24502
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24503
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24504
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24505
'just inserted' FROM t0_template
24506
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24507
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24509
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24510
f_charbig = 'updated by trigger'
24511
WHERE f_int1 = new.f_int1;
24513
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24514
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24515
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24517
# check trigger-1 success: 1
24518
DROP TRIGGER trg_1;
24519
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24520
f_int2 = CAST(f_char1 AS SIGNED INT),
24521
f_charbig = 'just inserted'
24522
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24524
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24525
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24526
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24527
'just inserted' FROM t0_template
24528
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24529
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24531
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24532
f_charbig = 'updated by trigger'
24533
WHERE f_int1 = new.f_int1;
24535
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24536
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24537
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24539
# check trigger-2 success: 1
24540
DROP TRIGGER trg_1;
24541
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24542
f_int2 = CAST(f_char1 AS SIGNED INT),
24543
f_charbig = 'just inserted'
24544
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24546
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24547
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24548
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24549
'just inserted' FROM t0_template
24550
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24551
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24553
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24554
f_charbig = 'updated by trigger'
24555
WHERE f_int1 = new.f_int1;
24557
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24558
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24560
# check trigger-3 success: 1
24561
DROP TRIGGER trg_1;
24562
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24563
f_int2 = CAST(f_char1 AS SIGNED INT),
24564
f_charbig = 'just inserted'
24565
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24567
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24568
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24569
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24570
'just inserted' FROM t0_template
24571
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24572
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24574
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24575
f_charbig = 'updated by trigger'
24576
WHERE f_int1 = - old.f_int1;
24578
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24579
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24581
# check trigger-4 success: 1
24582
DROP TRIGGER trg_1;
24583
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24584
f_int2 = CAST(f_char1 AS SIGNED INT),
24585
f_charbig = 'just inserted'
24586
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24588
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24589
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24590
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24591
'just inserted' FROM t0_template
24592
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24593
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24595
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24596
f_charbig = 'updated by trigger'
24597
WHERE f_int1 = new.f_int1;
24599
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24600
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24602
# check trigger-5 success: 1
24603
DROP TRIGGER trg_1;
24604
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24605
f_int2 = CAST(f_char1 AS SIGNED INT),
24606
f_charbig = 'just inserted'
24607
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24609
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24610
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24611
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24612
'just inserted' FROM t0_template
24613
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24614
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24616
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24617
f_charbig = 'updated by trigger'
24618
WHERE f_int1 = - old.f_int1;
24620
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24621
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24623
# check trigger-6 success: 1
24624
DROP TRIGGER trg_1;
24625
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24626
f_int2 = CAST(f_char1 AS SIGNED INT),
24627
f_charbig = 'just inserted'
24628
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24630
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24631
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24632
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24633
'just inserted' FROM t0_template
24634
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24635
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24637
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24638
f_charbig = 'updated by trigger'
24639
WHERE f_int1 = - old.f_int1;
24642
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24644
# check trigger-7 success: 1
24645
DROP TRIGGER trg_1;
24646
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24647
f_int2 = CAST(f_char1 AS SIGNED INT),
24648
f_charbig = 'just inserted'
24649
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24651
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24652
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24653
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24654
'just inserted' FROM t0_template
24655
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24656
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24658
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24659
f_charbig = 'updated by trigger'
24660
WHERE f_int1 = - old.f_int1;
24663
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24665
# check trigger-8 success: 1
24666
DROP TRIGGER trg_1;
24667
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24668
f_int2 = CAST(f_char1 AS SIGNED INT),
24669
f_charbig = 'just inserted'
24670
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24672
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24674
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24675
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24677
SET new.f_int1 = old.f_int1 + @max_row,
24678
new.f_int2 = old.f_int2 - @max_row,
24679
new.f_charbig = '####updated per update trigger####';
24682
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24683
f_charbig = '####updated per update statement itself####';
24685
# check trigger-9 success: 1
24686
DROP TRIGGER trg_2;
24687
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24688
f_int2 = CAST(f_char1 AS SIGNED INT),
24689
f_charbig = CONCAT('===',f_char1,'===');
24690
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24692
SET new.f_int1 = new.f_int1 + @max_row,
24693
new.f_int2 = new.f_int2 - @max_row,
24694
new.f_charbig = '####updated per update trigger####';
24697
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24698
f_charbig = '####updated per update statement itself####';
24700
# check trigger-10 success: 1
24701
DROP TRIGGER trg_2;
24702
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24703
f_int2 = CAST(f_char1 AS SIGNED INT),
24704
f_charbig = CONCAT('===',f_char1,'===');
24705
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24707
SET new.f_int1 = @my_max1 + @counter,
24708
new.f_int2 = @my_min2 - @counter,
24709
new.f_charbig = '####updated per insert trigger####';
24710
SET @counter = @counter + 1;
24713
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24714
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24715
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24716
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24717
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24719
DROP TRIGGER trg_3;
24721
# check trigger-11 success: 1
24723
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24724
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24725
AND f_charbig = '####updated per insert trigger####';
24726
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24728
SET new.f_int1 = @my_max1 + @counter,
24729
new.f_int2 = @my_min2 - @counter,
24730
new.f_charbig = '####updated per insert trigger####';
24731
SET @counter = @counter + 1;
24734
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24735
INSERT INTO t1 (f_char1, f_char2, f_charbig)
24736
SELECT CAST(f_int1 AS CHAR),
24737
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24738
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24740
DROP TRIGGER trg_3;
24742
# check trigger-12 success: 1
24744
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24745
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24746
AND f_charbig = '####updated per insert trigger####';
24748
Table Op Msg_type Msg_text
24749
test.t1 analyze note The storage engine for the table doesn't support analyze
24750
CHECK TABLE t1 EXTENDED;
24751
Table Op Msg_type Msg_text
24752
test.t1 check note The storage engine for the table doesn't support check
24753
CHECKSUM TABLE t1 EXTENDED;
24755
test.t1 <some_value>
24757
Table Op Msg_type Msg_text
24758
test.t1 optimize note The storage engine for the table doesn't support optimize
24759
# check layout success: 1
24760
REPAIR TABLE t1 EXTENDED;
24761
Table Op Msg_type Msg_text
24762
test.t1 repair note The storage engine for the table doesn't support repair
24763
# check layout success: 1
24766
# check TRUNCATE success: 1
24767
# check layout success: 1
24768
# End usability test (inc/partition_check.inc)
24775
f_charbig VARCHAR(1000)
24776
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
24778
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
24779
(PARTITION parta VALUES LESS THAN (0),
24780
PARTITION partb VALUES LESS THAN (5),
24781
PARTITION partc VALUES LESS THAN (10),
24782
PARTITION partd VALUES LESS THAN (10 + 5),
24783
PARTITION parte VALUES LESS THAN (20),
24784
PARTITION partf VALUES LESS THAN (2147483646));
24785
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24786
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
24787
# Start usability test (inc/partition_check.inc)
24789
SHOW CREATE TABLE t1;
24791
t1 CREATE TABLE `t1` (
24792
`f_int1` int(11) NOT NULL DEFAULT '0',
24793
`f_int2` int(11) NOT NULL DEFAULT '0',
24794
`f_char1` char(20) DEFAULT NULL,
24795
`f_char2` char(20) DEFAULT NULL,
24796
`f_charbig` varchar(1000) DEFAULT NULL,
24797
PRIMARY KEY (`f_int1`,`f_int2`),
24798
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
24799
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
24802
$MYSQLTEST_VARDIR/master-data/test/t1.frm
24803
$MYSQLTEST_VARDIR/master-data/test/t1.par
24805
# check prerequisites-1 success: 1
24806
# check COUNT(*) success: 1
24807
# check MIN/MAX(f_int1) success: 1
24808
# check MIN/MAX(f_int2) success: 1
24809
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24810
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24811
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24812
WHERE f_int1 IN (2,3);
24813
ERROR 23000: Can't write; duplicate key in table 't1'
24814
# check prerequisites-3 success: 1
24815
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
24816
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24817
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
24818
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
24819
WHERE f_int1 IN (2,3);
24820
DELETE FROM t1 WHERE f_charbig = 'delete me';
24821
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24822
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
24823
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
24824
WHERE f_int1 IN (2,3);
24825
DELETE FROM t1 WHERE f_charbig = 'delete me';
24826
# check read via f_int1 success: 1
24827
# check read via f_int2 success: 1
24829
# check multiple-1 success: 1
24830
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24832
# check multiple-2 success: 1
24833
INSERT INTO t1 SELECT * FROM t0_template
24834
WHERE MOD(f_int1,3) = 0;
24836
# check multiple-3 success: 1
24837
UPDATE t1 SET f_int1 = f_int1 + @max_row
24838
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24839
AND @max_row_div2 + @max_row_div4;
24841
# check multiple-4 success: 1
24843
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24844
AND @max_row_div2 + @max_row_div4 + @max_row;
24846
# check multiple-5 success: 1
24847
SELECT COUNT(*) INTO @try_count FROM t0_template
24848
WHERE MOD(f_int1,3) = 0
24849
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24850
SELECT COUNT(*) INTO @clash_count
24851
FROM t1 INNER JOIN t0_template USING(f_int1)
24852
WHERE MOD(f_int1,3) = 0
24853
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24854
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24856
SET f_int1 = @cur_value , f_int2 = @cur_value,
24857
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24858
f_charbig = '#SINGLE#';
24860
# check single-1 success: 1
24861
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24863
SET f_int1 = @cur_value , f_int2 = @cur_value,
24864
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24865
f_charbig = '#SINGLE#';
24867
# check single-2 success: 1
24868
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24869
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24870
UPDATE t1 SET f_int1 = @cur_value2
24871
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24873
# check single-3 success: 1
24874
SET @cur_value1= -1;
24875
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24876
UPDATE t1 SET f_int1 = @cur_value1
24877
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24879
# check single-4 success: 1
24880
SELECT MAX(f_int1) INTO @cur_value FROM t1;
24881
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24883
# check single-5 success: 1
24884
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24886
# check single-6 success: 1
24887
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24888
ERROR HY000: Table has no partition for value 2147483647
24889
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24890
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24891
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24892
f_charbig = '#NULL#';
24894
SET f_int1 = NULL , f_int2 = -@max_row,
24895
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24896
f_charbig = '#NULL#';
24897
ERROR 23000: Column 'f_int1' cannot be null
24898
# check null success: 1
24900
WHERE f_int1 = 0 AND f_int2 = 0
24901
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24902
AND f_charbig = '#NULL#';
24903
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24904
SELECT f_int1, f_int1, '', '', 'was inserted'
24905
FROM t0_template source_tab
24906
WHERE MOD(f_int1,3) = 0
24907
AND f_int1 BETWEEN @max_row_div2 AND @max_row
24909
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
24910
f_int2 = 2 * @max_row + source_tab.f_int1,
24911
f_charbig = 'was updated';
24913
# check unique-1-a success: 1
24915
# check unique-1-b success: 1
24916
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24917
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24918
f_int2 = CAST(f_char1 AS SIGNED INT),
24919
f_charbig = CONCAT('===',f_char1,'===')
24920
WHERE f_charbig = 'was updated';
24921
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24922
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
24923
FROM t0_template source_tab
24924
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
24926
# check replace success: 1
24928
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
24930
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
24931
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
24932
UPDATE t1 SET f_int2 = f_int1,
24933
f_char1 = CAST(f_int1 AS CHAR),
24934
f_char2 = CAST(f_int1 AS CHAR),
24935
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
24936
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
24938
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24939
SELECT f_int1, f_int1, '', '', 'was inserted'
24940
FROM t0_template source_tab
24941
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24943
# check transactions-1 success: 1
24946
# check transactions-2 success: 1
24949
# check transactions-3 success: 1
24950
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24954
# check transactions-4 success: 1
24955
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24956
SELECT f_int1, f_int1, '', '', 'was inserted'
24957
FROM t0_template source_tab
24958
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24960
# check transactions-5 success: 1
24963
# check transactions-6 success: 1
24964
# INFO: Storage engine used for t1 seems to be transactional.
24967
# check transactions-7 success: 1
24968
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24970
SET @@session.sql_mode = 'traditional';
24971
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24972
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24973
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24974
'', '', 'was inserted' FROM t0_template
24975
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24976
ERROR 22012: Division by 0
24979
# check transactions-8 success: 1
24980
# INFO: Storage engine used for t1 seems to be able to revert
24981
# changes made by the failing statement.
24982
SET @@session.sql_mode = '';
24984
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24986
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24988
# check special-1 success: 1
24989
UPDATE t1 SET f_charbig = '';
24991
# check special-2 success: 1
24992
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24993
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24994
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24995
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24996
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24997
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24998
'just inserted' FROM t0_template
24999
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25000
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25002
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25003
f_charbig = 'updated by trigger'
25004
WHERE f_int1 = new.f_int1;
25006
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25007
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25008
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25010
# check trigger-1 success: 1
25011
DROP TRIGGER trg_1;
25012
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25013
f_int2 = CAST(f_char1 AS SIGNED INT),
25014
f_charbig = 'just inserted'
25015
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25017
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25018
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25019
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25020
'just inserted' FROM t0_template
25021
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25022
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25024
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25025
f_charbig = 'updated by trigger'
25026
WHERE f_int1 = new.f_int1;
25028
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25029
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25030
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25032
# check trigger-2 success: 1
25033
DROP TRIGGER trg_1;
25034
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25035
f_int2 = CAST(f_char1 AS SIGNED INT),
25036
f_charbig = 'just inserted'
25037
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25039
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25040
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25041
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25042
'just inserted' FROM t0_template
25043
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25044
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25046
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25047
f_charbig = 'updated by trigger'
25048
WHERE f_int1 = new.f_int1;
25050
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25051
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25053
# check trigger-3 success: 1
25054
DROP TRIGGER trg_1;
25055
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25056
f_int2 = CAST(f_char1 AS SIGNED INT),
25057
f_charbig = 'just inserted'
25058
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25060
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25061
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25062
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25063
'just inserted' FROM t0_template
25064
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25065
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25067
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25068
f_charbig = 'updated by trigger'
25069
WHERE f_int1 = - old.f_int1;
25071
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25072
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25074
# check trigger-4 success: 1
25075
DROP TRIGGER trg_1;
25076
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25077
f_int2 = CAST(f_char1 AS SIGNED INT),
25078
f_charbig = 'just inserted'
25079
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25081
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25082
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25083
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25084
'just inserted' FROM t0_template
25085
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25086
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25088
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25089
f_charbig = 'updated by trigger'
25090
WHERE f_int1 = new.f_int1;
25092
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25093
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25095
# check trigger-5 success: 1
25096
DROP TRIGGER trg_1;
25097
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25098
f_int2 = CAST(f_char1 AS SIGNED INT),
25099
f_charbig = 'just inserted'
25100
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25102
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25103
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25104
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25105
'just inserted' FROM t0_template
25106
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25107
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25109
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25110
f_charbig = 'updated by trigger'
25111
WHERE f_int1 = - old.f_int1;
25113
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25114
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25116
# check trigger-6 success: 1
25117
DROP TRIGGER trg_1;
25118
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25119
f_int2 = CAST(f_char1 AS SIGNED INT),
25120
f_charbig = 'just inserted'
25121
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25123
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25124
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25125
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25126
'just inserted' FROM t0_template
25127
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25128
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25130
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25131
f_charbig = 'updated by trigger'
25132
WHERE f_int1 = - old.f_int1;
25135
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25137
# check trigger-7 success: 1
25138
DROP TRIGGER trg_1;
25139
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25140
f_int2 = CAST(f_char1 AS SIGNED INT),
25141
f_charbig = 'just inserted'
25142
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25144
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25145
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25146
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25147
'just inserted' FROM t0_template
25148
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25149
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25151
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25152
f_charbig = 'updated by trigger'
25153
WHERE f_int1 = - old.f_int1;
25156
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25158
# check trigger-8 success: 1
25159
DROP TRIGGER trg_1;
25160
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25161
f_int2 = CAST(f_char1 AS SIGNED INT),
25162
f_charbig = 'just inserted'
25163
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25165
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25167
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25168
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25170
SET new.f_int1 = old.f_int1 + @max_row,
25171
new.f_int2 = old.f_int2 - @max_row,
25172
new.f_charbig = '####updated per update trigger####';
25175
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25176
f_charbig = '####updated per update statement itself####';
25178
# check trigger-9 success: 1
25179
DROP TRIGGER trg_2;
25180
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25181
f_int2 = CAST(f_char1 AS SIGNED INT),
25182
f_charbig = CONCAT('===',f_char1,'===');
25183
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25185
SET new.f_int1 = new.f_int1 + @max_row,
25186
new.f_int2 = new.f_int2 - @max_row,
25187
new.f_charbig = '####updated per update trigger####';
25190
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25191
f_charbig = '####updated per update statement itself####';
25193
# check trigger-10 success: 1
25194
DROP TRIGGER trg_2;
25195
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25196
f_int2 = CAST(f_char1 AS SIGNED INT),
25197
f_charbig = CONCAT('===',f_char1,'===');
25198
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25200
SET new.f_int1 = @my_max1 + @counter,
25201
new.f_int2 = @my_min2 - @counter,
25202
new.f_charbig = '####updated per insert trigger####';
25203
SET @counter = @counter + 1;
25206
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25207
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25208
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25209
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25210
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25212
DROP TRIGGER trg_3;
25214
# check trigger-11 success: 1
25216
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25217
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25218
AND f_charbig = '####updated per insert trigger####';
25219
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25221
SET new.f_int1 = @my_max1 + @counter,
25222
new.f_int2 = @my_min2 - @counter,
25223
new.f_charbig = '####updated per insert trigger####';
25224
SET @counter = @counter + 1;
25227
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25228
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25229
SELECT CAST(f_int1 AS CHAR),
25230
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25231
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25233
DROP TRIGGER trg_3;
25235
# check trigger-12 success: 1
25237
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25238
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25239
AND f_charbig = '####updated per insert trigger####';
25241
Table Op Msg_type Msg_text
25242
test.t1 analyze note The storage engine for the table doesn't support analyze
25243
CHECK TABLE t1 EXTENDED;
25244
Table Op Msg_type Msg_text
25245
test.t1 check note The storage engine for the table doesn't support check
25246
CHECKSUM TABLE t1 EXTENDED;
25248
test.t1 <some_value>
25250
Table Op Msg_type Msg_text
25251
test.t1 optimize note The storage engine for the table doesn't support optimize
25252
# check layout success: 1
25253
REPAIR TABLE t1 EXTENDED;
25254
Table Op Msg_type Msg_text
25255
test.t1 repair note The storage engine for the table doesn't support repair
25256
# check layout success: 1
25259
# check TRUNCATE success: 1
25260
# check layout success: 1
25261
# End usability test (inc/partition_check.inc)
25268
f_charbig VARCHAR(1000)
25269
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
25271
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
25272
(PARTITION parta VALUES LESS THAN (0),
25273
PARTITION partb VALUES LESS THAN (5),
25274
PARTITION partc VALUES LESS THAN (10),
25275
PARTITION partd VALUES LESS THAN (2147483646));
25276
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25277
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
25278
# Start usability test (inc/partition_check.inc)
25280
SHOW CREATE TABLE t1;
25282
t1 CREATE TABLE `t1` (
25283
`f_int1` int(11) NOT NULL DEFAULT '0',
25284
`f_int2` int(11) NOT NULL DEFAULT '0',
25285
`f_char1` char(20) DEFAULT NULL,
25286
`f_char2` char(20) DEFAULT NULL,
25287
`f_charbig` varchar(1000) DEFAULT NULL,
25288
PRIMARY KEY (`f_int1`,`f_int2`),
25289
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
25290
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
25293
$MYSQLTEST_VARDIR/master-data/test/t1.frm
25294
$MYSQLTEST_VARDIR/master-data/test/t1.par
25296
# check prerequisites-1 success: 1
25297
# check COUNT(*) success: 1
25298
# check MIN/MAX(f_int1) success: 1
25299
# check MIN/MAX(f_int2) success: 1
25300
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25301
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25302
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25303
WHERE f_int1 IN (2,3);
25304
ERROR 23000: Can't write; duplicate key in table 't1'
25305
# check prerequisites-3 success: 1
25306
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
25307
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25308
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
25309
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
25310
WHERE f_int1 IN (2,3);
25311
DELETE FROM t1 WHERE f_charbig = 'delete me';
25312
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25313
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
25314
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
25315
WHERE f_int1 IN (2,3);
25316
DELETE FROM t1 WHERE f_charbig = 'delete me';
25317
# check read via f_int1 success: 1
25318
# check read via f_int2 success: 1
25320
# check multiple-1 success: 1
25321
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25323
# check multiple-2 success: 1
25324
INSERT INTO t1 SELECT * FROM t0_template
25325
WHERE MOD(f_int1,3) = 0;
25327
# check multiple-3 success: 1
25328
UPDATE t1 SET f_int1 = f_int1 + @max_row
25329
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25330
AND @max_row_div2 + @max_row_div4;
25332
# check multiple-4 success: 1
25334
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25335
AND @max_row_div2 + @max_row_div4 + @max_row;
25337
# check multiple-5 success: 1
25338
SELECT COUNT(*) INTO @try_count FROM t0_template
25339
WHERE MOD(f_int1,3) = 0
25340
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25341
SELECT COUNT(*) INTO @clash_count
25342
FROM t1 INNER JOIN t0_template USING(f_int1)
25343
WHERE MOD(f_int1,3) = 0
25344
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25345
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25347
SET f_int1 = @cur_value , f_int2 = @cur_value,
25348
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25349
f_charbig = '#SINGLE#';
25351
# check single-1 success: 1
25352
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25354
SET f_int1 = @cur_value , f_int2 = @cur_value,
25355
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25356
f_charbig = '#SINGLE#';
25358
# check single-2 success: 1
25359
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25360
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25361
UPDATE t1 SET f_int1 = @cur_value2
25362
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25364
# check single-3 success: 1
25365
SET @cur_value1= -1;
25366
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25367
UPDATE t1 SET f_int1 = @cur_value1
25368
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25370
# check single-4 success: 1
25371
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25372
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25374
# check single-5 success: 1
25375
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25377
# check single-6 success: 1
25378
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25379
ERROR HY000: Table has no partition for value 2147483647
25380
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25381
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25382
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25383
f_charbig = '#NULL#';
25385
SET f_int1 = NULL , f_int2 = -@max_row,
25386
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25387
f_charbig = '#NULL#';
25388
ERROR 23000: Column 'f_int1' cannot be null
25389
# check null success: 1
25391
WHERE f_int1 = 0 AND f_int2 = 0
25392
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25393
AND f_charbig = '#NULL#';
25394
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25395
SELECT f_int1, f_int1, '', '', 'was inserted'
25396
FROM t0_template source_tab
25397
WHERE MOD(f_int1,3) = 0
25398
AND f_int1 BETWEEN @max_row_div2 AND @max_row
25400
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
25401
f_int2 = 2 * @max_row + source_tab.f_int1,
25402
f_charbig = 'was updated';
25404
# check unique-1-a success: 1
25406
# check unique-1-b success: 1
25407
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25408
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25409
f_int2 = CAST(f_char1 AS SIGNED INT),
25410
f_charbig = CONCAT('===',f_char1,'===')
25411
WHERE f_charbig = 'was updated';
25412
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25413
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
25414
FROM t0_template source_tab
25415
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25417
# check replace success: 1
25419
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
25421
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
25422
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
25423
UPDATE t1 SET f_int2 = f_int1,
25424
f_char1 = CAST(f_int1 AS CHAR),
25425
f_char2 = CAST(f_int1 AS CHAR),
25426
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
25427
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
25429
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25430
SELECT f_int1, f_int1, '', '', 'was inserted'
25431
FROM t0_template source_tab
25432
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25434
# check transactions-1 success: 1
25437
# check transactions-2 success: 1
25440
# check transactions-3 success: 1
25441
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25445
# check transactions-4 success: 1
25446
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25447
SELECT f_int1, f_int1, '', '', 'was inserted'
25448
FROM t0_template source_tab
25449
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25451
# check transactions-5 success: 1
25454
# check transactions-6 success: 1
25455
# INFO: Storage engine used for t1 seems to be transactional.
25458
# check transactions-7 success: 1
25459
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25461
SET @@session.sql_mode = 'traditional';
25462
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25463
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25464
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25465
'', '', 'was inserted' FROM t0_template
25466
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25467
ERROR 22012: Division by 0
25470
# check transactions-8 success: 1
25471
# INFO: Storage engine used for t1 seems to be able to revert
25472
# changes made by the failing statement.
25473
SET @@session.sql_mode = '';
25475
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25477
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25479
# check special-1 success: 1
25480
UPDATE t1 SET f_charbig = '';
25482
# check special-2 success: 1
25483
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25484
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25485
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25486
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25487
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25488
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25489
'just inserted' FROM t0_template
25490
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25491
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25493
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25494
f_charbig = 'updated by trigger'
25495
WHERE f_int1 = new.f_int1;
25497
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25498
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25499
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25501
# check trigger-1 success: 1
25502
DROP TRIGGER trg_1;
25503
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25504
f_int2 = CAST(f_char1 AS SIGNED INT),
25505
f_charbig = 'just inserted'
25506
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25508
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25509
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25510
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25511
'just inserted' FROM t0_template
25512
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25513
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25515
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25516
f_charbig = 'updated by trigger'
25517
WHERE f_int1 = new.f_int1;
25519
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25520
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25521
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25523
# check trigger-2 success: 1
25524
DROP TRIGGER trg_1;
25525
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25526
f_int2 = CAST(f_char1 AS SIGNED INT),
25527
f_charbig = 'just inserted'
25528
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25530
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25531
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25532
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25533
'just inserted' FROM t0_template
25534
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25535
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25537
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25538
f_charbig = 'updated by trigger'
25539
WHERE f_int1 = new.f_int1;
25541
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25542
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25544
# check trigger-3 success: 1
25545
DROP TRIGGER trg_1;
25546
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25547
f_int2 = CAST(f_char1 AS SIGNED INT),
25548
f_charbig = 'just inserted'
25549
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25551
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25552
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25553
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25554
'just inserted' FROM t0_template
25555
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25556
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25558
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25559
f_charbig = 'updated by trigger'
25560
WHERE f_int1 = - old.f_int1;
25562
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25563
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25565
# check trigger-4 success: 1
25566
DROP TRIGGER trg_1;
25567
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25568
f_int2 = CAST(f_char1 AS SIGNED INT),
25569
f_charbig = 'just inserted'
25570
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25572
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25573
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25574
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25575
'just inserted' FROM t0_template
25576
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25577
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25579
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25580
f_charbig = 'updated by trigger'
25581
WHERE f_int1 = new.f_int1;
25583
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25584
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25586
# check trigger-5 success: 1
25587
DROP TRIGGER trg_1;
25588
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25589
f_int2 = CAST(f_char1 AS SIGNED INT),
25590
f_charbig = 'just inserted'
25591
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25593
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25594
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25595
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25596
'just inserted' FROM t0_template
25597
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25598
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25600
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25601
f_charbig = 'updated by trigger'
25602
WHERE f_int1 = - old.f_int1;
25604
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25605
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25607
# check trigger-6 success: 1
25608
DROP TRIGGER trg_1;
25609
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25610
f_int2 = CAST(f_char1 AS SIGNED INT),
25611
f_charbig = 'just inserted'
25612
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25614
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25615
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25616
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25617
'just inserted' FROM t0_template
25618
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25619
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25621
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25622
f_charbig = 'updated by trigger'
25623
WHERE f_int1 = - old.f_int1;
25626
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25628
# check trigger-7 success: 1
25629
DROP TRIGGER trg_1;
25630
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25631
f_int2 = CAST(f_char1 AS SIGNED INT),
25632
f_charbig = 'just inserted'
25633
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25635
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25636
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25637
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25638
'just inserted' FROM t0_template
25639
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25640
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25642
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25643
f_charbig = 'updated by trigger'
25644
WHERE f_int1 = - old.f_int1;
25647
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25649
# check trigger-8 success: 1
25650
DROP TRIGGER trg_1;
25651
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25652
f_int2 = CAST(f_char1 AS SIGNED INT),
25653
f_charbig = 'just inserted'
25654
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25656
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25658
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25659
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25661
SET new.f_int1 = old.f_int1 + @max_row,
25662
new.f_int2 = old.f_int2 - @max_row,
25663
new.f_charbig = '####updated per update trigger####';
25666
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25667
f_charbig = '####updated per update statement itself####';
25669
# check trigger-9 success: 1
25670
DROP TRIGGER trg_2;
25671
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25672
f_int2 = CAST(f_char1 AS SIGNED INT),
25673
f_charbig = CONCAT('===',f_char1,'===');
25674
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25676
SET new.f_int1 = new.f_int1 + @max_row,
25677
new.f_int2 = new.f_int2 - @max_row,
25678
new.f_charbig = '####updated per update trigger####';
25681
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25682
f_charbig = '####updated per update statement itself####';
25684
# check trigger-10 success: 1
25685
DROP TRIGGER trg_2;
25686
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25687
f_int2 = CAST(f_char1 AS SIGNED INT),
25688
f_charbig = CONCAT('===',f_char1,'===');
25689
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25691
SET new.f_int1 = @my_max1 + @counter,
25692
new.f_int2 = @my_min2 - @counter,
25693
new.f_charbig = '####updated per insert trigger####';
25694
SET @counter = @counter + 1;
25697
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25698
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25699
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25700
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25701
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25703
DROP TRIGGER trg_3;
25705
# check trigger-11 success: 1
25707
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25708
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25709
AND f_charbig = '####updated per insert trigger####';
25710
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25712
SET new.f_int1 = @my_max1 + @counter,
25713
new.f_int2 = @my_min2 - @counter,
25714
new.f_charbig = '####updated per insert trigger####';
25715
SET @counter = @counter + 1;
25718
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25719
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25720
SELECT CAST(f_int1 AS CHAR),
25721
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25722
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25724
DROP TRIGGER trg_3;
25726
# check trigger-12 success: 1
25728
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25729
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25730
AND f_charbig = '####updated per insert trigger####';
25732
Table Op Msg_type Msg_text
25733
test.t1 analyze note The storage engine for the table doesn't support analyze
25734
CHECK TABLE t1 EXTENDED;
25735
Table Op Msg_type Msg_text
25736
test.t1 check note The storage engine for the table doesn't support check
25737
CHECKSUM TABLE t1 EXTENDED;
25739
test.t1 <some_value>
25741
Table Op Msg_type Msg_text
25742
test.t1 optimize note The storage engine for the table doesn't support optimize
25743
# check layout success: 1
25744
REPAIR TABLE t1 EXTENDED;
25745
Table Op Msg_type Msg_text
25746
test.t1 repair note The storage engine for the table doesn't support repair
25747
# check layout success: 1
25750
# check TRUNCATE success: 1
25751
# check layout success: 1
25752
# End usability test (inc/partition_check.inc)
25759
f_charbig VARCHAR(1000)
25760
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
25762
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
25763
(PARTITION part1 VALUES LESS THAN (0)
25764
(SUBPARTITION subpart11, SUBPARTITION subpart12),
25765
PARTITION part2 VALUES LESS THAN (5)
25766
(SUBPARTITION subpart21, SUBPARTITION subpart22),
25767
PARTITION part3 VALUES LESS THAN (10)
25768
(SUBPARTITION subpart31, SUBPARTITION subpart32),
25769
PARTITION part4 VALUES LESS THAN (2147483646)
25770
(SUBPARTITION subpart41, SUBPARTITION subpart42));
25771
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25772
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
25773
# Start usability test (inc/partition_check.inc)
25775
SHOW CREATE TABLE t1;
25777
t1 CREATE TABLE `t1` (
25778
`f_int1` int(11) NOT NULL DEFAULT '0',
25779
`f_int2` int(11) NOT NULL DEFAULT '0',
25780
`f_char1` char(20) DEFAULT NULL,
25781
`f_char2` char(20) DEFAULT NULL,
25782
`f_charbig` varchar(1000) DEFAULT NULL,
25783
PRIMARY KEY (`f_int1`,`f_int2`),
25784
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
25785
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
25788
$MYSQLTEST_VARDIR/master-data/test/t1.frm
25789
$MYSQLTEST_VARDIR/master-data/test/t1.par
25791
# check prerequisites-1 success: 1
25792
# check COUNT(*) success: 1
25793
# check MIN/MAX(f_int1) success: 1
25794
# check MIN/MAX(f_int2) success: 1
25795
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25796
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25797
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25798
WHERE f_int1 IN (2,3);
25799
ERROR 23000: Can't write; duplicate key in table 't1'
25800
# check prerequisites-3 success: 1
25801
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
25802
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25803
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
25804
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
25805
WHERE f_int1 IN (2,3);
25806
DELETE FROM t1 WHERE f_charbig = 'delete me';
25807
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25808
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
25809
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
25810
WHERE f_int1 IN (2,3);
25811
DELETE FROM t1 WHERE f_charbig = 'delete me';
25812
# check read via f_int1 success: 1
25813
# check read via f_int2 success: 1
25815
# check multiple-1 success: 1
25816
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25818
# check multiple-2 success: 1
25819
INSERT INTO t1 SELECT * FROM t0_template
25820
WHERE MOD(f_int1,3) = 0;
25822
# check multiple-3 success: 1
25823
UPDATE t1 SET f_int1 = f_int1 + @max_row
25824
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25825
AND @max_row_div2 + @max_row_div4;
25827
# check multiple-4 success: 1
25829
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25830
AND @max_row_div2 + @max_row_div4 + @max_row;
25832
# check multiple-5 success: 1
25833
SELECT COUNT(*) INTO @try_count FROM t0_template
25834
WHERE MOD(f_int1,3) = 0
25835
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25836
SELECT COUNT(*) INTO @clash_count
25837
FROM t1 INNER JOIN t0_template USING(f_int1)
25838
WHERE MOD(f_int1,3) = 0
25839
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25840
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25842
SET f_int1 = @cur_value , f_int2 = @cur_value,
25843
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25844
f_charbig = '#SINGLE#';
25846
# check single-1 success: 1
25847
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25849
SET f_int1 = @cur_value , f_int2 = @cur_value,
25850
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25851
f_charbig = '#SINGLE#';
25853
# check single-2 success: 1
25854
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25855
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25856
UPDATE t1 SET f_int1 = @cur_value2
25857
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25859
# check single-3 success: 1
25860
SET @cur_value1= -1;
25861
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25862
UPDATE t1 SET f_int1 = @cur_value1
25863
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25865
# check single-4 success: 1
25866
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25867
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25869
# check single-5 success: 1
25870
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25872
# check single-6 success: 1
25873
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25874
ERROR HY000: Table has no partition for value 2147483647
25875
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25876
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25877
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25878
f_charbig = '#NULL#';
25880
SET f_int1 = NULL , f_int2 = -@max_row,
25881
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25882
f_charbig = '#NULL#';
25883
ERROR 23000: Column 'f_int1' cannot be null
25884
# check null success: 1
25886
WHERE f_int1 = 0 AND f_int2 = 0
25887
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25888
AND f_charbig = '#NULL#';
25889
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25890
SELECT f_int1, f_int1, '', '', 'was inserted'
25891
FROM t0_template source_tab
25892
WHERE MOD(f_int1,3) = 0
25893
AND f_int1 BETWEEN @max_row_div2 AND @max_row
25895
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
25896
f_int2 = 2 * @max_row + source_tab.f_int1,
25897
f_charbig = 'was updated';
25899
# check unique-1-a success: 1
25901
# check unique-1-b success: 1
25902
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25903
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25904
f_int2 = CAST(f_char1 AS SIGNED INT),
25905
f_charbig = CONCAT('===',f_char1,'===')
25906
WHERE f_charbig = 'was updated';
25907
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25908
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
25909
FROM t0_template source_tab
25910
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
25912
# check replace success: 1
25914
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
25916
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
25917
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
25918
UPDATE t1 SET f_int2 = f_int1,
25919
f_char1 = CAST(f_int1 AS CHAR),
25920
f_char2 = CAST(f_int1 AS CHAR),
25921
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
25922
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
25924
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25925
SELECT f_int1, f_int1, '', '', 'was inserted'
25926
FROM t0_template source_tab
25927
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25929
# check transactions-1 success: 1
25932
# check transactions-2 success: 1
25935
# check transactions-3 success: 1
25936
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25940
# check transactions-4 success: 1
25941
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25942
SELECT f_int1, f_int1, '', '', 'was inserted'
25943
FROM t0_template source_tab
25944
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25946
# check transactions-5 success: 1
25949
# check transactions-6 success: 1
25950
# INFO: Storage engine used for t1 seems to be transactional.
25953
# check transactions-7 success: 1
25954
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25956
SET @@session.sql_mode = 'traditional';
25957
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25958
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25959
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25960
'', '', 'was inserted' FROM t0_template
25961
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25962
ERROR 22012: Division by 0
25965
# check transactions-8 success: 1
25966
# INFO: Storage engine used for t1 seems to be able to revert
25967
# changes made by the failing statement.
25968
SET @@session.sql_mode = '';
25970
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25972
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25974
# check special-1 success: 1
25975
UPDATE t1 SET f_charbig = '';
25977
# check special-2 success: 1
25978
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25979
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25980
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25981
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25982
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25983
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25984
'just inserted' FROM t0_template
25985
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25986
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25988
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25989
f_charbig = 'updated by trigger'
25990
WHERE f_int1 = new.f_int1;
25992
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25993
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25994
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25996
# check trigger-1 success: 1
25997
DROP TRIGGER trg_1;
25998
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25999
f_int2 = CAST(f_char1 AS SIGNED INT),
26000
f_charbig = 'just inserted'
26001
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26003
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26004
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26005
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26006
'just inserted' FROM t0_template
26007
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26008
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26010
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26011
f_charbig = 'updated by trigger'
26012
WHERE f_int1 = new.f_int1;
26014
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26015
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26016
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26018
# check trigger-2 success: 1
26019
DROP TRIGGER trg_1;
26020
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26021
f_int2 = CAST(f_char1 AS SIGNED INT),
26022
f_charbig = 'just inserted'
26023
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26025
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26026
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26027
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26028
'just inserted' FROM t0_template
26029
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26030
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26032
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26033
f_charbig = 'updated by trigger'
26034
WHERE f_int1 = new.f_int1;
26036
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26037
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26039
# check trigger-3 success: 1
26040
DROP TRIGGER trg_1;
26041
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26042
f_int2 = CAST(f_char1 AS SIGNED INT),
26043
f_charbig = 'just inserted'
26044
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26046
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26047
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26048
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26049
'just inserted' FROM t0_template
26050
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26051
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26053
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26054
f_charbig = 'updated by trigger'
26055
WHERE f_int1 = - old.f_int1;
26057
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26058
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26060
# check trigger-4 success: 1
26061
DROP TRIGGER trg_1;
26062
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26063
f_int2 = CAST(f_char1 AS SIGNED INT),
26064
f_charbig = 'just inserted'
26065
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26067
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26068
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26069
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26070
'just inserted' FROM t0_template
26071
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26072
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26074
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26075
f_charbig = 'updated by trigger'
26076
WHERE f_int1 = new.f_int1;
26078
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26079
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26081
# check trigger-5 success: 1
26082
DROP TRIGGER trg_1;
26083
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26084
f_int2 = CAST(f_char1 AS SIGNED INT),
26085
f_charbig = 'just inserted'
26086
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26088
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26089
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26090
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26091
'just inserted' FROM t0_template
26092
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26093
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26095
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26096
f_charbig = 'updated by trigger'
26097
WHERE f_int1 = - old.f_int1;
26099
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26100
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26102
# check trigger-6 success: 1
26103
DROP TRIGGER trg_1;
26104
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26105
f_int2 = CAST(f_char1 AS SIGNED INT),
26106
f_charbig = 'just inserted'
26107
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26109
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26110
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26111
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26112
'just inserted' FROM t0_template
26113
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26114
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26116
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26117
f_charbig = 'updated by trigger'
26118
WHERE f_int1 = - old.f_int1;
26121
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26123
# check trigger-7 success: 1
26124
DROP TRIGGER trg_1;
26125
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26126
f_int2 = CAST(f_char1 AS SIGNED INT),
26127
f_charbig = 'just inserted'
26128
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26130
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26131
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26132
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26133
'just inserted' FROM t0_template
26134
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26135
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26137
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26138
f_charbig = 'updated by trigger'
26139
WHERE f_int1 = - old.f_int1;
26142
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26144
# check trigger-8 success: 1
26145
DROP TRIGGER trg_1;
26146
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26147
f_int2 = CAST(f_char1 AS SIGNED INT),
26148
f_charbig = 'just inserted'
26149
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26151
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26153
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26154
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26156
SET new.f_int1 = old.f_int1 + @max_row,
26157
new.f_int2 = old.f_int2 - @max_row,
26158
new.f_charbig = '####updated per update trigger####';
26161
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26162
f_charbig = '####updated per update statement itself####';
26164
# check trigger-9 success: 1
26165
DROP TRIGGER trg_2;
26166
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26167
f_int2 = CAST(f_char1 AS SIGNED INT),
26168
f_charbig = CONCAT('===',f_char1,'===');
26169
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26171
SET new.f_int1 = new.f_int1 + @max_row,
26172
new.f_int2 = new.f_int2 - @max_row,
26173
new.f_charbig = '####updated per update trigger####';
26176
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26177
f_charbig = '####updated per update statement itself####';
26179
# check trigger-10 success: 1
26180
DROP TRIGGER trg_2;
26181
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26182
f_int2 = CAST(f_char1 AS SIGNED INT),
26183
f_charbig = CONCAT('===',f_char1,'===');
26184
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26186
SET new.f_int1 = @my_max1 + @counter,
26187
new.f_int2 = @my_min2 - @counter,
26188
new.f_charbig = '####updated per insert trigger####';
26189
SET @counter = @counter + 1;
26192
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26193
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26194
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26195
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26196
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26198
DROP TRIGGER trg_3;
26200
# check trigger-11 success: 1
26202
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26203
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26204
AND f_charbig = '####updated per insert trigger####';
26205
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26207
SET new.f_int1 = @my_max1 + @counter,
26208
new.f_int2 = @my_min2 - @counter,
26209
new.f_charbig = '####updated per insert trigger####';
26210
SET @counter = @counter + 1;
26213
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26214
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26215
SELECT CAST(f_int1 AS CHAR),
26216
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26217
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26219
DROP TRIGGER trg_3;
26221
# check trigger-12 success: 1
26223
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26224
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26225
AND f_charbig = '####updated per insert trigger####';
26227
Table Op Msg_type Msg_text
26228
test.t1 analyze note The storage engine for the table doesn't support analyze
26229
CHECK TABLE t1 EXTENDED;
26230
Table Op Msg_type Msg_text
26231
test.t1 check note The storage engine for the table doesn't support check
26232
CHECKSUM TABLE t1 EXTENDED;
26234
test.t1 <some_value>
26236
Table Op Msg_type Msg_text
26237
test.t1 optimize note The storage engine for the table doesn't support optimize
26238
# check layout success: 1
26239
REPAIR TABLE t1 EXTENDED;
26240
Table Op Msg_type Msg_text
26241
test.t1 repair note The storage engine for the table doesn't support repair
26242
# check layout success: 1
26245
# check TRUNCATE success: 1
26246
# check layout success: 1
26247
# End usability test (inc/partition_check.inc)
26254
f_charbig VARCHAR(1000)
26255
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
26257
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
26258
(PARTITION part1 VALUES IN (0)
26259
(SUBPARTITION sp11, SUBPARTITION sp12),
26260
PARTITION part2 VALUES IN (1)
26261
(SUBPARTITION sp21, SUBPARTITION sp22),
26262
PARTITION part3 VALUES IN (2)
26263
(SUBPARTITION sp31, SUBPARTITION sp32),
26264
PARTITION part4 VALUES IN (NULL)
26265
(SUBPARTITION sp41, SUBPARTITION sp42));
26266
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26267
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
26268
# Start usability test (inc/partition_check.inc)
26270
SHOW CREATE TABLE t1;
26272
t1 CREATE TABLE `t1` (
26273
`f_int1` int(11) NOT NULL DEFAULT '0',
26274
`f_int2` int(11) NOT NULL DEFAULT '0',
26275
`f_char1` char(20) DEFAULT NULL,
26276
`f_char2` char(20) DEFAULT NULL,
26277
`f_charbig` varchar(1000) DEFAULT NULL,
26278
PRIMARY KEY (`f_int1`,`f_int2`),
26279
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
26280
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
26283
$MYSQLTEST_VARDIR/master-data/test/t1.frm
26284
$MYSQLTEST_VARDIR/master-data/test/t1.par
26286
# check prerequisites-1 success: 1
26287
# check COUNT(*) success: 1
26288
# check MIN/MAX(f_int1) success: 1
26289
# check MIN/MAX(f_int2) success: 1
26290
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26291
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26292
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26293
WHERE f_int1 IN (2,3);
26294
ERROR 23000: Can't write; duplicate key in table 't1'
26295
# check prerequisites-3 success: 1
26296
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
26297
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26298
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
26299
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
26300
WHERE f_int1 IN (2,3);
26301
DELETE FROM t1 WHERE f_charbig = 'delete me';
26302
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26303
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
26304
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
26305
WHERE f_int1 IN (2,3);
26306
DELETE FROM t1 WHERE f_charbig = 'delete me';
26307
# check read via f_int1 success: 1
26308
# check read via f_int2 success: 1
26310
# check multiple-1 success: 1
26311
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26313
# check multiple-2 success: 1
26314
INSERT INTO t1 SELECT * FROM t0_template
26315
WHERE MOD(f_int1,3) = 0;
26317
# check multiple-3 success: 1
26318
UPDATE t1 SET f_int1 = f_int1 + @max_row
26319
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26320
AND @max_row_div2 + @max_row_div4;
26322
# check multiple-4 success: 1
26324
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26325
AND @max_row_div2 + @max_row_div4 + @max_row;
26327
# check multiple-5 success: 1
26328
SELECT COUNT(*) INTO @try_count FROM t0_template
26329
WHERE MOD(f_int1,3) = 0
26330
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26331
SELECT COUNT(*) INTO @clash_count
26332
FROM t1 INNER JOIN t0_template USING(f_int1)
26333
WHERE MOD(f_int1,3) = 0
26334
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26335
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26337
SET f_int1 = @cur_value , f_int2 = @cur_value,
26338
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26339
f_charbig = '#SINGLE#';
26341
# check single-1 success: 1
26342
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26344
SET f_int1 = @cur_value , f_int2 = @cur_value,
26345
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26346
f_charbig = '#SINGLE#';
26348
# check single-2 success: 1
26349
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26350
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26351
UPDATE t1 SET f_int1 = @cur_value2
26352
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26354
# check single-3 success: 1
26355
SET @cur_value1= -1;
26356
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26357
UPDATE t1 SET f_int1 = @cur_value1
26358
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26360
# check single-4 success: 1
26361
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26362
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26364
# check single-5 success: 1
26365
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26367
# check single-6 success: 1
26368
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26370
# check single-7 success: 1
26371
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
26372
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26373
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26374
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26375
f_charbig = '#NULL#';
26377
SET f_int1 = NULL , f_int2 = -@max_row,
26378
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26379
f_charbig = '#NULL#';
26380
ERROR 23000: Column 'f_int1' cannot be null
26381
# check null success: 1
26383
WHERE f_int1 = 0 AND f_int2 = 0
26384
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26385
AND f_charbig = '#NULL#';
26386
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26387
SELECT f_int1, f_int1, '', '', 'was inserted'
26388
FROM t0_template source_tab
26389
WHERE MOD(f_int1,3) = 0
26390
AND f_int1 BETWEEN @max_row_div2 AND @max_row
26392
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
26393
f_int2 = 2 * @max_row + source_tab.f_int1,
26394
f_charbig = 'was updated';
26396
# check unique-1-a success: 1
26398
# check unique-1-b success: 1
26399
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26400
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26401
f_int2 = CAST(f_char1 AS SIGNED INT),
26402
f_charbig = CONCAT('===',f_char1,'===')
26403
WHERE f_charbig = 'was updated';
26404
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26405
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
26406
FROM t0_template source_tab
26407
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26409
# check replace success: 1
26411
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
26413
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
26414
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
26415
UPDATE t1 SET f_int2 = f_int1,
26416
f_char1 = CAST(f_int1 AS CHAR),
26417
f_char2 = CAST(f_int1 AS CHAR),
26418
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
26419
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
26421
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26422
SELECT f_int1, f_int1, '', '', 'was inserted'
26423
FROM t0_template source_tab
26424
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26426
# check transactions-1 success: 1
26429
# check transactions-2 success: 1
26432
# check transactions-3 success: 1
26433
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26437
# check transactions-4 success: 1
26438
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26439
SELECT f_int1, f_int1, '', '', 'was inserted'
26440
FROM t0_template source_tab
26441
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26443
# check transactions-5 success: 1
26446
# check transactions-6 success: 1
26447
# INFO: Storage engine used for t1 seems to be transactional.
26450
# check transactions-7 success: 1
26451
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26453
SET @@session.sql_mode = 'traditional';
26454
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26455
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26456
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26457
'', '', 'was inserted' FROM t0_template
26458
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26459
ERROR 22012: Division by 0
26462
# check transactions-8 success: 1
26463
# INFO: Storage engine used for t1 seems to be able to revert
26464
# changes made by the failing statement.
26465
SET @@session.sql_mode = '';
26467
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26469
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26471
# check special-1 success: 1
26472
UPDATE t1 SET f_charbig = '';
26474
# check special-2 success: 1
26475
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26476
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26477
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26478
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26479
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26480
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26481
'just inserted' FROM t0_template
26482
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26483
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26485
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26486
f_charbig = 'updated by trigger'
26487
WHERE f_int1 = new.f_int1;
26489
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26490
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26491
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26493
# check trigger-1 success: 1
26494
DROP TRIGGER trg_1;
26495
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26496
f_int2 = CAST(f_char1 AS SIGNED INT),
26497
f_charbig = 'just inserted'
26498
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26500
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26501
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26502
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26503
'just inserted' FROM t0_template
26504
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26505
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26507
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26508
f_charbig = 'updated by trigger'
26509
WHERE f_int1 = new.f_int1;
26511
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26512
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26513
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26515
# check trigger-2 success: 1
26516
DROP TRIGGER trg_1;
26517
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26518
f_int2 = CAST(f_char1 AS SIGNED INT),
26519
f_charbig = 'just inserted'
26520
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26522
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26523
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26524
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26525
'just inserted' FROM t0_template
26526
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26527
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26529
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26530
f_charbig = 'updated by trigger'
26531
WHERE f_int1 = new.f_int1;
26533
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26534
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26536
# check trigger-3 success: 1
26537
DROP TRIGGER trg_1;
26538
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26539
f_int2 = CAST(f_char1 AS SIGNED INT),
26540
f_charbig = 'just inserted'
26541
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26543
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26544
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26545
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26546
'just inserted' FROM t0_template
26547
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26548
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26550
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26551
f_charbig = 'updated by trigger'
26552
WHERE f_int1 = - old.f_int1;
26554
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26555
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26557
# check trigger-4 success: 1
26558
DROP TRIGGER trg_1;
26559
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26560
f_int2 = CAST(f_char1 AS SIGNED INT),
26561
f_charbig = 'just inserted'
26562
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26564
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26565
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26566
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26567
'just inserted' FROM t0_template
26568
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26569
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26571
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26572
f_charbig = 'updated by trigger'
26573
WHERE f_int1 = new.f_int1;
26575
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26576
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26578
# check trigger-5 success: 1
26579
DROP TRIGGER trg_1;
26580
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26581
f_int2 = CAST(f_char1 AS SIGNED INT),
26582
f_charbig = 'just inserted'
26583
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26585
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26586
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26587
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26588
'just inserted' FROM t0_template
26589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26590
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26592
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26593
f_charbig = 'updated by trigger'
26594
WHERE f_int1 = - old.f_int1;
26596
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26597
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26599
# check trigger-6 success: 1
26600
DROP TRIGGER trg_1;
26601
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26602
f_int2 = CAST(f_char1 AS SIGNED INT),
26603
f_charbig = 'just inserted'
26604
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26606
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26607
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26608
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26609
'just inserted' FROM t0_template
26610
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26611
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26613
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26614
f_charbig = 'updated by trigger'
26615
WHERE f_int1 = - old.f_int1;
26618
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26620
# check trigger-7 success: 1
26621
DROP TRIGGER trg_1;
26622
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26623
f_int2 = CAST(f_char1 AS SIGNED INT),
26624
f_charbig = 'just inserted'
26625
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26627
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26628
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26629
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26630
'just inserted' FROM t0_template
26631
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26632
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26634
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26635
f_charbig = 'updated by trigger'
26636
WHERE f_int1 = - old.f_int1;
26639
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26641
# check trigger-8 success: 1
26642
DROP TRIGGER trg_1;
26643
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26644
f_int2 = CAST(f_char1 AS SIGNED INT),
26645
f_charbig = 'just inserted'
26646
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26648
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26650
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26651
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26653
SET new.f_int1 = old.f_int1 + @max_row,
26654
new.f_int2 = old.f_int2 - @max_row,
26655
new.f_charbig = '####updated per update trigger####';
26658
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26659
f_charbig = '####updated per update statement itself####';
26661
# check trigger-9 success: 1
26662
DROP TRIGGER trg_2;
26663
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26664
f_int2 = CAST(f_char1 AS SIGNED INT),
26665
f_charbig = CONCAT('===',f_char1,'===');
26666
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26668
SET new.f_int1 = new.f_int1 + @max_row,
26669
new.f_int2 = new.f_int2 - @max_row,
26670
new.f_charbig = '####updated per update trigger####';
26673
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26674
f_charbig = '####updated per update statement itself####';
26676
# check trigger-10 success: 1
26677
DROP TRIGGER trg_2;
26678
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26679
f_int2 = CAST(f_char1 AS SIGNED INT),
26680
f_charbig = CONCAT('===',f_char1,'===');
26681
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26683
SET new.f_int1 = @my_max1 + @counter,
26684
new.f_int2 = @my_min2 - @counter,
26685
new.f_charbig = '####updated per insert trigger####';
26686
SET @counter = @counter + 1;
26689
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26690
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26691
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26692
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26693
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26695
DROP TRIGGER trg_3;
26697
# check trigger-11 success: 1
26699
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26700
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26701
AND f_charbig = '####updated per insert trigger####';
26702
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26704
SET new.f_int1 = @my_max1 + @counter,
26705
new.f_int2 = @my_min2 - @counter,
26706
new.f_charbig = '####updated per insert trigger####';
26707
SET @counter = @counter + 1;
26710
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26711
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26712
SELECT CAST(f_int1 AS CHAR),
26713
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26714
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26716
DROP TRIGGER trg_3;
26718
# check trigger-12 success: 1
26720
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26721
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26722
AND f_charbig = '####updated per insert trigger####';
26724
Table Op Msg_type Msg_text
26725
test.t1 analyze note The storage engine for the table doesn't support analyze
26726
CHECK TABLE t1 EXTENDED;
26727
Table Op Msg_type Msg_text
26728
test.t1 check note The storage engine for the table doesn't support check
26729
CHECKSUM TABLE t1 EXTENDED;
26731
test.t1 <some_value>
26733
Table Op Msg_type Msg_text
26734
test.t1 optimize note The storage engine for the table doesn't support optimize
26735
# check layout success: 1
26736
REPAIR TABLE t1 EXTENDED;
26737
Table Op Msg_type Msg_text
26738
test.t1 repair note The storage engine for the table doesn't support repair
26739
# check layout success: 1
26742
# check TRUNCATE success: 1
26743
# check layout success: 1
26744
# End usability test (inc/partition_check.inc)
26751
f_charbig VARCHAR(1000)
26752
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
26754
PARTITION BY LIST(ABS(MOD(f_int1,2)))
26755
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
26756
(PARTITION part1 VALUES IN (0),
26757
PARTITION part2 VALUES IN (1),
26758
PARTITION part3 VALUES IN (NULL));
26759
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26760
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
26761
# Start usability test (inc/partition_check.inc)
26763
SHOW CREATE TABLE t1;
26765
t1 CREATE TABLE `t1` (
26766
`f_int1` int(11) NOT NULL DEFAULT '0',
26767
`f_int2` int(11) NOT NULL DEFAULT '0',
26768
`f_char1` char(20) DEFAULT NULL,
26769
`f_char2` char(20) DEFAULT NULL,
26770
`f_charbig` varchar(1000) DEFAULT NULL,
26771
PRIMARY KEY (`f_int1`,`f_int2`),
26772
UNIQUE KEY `uidx1` (`f_int2`,`f_int1`)
26773
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
26776
$MYSQLTEST_VARDIR/master-data/test/t1.frm
26777
$MYSQLTEST_VARDIR/master-data/test/t1.par
26779
# check prerequisites-1 success: 1
26780
# check COUNT(*) success: 1
26781
# check MIN/MAX(f_int1) success: 1
26782
# check MIN/MAX(f_int2) success: 1
26783
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26784
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26785
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26786
WHERE f_int1 IN (2,3);
26787
ERROR 23000: Can't write; duplicate key in table 't1'
26788
# check prerequisites-3 success: 1
26789
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
26790
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26791
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
26792
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
26793
WHERE f_int1 IN (2,3);
26794
DELETE FROM t1 WHERE f_charbig = 'delete me';
26795
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26796
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
26797
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
26798
WHERE f_int1 IN (2,3);
26799
DELETE FROM t1 WHERE f_charbig = 'delete me';
26800
# check read via f_int1 success: 1
26801
# check read via f_int2 success: 1
26803
# check multiple-1 success: 1
26804
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26806
# check multiple-2 success: 1
26807
INSERT INTO t1 SELECT * FROM t0_template
26808
WHERE MOD(f_int1,3) = 0;
26810
# check multiple-3 success: 1
26811
UPDATE t1 SET f_int1 = f_int1 + @max_row
26812
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26813
AND @max_row_div2 + @max_row_div4;
26815
# check multiple-4 success: 1
26817
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26818
AND @max_row_div2 + @max_row_div4 + @max_row;
26820
# check multiple-5 success: 1
26821
SELECT COUNT(*) INTO @try_count FROM t0_template
26822
WHERE MOD(f_int1,3) = 0
26823
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26824
SELECT COUNT(*) INTO @clash_count
26825
FROM t1 INNER JOIN t0_template USING(f_int1)
26826
WHERE MOD(f_int1,3) = 0
26827
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26828
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26830
SET f_int1 = @cur_value , f_int2 = @cur_value,
26831
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26832
f_charbig = '#SINGLE#';
26834
# check single-1 success: 1
26835
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26837
SET f_int1 = @cur_value , f_int2 = @cur_value,
26838
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26839
f_charbig = '#SINGLE#';
26841
# check single-2 success: 1
26842
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26843
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26844
UPDATE t1 SET f_int1 = @cur_value2
26845
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26847
# check single-3 success: 1
26848
SET @cur_value1= -1;
26849
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26850
UPDATE t1 SET f_int1 = @cur_value1
26851
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26853
# check single-4 success: 1
26854
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26855
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26857
# check single-5 success: 1
26858
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26860
# check single-6 success: 1
26861
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26863
# check single-7 success: 1
26864
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
26865
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26866
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26867
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26868
f_charbig = '#NULL#';
26870
SET f_int1 = NULL , f_int2 = -@max_row,
26871
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26872
f_charbig = '#NULL#';
26873
ERROR 23000: Column 'f_int1' cannot be null
26874
# check null success: 1
26876
WHERE f_int1 = 0 AND f_int2 = 0
26877
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26878
AND f_charbig = '#NULL#';
26879
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26880
SELECT f_int1, f_int1, '', '', 'was inserted'
26881
FROM t0_template source_tab
26882
WHERE MOD(f_int1,3) = 0
26883
AND f_int1 BETWEEN @max_row_div2 AND @max_row
26885
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
26886
f_int2 = 2 * @max_row + source_tab.f_int1,
26887
f_charbig = 'was updated';
26889
# check unique-1-a success: 1
26891
# check unique-1-b success: 1
26892
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26893
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26894
f_int2 = CAST(f_char1 AS SIGNED INT),
26895
f_charbig = CONCAT('===',f_char1,'===')
26896
WHERE f_charbig = 'was updated';
26897
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26898
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
26899
FROM t0_template source_tab
26900
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
26902
# check replace success: 1
26904
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
26906
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
26907
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
26908
UPDATE t1 SET f_int2 = f_int1,
26909
f_char1 = CAST(f_int1 AS CHAR),
26910
f_char2 = CAST(f_int1 AS CHAR),
26911
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
26912
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
26914
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26915
SELECT f_int1, f_int1, '', '', 'was inserted'
26916
FROM t0_template source_tab
26917
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26919
# check transactions-1 success: 1
26922
# check transactions-2 success: 1
26925
# check transactions-3 success: 1
26926
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26930
# check transactions-4 success: 1
26931
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26932
SELECT f_int1, f_int1, '', '', 'was inserted'
26933
FROM t0_template source_tab
26934
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26936
# check transactions-5 success: 1
26939
# check transactions-6 success: 1
26940
# INFO: Storage engine used for t1 seems to be transactional.
26943
# check transactions-7 success: 1
26944
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26946
SET @@session.sql_mode = 'traditional';
26947
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26948
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26949
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26950
'', '', 'was inserted' FROM t0_template
26951
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26952
ERROR 22012: Division by 0
26955
# check transactions-8 success: 1
26956
# INFO: Storage engine used for t1 seems to be able to revert
26957
# changes made by the failing statement.
26958
SET @@session.sql_mode = '';
26960
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26962
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26964
# check special-1 success: 1
26965
UPDATE t1 SET f_charbig = '';
26967
# check special-2 success: 1
26968
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26969
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26970
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26971
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26972
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26973
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26974
'just inserted' FROM t0_template
26975
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26976
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26978
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26979
f_charbig = 'updated by trigger'
26980
WHERE f_int1 = new.f_int1;
26982
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26983
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26984
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26986
# check trigger-1 success: 1
26987
DROP TRIGGER trg_1;
26988
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26989
f_int2 = CAST(f_char1 AS SIGNED INT),
26990
f_charbig = 'just inserted'
26991
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26993
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26994
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26995
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26996
'just inserted' FROM t0_template
26997
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26998
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27000
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27001
f_charbig = 'updated by trigger'
27002
WHERE f_int1 = new.f_int1;
27004
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27005
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27006
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27008
# check trigger-2 success: 1
27009
DROP TRIGGER trg_1;
27010
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27011
f_int2 = CAST(f_char1 AS SIGNED INT),
27012
f_charbig = 'just inserted'
27013
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27015
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27016
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27017
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27018
'just inserted' FROM t0_template
27019
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27020
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27022
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27023
f_charbig = 'updated by trigger'
27024
WHERE f_int1 = new.f_int1;
27026
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27027
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27029
# check trigger-3 success: 1
27030
DROP TRIGGER trg_1;
27031
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27032
f_int2 = CAST(f_char1 AS SIGNED INT),
27033
f_charbig = 'just inserted'
27034
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27036
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27037
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27038
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27039
'just inserted' FROM t0_template
27040
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27041
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27043
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27044
f_charbig = 'updated by trigger'
27045
WHERE f_int1 = - old.f_int1;
27047
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27048
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27050
# check trigger-4 success: 1
27051
DROP TRIGGER trg_1;
27052
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27053
f_int2 = CAST(f_char1 AS SIGNED INT),
27054
f_charbig = 'just inserted'
27055
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27057
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27058
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27059
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27060
'just inserted' FROM t0_template
27061
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27062
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27064
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27065
f_charbig = 'updated by trigger'
27066
WHERE f_int1 = new.f_int1;
27068
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27069
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27071
# check trigger-5 success: 1
27072
DROP TRIGGER trg_1;
27073
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27074
f_int2 = CAST(f_char1 AS SIGNED INT),
27075
f_charbig = 'just inserted'
27076
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27078
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27079
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27080
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27081
'just inserted' FROM t0_template
27082
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27083
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27085
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27086
f_charbig = 'updated by trigger'
27087
WHERE f_int1 = - old.f_int1;
27089
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27090
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27092
# check trigger-6 success: 1
27093
DROP TRIGGER trg_1;
27094
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27095
f_int2 = CAST(f_char1 AS SIGNED INT),
27096
f_charbig = 'just inserted'
27097
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27099
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27100
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27101
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27102
'just inserted' FROM t0_template
27103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27104
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27106
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27107
f_charbig = 'updated by trigger'
27108
WHERE f_int1 = - old.f_int1;
27111
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27113
# check trigger-7 success: 1
27114
DROP TRIGGER trg_1;
27115
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27116
f_int2 = CAST(f_char1 AS SIGNED INT),
27117
f_charbig = 'just inserted'
27118
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27120
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27121
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27122
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27123
'just inserted' FROM t0_template
27124
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27125
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27127
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27128
f_charbig = 'updated by trigger'
27129
WHERE f_int1 = - old.f_int1;
27132
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27134
# check trigger-8 success: 1
27135
DROP TRIGGER trg_1;
27136
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27137
f_int2 = CAST(f_char1 AS SIGNED INT),
27138
f_charbig = 'just inserted'
27139
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27141
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27143
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27144
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27146
SET new.f_int1 = old.f_int1 + @max_row,
27147
new.f_int2 = old.f_int2 - @max_row,
27148
new.f_charbig = '####updated per update trigger####';
27151
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27152
f_charbig = '####updated per update statement itself####';
27154
# check trigger-9 success: 1
27155
DROP TRIGGER trg_2;
27156
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27157
f_int2 = CAST(f_char1 AS SIGNED INT),
27158
f_charbig = CONCAT('===',f_char1,'===');
27159
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27161
SET new.f_int1 = new.f_int1 + @max_row,
27162
new.f_int2 = new.f_int2 - @max_row,
27163
new.f_charbig = '####updated per update trigger####';
27166
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27167
f_charbig = '####updated per update statement itself####';
27169
# check trigger-10 success: 1
27170
DROP TRIGGER trg_2;
27171
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27172
f_int2 = CAST(f_char1 AS SIGNED INT),
27173
f_charbig = CONCAT('===',f_char1,'===');
27174
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27176
SET new.f_int1 = @my_max1 + @counter,
27177
new.f_int2 = @my_min2 - @counter,
27178
new.f_charbig = '####updated per insert trigger####';
27179
SET @counter = @counter + 1;
27182
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27183
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27184
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27185
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27186
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27188
DROP TRIGGER trg_3;
27190
# check trigger-11 success: 1
27192
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27193
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27194
AND f_charbig = '####updated per insert trigger####';
27195
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27197
SET new.f_int1 = @my_max1 + @counter,
27198
new.f_int2 = @my_min2 - @counter,
27199
new.f_charbig = '####updated per insert trigger####';
27200
SET @counter = @counter + 1;
27203
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27204
INSERT INTO t1 (f_char1, f_char2, f_charbig)
27205
SELECT CAST(f_int1 AS CHAR),
27206
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27207
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27209
DROP TRIGGER trg_3;
27211
# check trigger-12 success: 1
27213
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27214
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27215
AND f_charbig = '####updated per insert trigger####';
27217
Table Op Msg_type Msg_text
27218
test.t1 analyze note The storage engine for the table doesn't support analyze
27219
CHECK TABLE t1 EXTENDED;
27220
Table Op Msg_type Msg_text
27221
test.t1 check note The storage engine for the table doesn't support check
27222
CHECKSUM TABLE t1 EXTENDED;
27224
test.t1 <some_value>
27226
Table Op Msg_type Msg_text
27227
test.t1 optimize note The storage engine for the table doesn't support optimize
27228
# check layout success: 1
27229
REPAIR TABLE t1 EXTENDED;
27230
Table Op Msg_type Msg_text
27231
test.t1 repair note The storage engine for the table doesn't support repair
27232
# check layout success: 1
27235
# check TRUNCATE success: 1
27236
# check layout success: 1
27237
# End usability test (inc/partition_check.inc)
27239
DROP TABLE IF EXISTS t1;
27245
f_charbig VARCHAR(1000)
27246
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
27248
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
27249
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27250
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
27251
# Start usability test (inc/partition_check.inc)
27253
SHOW CREATE TABLE t1;
27255
t1 CREATE TABLE `t1` (
27256
`f_int1` int(11) DEFAULT NULL,
27257
`f_int2` int(11) DEFAULT NULL,
27258
`f_char1` char(20) DEFAULT NULL,
27259
`f_char2` char(20) DEFAULT NULL,
27260
`f_charbig` varchar(1000) DEFAULT NULL,
27261
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
27262
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
27263
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY HASH (f_int1 + f_int2) PARTITIONS 2 */
27266
$MYSQLTEST_VARDIR/master-data/test/t1.frm
27267
$MYSQLTEST_VARDIR/master-data/test/t1.par
27269
# check prerequisites-1 success: 1
27270
# check COUNT(*) success: 1
27271
# check MIN/MAX(f_int1) success: 1
27272
# check MIN/MAX(f_int2) success: 1
27273
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27274
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27275
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27276
WHERE f_int1 IN (2,3);
27277
ERROR 23000: Can't write; duplicate key in table 't1'
27278
# check prerequisites-3 success: 1
27279
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
27280
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27281
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
27282
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
27283
WHERE f_int1 IN (2,3);
27284
DELETE FROM t1 WHERE f_charbig = 'delete me';
27285
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27286
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
27287
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
27288
WHERE f_int1 IN (2,3);
27289
DELETE FROM t1 WHERE f_charbig = 'delete me';
27290
# check read via f_int1 success: 1
27291
# check read via f_int2 success: 1
27293
# check multiple-1 success: 1
27294
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27296
# check multiple-2 success: 1
27297
INSERT INTO t1 SELECT * FROM t0_template
27298
WHERE MOD(f_int1,3) = 0;
27300
# check multiple-3 success: 1
27301
UPDATE t1 SET f_int1 = f_int1 + @max_row
27302
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27303
AND @max_row_div2 + @max_row_div4;
27305
# check multiple-4 success: 1
27307
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27308
AND @max_row_div2 + @max_row_div4 + @max_row;
27310
# check multiple-5 success: 1
27311
SELECT COUNT(*) INTO @try_count FROM t0_template
27312
WHERE MOD(f_int1,3) = 0
27313
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27314
SELECT COUNT(*) INTO @clash_count
27315
FROM t1 INNER JOIN t0_template USING(f_int1)
27316
WHERE MOD(f_int1,3) = 0
27317
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27318
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27320
SET f_int1 = @cur_value , f_int2 = @cur_value,
27321
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27322
f_charbig = '#SINGLE#';
27324
# check single-1 success: 1
27325
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27327
SET f_int1 = @cur_value , f_int2 = @cur_value,
27328
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27329
f_charbig = '#SINGLE#';
27331
# check single-2 success: 1
27332
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27333
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27334
UPDATE t1 SET f_int1 = @cur_value2
27335
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27337
# check single-3 success: 1
27338
SET @cur_value1= -1;
27339
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27340
UPDATE t1 SET f_int1 = @cur_value1
27341
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27343
# check single-4 success: 1
27344
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27345
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27347
# check single-5 success: 1
27348
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27350
# check single-6 success: 1
27351
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27353
# check single-7 success: 1
27354
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
27355
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27356
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27357
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27358
f_charbig = '#NULL#';
27360
SET f_int1 = NULL , f_int2 = -@max_row,
27361
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27362
f_charbig = '#NULL#';
27363
# check null success: 1
27365
# check null-1 success: 1
27366
UPDATE t1 SET f_int1 = -@max_row
27367
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27368
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27370
# check null-2 success: 1
27371
UPDATE t1 SET f_int1 = NULL
27372
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27373
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27375
# check null-3 success: 1
27377
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27378
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27380
# check null-4 success: 1
27382
WHERE f_int1 = 0 AND f_int2 = 0
27383
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27384
AND f_charbig = '#NULL#';
27385
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27386
SELECT f_int1, f_int1, '', '', 'was inserted'
27387
FROM t0_template source_tab
27388
WHERE MOD(f_int1,3) = 0
27389
AND f_int1 BETWEEN @max_row_div2 AND @max_row
27391
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
27392
f_int2 = 2 * @max_row + source_tab.f_int1,
27393
f_charbig = 'was updated';
27395
# check unique-1-a success: 1
27397
# check unique-1-b success: 1
27398
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27399
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27400
f_int2 = CAST(f_char1 AS SIGNED INT),
27401
f_charbig = CONCAT('===',f_char1,'===')
27402
WHERE f_charbig = 'was updated';
27403
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27404
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
27405
FROM t0_template source_tab
27406
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27408
# check replace success: 1
27410
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
27412
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
27413
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
27414
UPDATE t1 SET f_int2 = f_int1,
27415
f_char1 = CAST(f_int1 AS CHAR),
27416
f_char2 = CAST(f_int1 AS CHAR),
27417
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
27418
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
27420
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27421
SELECT f_int1, f_int1, '', '', 'was inserted'
27422
FROM t0_template source_tab
27423
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27425
# check transactions-1 success: 1
27428
# check transactions-2 success: 1
27431
# check transactions-3 success: 1
27432
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27436
# check transactions-4 success: 1
27437
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27438
SELECT f_int1, f_int1, '', '', 'was inserted'
27439
FROM t0_template source_tab
27440
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27442
# check transactions-5 success: 1
27445
# check transactions-6 success: 1
27446
# INFO: Storage engine used for t1 seems to be transactional.
27449
# check transactions-7 success: 1
27450
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27452
SET @@session.sql_mode = 'traditional';
27453
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27454
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27455
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27456
'', '', 'was inserted' FROM t0_template
27457
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27458
ERROR 22012: Division by 0
27461
# check transactions-8 success: 1
27462
# INFO: Storage engine used for t1 seems to be able to revert
27463
# changes made by the failing statement.
27464
SET @@session.sql_mode = '';
27466
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27468
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27470
# check special-1 success: 1
27471
UPDATE t1 SET f_charbig = '';
27473
# check special-2 success: 1
27474
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27475
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27476
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27477
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27478
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27479
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27480
'just inserted' FROM t0_template
27481
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27482
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27484
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27485
f_charbig = 'updated by trigger'
27486
WHERE f_int1 = new.f_int1;
27488
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27489
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27490
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27492
# check trigger-1 success: 1
27493
DROP TRIGGER trg_1;
27494
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27495
f_int2 = CAST(f_char1 AS SIGNED INT),
27496
f_charbig = 'just inserted'
27497
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27499
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27500
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27501
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27502
'just inserted' FROM t0_template
27503
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27504
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27506
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27507
f_charbig = 'updated by trigger'
27508
WHERE f_int1 = new.f_int1;
27510
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27511
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27512
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27514
# check trigger-2 success: 1
27515
DROP TRIGGER trg_1;
27516
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27517
f_int2 = CAST(f_char1 AS SIGNED INT),
27518
f_charbig = 'just inserted'
27519
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27521
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27522
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27523
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27524
'just inserted' FROM t0_template
27525
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27526
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27528
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27529
f_charbig = 'updated by trigger'
27530
WHERE f_int1 = new.f_int1;
27532
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27533
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27535
# check trigger-3 success: 1
27536
DROP TRIGGER trg_1;
27537
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27538
f_int2 = CAST(f_char1 AS SIGNED INT),
27539
f_charbig = 'just inserted'
27540
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27542
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27543
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27544
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27545
'just inserted' FROM t0_template
27546
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27547
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27549
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27550
f_charbig = 'updated by trigger'
27551
WHERE f_int1 = - old.f_int1;
27553
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27554
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27556
# check trigger-4 success: 1
27557
DROP TRIGGER trg_1;
27558
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27559
f_int2 = CAST(f_char1 AS SIGNED INT),
27560
f_charbig = 'just inserted'
27561
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27563
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27564
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27565
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27566
'just inserted' FROM t0_template
27567
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27568
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27570
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27571
f_charbig = 'updated by trigger'
27572
WHERE f_int1 = new.f_int1;
27574
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27575
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27577
# check trigger-5 success: 1
27578
DROP TRIGGER trg_1;
27579
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27580
f_int2 = CAST(f_char1 AS SIGNED INT),
27581
f_charbig = 'just inserted'
27582
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27584
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27585
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27586
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27587
'just inserted' FROM t0_template
27588
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27589
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27591
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27592
f_charbig = 'updated by trigger'
27593
WHERE f_int1 = - old.f_int1;
27595
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27596
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27598
# check trigger-6 success: 1
27599
DROP TRIGGER trg_1;
27600
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27601
f_int2 = CAST(f_char1 AS SIGNED INT),
27602
f_charbig = 'just inserted'
27603
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27605
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27606
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27607
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27608
'just inserted' FROM t0_template
27609
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27610
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27612
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27613
f_charbig = 'updated by trigger'
27614
WHERE f_int1 = - old.f_int1;
27617
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27619
# check trigger-7 success: 1
27620
DROP TRIGGER trg_1;
27621
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27622
f_int2 = CAST(f_char1 AS SIGNED INT),
27623
f_charbig = 'just inserted'
27624
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27626
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27627
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27628
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27629
'just inserted' FROM t0_template
27630
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27631
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27633
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27634
f_charbig = 'updated by trigger'
27635
WHERE f_int1 = - old.f_int1;
27638
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27640
# check trigger-8 success: 1
27641
DROP TRIGGER trg_1;
27642
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27643
f_int2 = CAST(f_char1 AS SIGNED INT),
27644
f_charbig = 'just inserted'
27645
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27647
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27649
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27650
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27652
SET new.f_int1 = old.f_int1 + @max_row,
27653
new.f_int2 = old.f_int2 - @max_row,
27654
new.f_charbig = '####updated per update trigger####';
27657
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27658
f_charbig = '####updated per update statement itself####';
27660
# check trigger-9 success: 1
27661
DROP TRIGGER trg_2;
27662
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27663
f_int2 = CAST(f_char1 AS SIGNED INT),
27664
f_charbig = CONCAT('===',f_char1,'===');
27665
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27667
SET new.f_int1 = new.f_int1 + @max_row,
27668
new.f_int2 = new.f_int2 - @max_row,
27669
new.f_charbig = '####updated per update trigger####';
27672
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27673
f_charbig = '####updated per update statement itself####';
27675
# check trigger-10 success: 1
27676
DROP TRIGGER trg_2;
27677
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27678
f_int2 = CAST(f_char1 AS SIGNED INT),
27679
f_charbig = CONCAT('===',f_char1,'===');
27680
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27682
SET new.f_int1 = @my_max1 + @counter,
27683
new.f_int2 = @my_min2 - @counter,
27684
new.f_charbig = '####updated per insert trigger####';
27685
SET @counter = @counter + 1;
27688
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27689
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27690
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27691
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27692
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27694
DROP TRIGGER trg_3;
27696
# check trigger-11 success: 1
27698
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27699
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27700
AND f_charbig = '####updated per insert trigger####';
27701
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27703
SET new.f_int1 = @my_max1 + @counter,
27704
new.f_int2 = @my_min2 - @counter,
27705
new.f_charbig = '####updated per insert trigger####';
27706
SET @counter = @counter + 1;
27709
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27710
INSERT INTO t1 (f_char1, f_char2, f_charbig)
27711
SELECT CAST(f_int1 AS CHAR),
27712
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27713
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27715
DROP TRIGGER trg_3;
27717
# check trigger-12 success: 1
27719
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27720
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27721
AND f_charbig = '####updated per insert trigger####';
27723
Table Op Msg_type Msg_text
27724
test.t1 analyze note The storage engine for the table doesn't support analyze
27725
CHECK TABLE t1 EXTENDED;
27726
Table Op Msg_type Msg_text
27727
test.t1 check note The storage engine for the table doesn't support check
27728
CHECKSUM TABLE t1 EXTENDED;
27730
test.t1 <some_value>
27732
Table Op Msg_type Msg_text
27733
test.t1 optimize note The storage engine for the table doesn't support optimize
27734
# check layout success: 1
27735
REPAIR TABLE t1 EXTENDED;
27736
Table Op Msg_type Msg_text
27737
test.t1 repair note The storage engine for the table doesn't support repair
27738
# check layout success: 1
27741
# check TRUNCATE success: 1
27742
# check layout success: 1
27743
# End usability test (inc/partition_check.inc)
27750
f_charbig VARCHAR(1000)
27751
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
27753
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
27754
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27755
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
27756
# Start usability test (inc/partition_check.inc)
27758
SHOW CREATE TABLE t1;
27760
t1 CREATE TABLE `t1` (
27761
`f_int1` int(11) DEFAULT NULL,
27762
`f_int2` int(11) DEFAULT NULL,
27763
`f_char1` char(20) DEFAULT NULL,
27764
`f_char2` char(20) DEFAULT NULL,
27765
`f_charbig` varchar(1000) DEFAULT NULL,
27766
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
27767
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
27768
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY KEY (f_int1,f_int2) PARTITIONS 5 */
27771
$MYSQLTEST_VARDIR/master-data/test/t1.frm
27772
$MYSQLTEST_VARDIR/master-data/test/t1.par
27774
# check prerequisites-1 success: 1
27775
# check COUNT(*) success: 1
27776
# check MIN/MAX(f_int1) success: 1
27777
# check MIN/MAX(f_int2) success: 1
27778
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27779
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27780
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27781
WHERE f_int1 IN (2,3);
27782
ERROR 23000: Can't write; duplicate key in table 't1'
27783
# check prerequisites-3 success: 1
27784
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
27785
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27786
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
27787
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
27788
WHERE f_int1 IN (2,3);
27789
DELETE FROM t1 WHERE f_charbig = 'delete me';
27790
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27791
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
27792
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
27793
WHERE f_int1 IN (2,3);
27794
DELETE FROM t1 WHERE f_charbig = 'delete me';
27795
# check read via f_int1 success: 1
27796
# check read via f_int2 success: 1
27798
# check multiple-1 success: 1
27799
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27801
# check multiple-2 success: 1
27802
INSERT INTO t1 SELECT * FROM t0_template
27803
WHERE MOD(f_int1,3) = 0;
27805
# check multiple-3 success: 1
27806
UPDATE t1 SET f_int1 = f_int1 + @max_row
27807
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27808
AND @max_row_div2 + @max_row_div4;
27810
# check multiple-4 success: 1
27812
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27813
AND @max_row_div2 + @max_row_div4 + @max_row;
27815
# check multiple-5 success: 1
27816
SELECT COUNT(*) INTO @try_count FROM t0_template
27817
WHERE MOD(f_int1,3) = 0
27818
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27819
SELECT COUNT(*) INTO @clash_count
27820
FROM t1 INNER JOIN t0_template USING(f_int1)
27821
WHERE MOD(f_int1,3) = 0
27822
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27823
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27825
SET f_int1 = @cur_value , f_int2 = @cur_value,
27826
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27827
f_charbig = '#SINGLE#';
27829
# check single-1 success: 1
27830
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27832
SET f_int1 = @cur_value , f_int2 = @cur_value,
27833
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27834
f_charbig = '#SINGLE#';
27836
# check single-2 success: 1
27837
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27838
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27839
UPDATE t1 SET f_int1 = @cur_value2
27840
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27842
# check single-3 success: 1
27843
SET @cur_value1= -1;
27844
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27845
UPDATE t1 SET f_int1 = @cur_value1
27846
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27848
# check single-4 success: 1
27849
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27850
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27852
# check single-5 success: 1
27853
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27855
# check single-6 success: 1
27856
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27858
# check single-7 success: 1
27859
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
27860
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27861
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27862
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27863
f_charbig = '#NULL#';
27865
SET f_int1 = NULL , f_int2 = -@max_row,
27866
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27867
f_charbig = '#NULL#';
27868
# check null success: 1
27870
# check null-1 success: 1
27871
UPDATE t1 SET f_int1 = -@max_row
27872
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27873
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27875
# check null-2 success: 1
27876
UPDATE t1 SET f_int1 = NULL
27877
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27878
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27880
# check null-3 success: 1
27882
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
27883
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
27885
# check null-4 success: 1
27887
WHERE f_int1 = 0 AND f_int2 = 0
27888
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27889
AND f_charbig = '#NULL#';
27890
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27891
SELECT f_int1, f_int1, '', '', 'was inserted'
27892
FROM t0_template source_tab
27893
WHERE MOD(f_int1,3) = 0
27894
AND f_int1 BETWEEN @max_row_div2 AND @max_row
27896
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
27897
f_int2 = 2 * @max_row + source_tab.f_int1,
27898
f_charbig = 'was updated';
27900
# check unique-1-a success: 1
27902
# check unique-1-b success: 1
27903
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27904
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27905
f_int2 = CAST(f_char1 AS SIGNED INT),
27906
f_charbig = CONCAT('===',f_char1,'===')
27907
WHERE f_charbig = 'was updated';
27908
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27909
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
27910
FROM t0_template source_tab
27911
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
27913
# check replace success: 1
27915
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
27917
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
27918
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
27919
UPDATE t1 SET f_int2 = f_int1,
27920
f_char1 = CAST(f_int1 AS CHAR),
27921
f_char2 = CAST(f_int1 AS CHAR),
27922
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
27923
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
27925
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27926
SELECT f_int1, f_int1, '', '', 'was inserted'
27927
FROM t0_template source_tab
27928
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27930
# check transactions-1 success: 1
27933
# check transactions-2 success: 1
27936
# check transactions-3 success: 1
27937
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27941
# check transactions-4 success: 1
27942
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27943
SELECT f_int1, f_int1, '', '', 'was inserted'
27944
FROM t0_template source_tab
27945
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27947
# check transactions-5 success: 1
27950
# check transactions-6 success: 1
27951
# INFO: Storage engine used for t1 seems to be transactional.
27954
# check transactions-7 success: 1
27955
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27957
SET @@session.sql_mode = 'traditional';
27958
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27959
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27960
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27961
'', '', 'was inserted' FROM t0_template
27962
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27963
ERROR 22012: Division by 0
27966
# check transactions-8 success: 1
27967
# INFO: Storage engine used for t1 seems to be able to revert
27968
# changes made by the failing statement.
27969
SET @@session.sql_mode = '';
27971
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27973
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27975
# check special-1 success: 1
27976
UPDATE t1 SET f_charbig = '';
27978
# check special-2 success: 1
27979
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27980
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27981
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27982
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27983
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27984
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27985
'just inserted' FROM t0_template
27986
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27987
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27989
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27990
f_charbig = 'updated by trigger'
27991
WHERE f_int1 = new.f_int1;
27993
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27994
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27995
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27997
# check trigger-1 success: 1
27998
DROP TRIGGER trg_1;
27999
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28000
f_int2 = CAST(f_char1 AS SIGNED INT),
28001
f_charbig = 'just inserted'
28002
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28004
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28005
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28006
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28007
'just inserted' FROM t0_template
28008
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28009
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28011
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28012
f_charbig = 'updated by trigger'
28013
WHERE f_int1 = new.f_int1;
28015
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28016
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28017
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28019
# check trigger-2 success: 1
28020
DROP TRIGGER trg_1;
28021
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28022
f_int2 = CAST(f_char1 AS SIGNED INT),
28023
f_charbig = 'just inserted'
28024
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28026
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28027
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28028
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28029
'just inserted' FROM t0_template
28030
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28031
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28033
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28034
f_charbig = 'updated by trigger'
28035
WHERE f_int1 = new.f_int1;
28037
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28038
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28040
# check trigger-3 success: 1
28041
DROP TRIGGER trg_1;
28042
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28043
f_int2 = CAST(f_char1 AS SIGNED INT),
28044
f_charbig = 'just inserted'
28045
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28047
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28048
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28049
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28050
'just inserted' FROM t0_template
28051
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28052
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28054
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28055
f_charbig = 'updated by trigger'
28056
WHERE f_int1 = - old.f_int1;
28058
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28059
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28061
# check trigger-4 success: 1
28062
DROP TRIGGER trg_1;
28063
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28064
f_int2 = CAST(f_char1 AS SIGNED INT),
28065
f_charbig = 'just inserted'
28066
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28068
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28069
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28070
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28071
'just inserted' FROM t0_template
28072
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28073
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28075
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28076
f_charbig = 'updated by trigger'
28077
WHERE f_int1 = new.f_int1;
28079
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28080
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28082
# check trigger-5 success: 1
28083
DROP TRIGGER trg_1;
28084
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28085
f_int2 = CAST(f_char1 AS SIGNED INT),
28086
f_charbig = 'just inserted'
28087
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28089
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28090
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28091
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28092
'just inserted' FROM t0_template
28093
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28094
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28096
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28097
f_charbig = 'updated by trigger'
28098
WHERE f_int1 = - old.f_int1;
28100
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28101
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28103
# check trigger-6 success: 1
28104
DROP TRIGGER trg_1;
28105
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28106
f_int2 = CAST(f_char1 AS SIGNED INT),
28107
f_charbig = 'just inserted'
28108
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28110
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28111
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28112
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28113
'just inserted' FROM t0_template
28114
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28115
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28117
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28118
f_charbig = 'updated by trigger'
28119
WHERE f_int1 = - old.f_int1;
28122
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28124
# check trigger-7 success: 1
28125
DROP TRIGGER trg_1;
28126
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28127
f_int2 = CAST(f_char1 AS SIGNED INT),
28128
f_charbig = 'just inserted'
28129
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28131
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28132
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28133
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28134
'just inserted' FROM t0_template
28135
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28136
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28138
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28139
f_charbig = 'updated by trigger'
28140
WHERE f_int1 = - old.f_int1;
28143
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28145
# check trigger-8 success: 1
28146
DROP TRIGGER trg_1;
28147
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28148
f_int2 = CAST(f_char1 AS SIGNED INT),
28149
f_charbig = 'just inserted'
28150
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28152
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28154
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28155
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28157
SET new.f_int1 = old.f_int1 + @max_row,
28158
new.f_int2 = old.f_int2 - @max_row,
28159
new.f_charbig = '####updated per update trigger####';
28162
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28163
f_charbig = '####updated per update statement itself####';
28165
# check trigger-9 success: 1
28166
DROP TRIGGER trg_2;
28167
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28168
f_int2 = CAST(f_char1 AS SIGNED INT),
28169
f_charbig = CONCAT('===',f_char1,'===');
28170
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28172
SET new.f_int1 = new.f_int1 + @max_row,
28173
new.f_int2 = new.f_int2 - @max_row,
28174
new.f_charbig = '####updated per update trigger####';
28177
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28178
f_charbig = '####updated per update statement itself####';
28180
# check trigger-10 success: 1
28181
DROP TRIGGER trg_2;
28182
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28183
f_int2 = CAST(f_char1 AS SIGNED INT),
28184
f_charbig = CONCAT('===',f_char1,'===');
28185
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28187
SET new.f_int1 = @my_max1 + @counter,
28188
new.f_int2 = @my_min2 - @counter,
28189
new.f_charbig = '####updated per insert trigger####';
28190
SET @counter = @counter + 1;
28193
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28194
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28195
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28196
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28197
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28199
DROP TRIGGER trg_3;
28201
# check trigger-11 success: 1
28203
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28204
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28205
AND f_charbig = '####updated per insert trigger####';
28206
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28208
SET new.f_int1 = @my_max1 + @counter,
28209
new.f_int2 = @my_min2 - @counter,
28210
new.f_charbig = '####updated per insert trigger####';
28211
SET @counter = @counter + 1;
28214
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28215
INSERT INTO t1 (f_char1, f_char2, f_charbig)
28216
SELECT CAST(f_int1 AS CHAR),
28217
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28220
DROP TRIGGER trg_3;
28222
# check trigger-12 success: 1
28224
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28225
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28226
AND f_charbig = '####updated per insert trigger####';
28228
Table Op Msg_type Msg_text
28229
test.t1 analyze note The storage engine for the table doesn't support analyze
28230
CHECK TABLE t1 EXTENDED;
28231
Table Op Msg_type Msg_text
28232
test.t1 check note The storage engine for the table doesn't support check
28233
CHECKSUM TABLE t1 EXTENDED;
28235
test.t1 <some_value>
28237
Table Op Msg_type Msg_text
28238
test.t1 optimize note The storage engine for the table doesn't support optimize
28239
# check layout success: 1
28240
REPAIR TABLE t1 EXTENDED;
28241
Table Op Msg_type Msg_text
28242
test.t1 repair note The storage engine for the table doesn't support repair
28243
# check layout success: 1
28246
# check TRUNCATE success: 1
28247
# check layout success: 1
28248
# End usability test (inc/partition_check.inc)
28255
f_charbig VARCHAR(1000)
28256
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
28258
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
28259
(PARTITION part_3 VALUES IN (-3),
28260
PARTITION part_2 VALUES IN (-2),
28261
PARTITION part_1 VALUES IN (-1),
28262
PARTITION part_N VALUES IN (NULL),
28263
PARTITION part0 VALUES IN (0),
28264
PARTITION part1 VALUES IN (1),
28265
PARTITION part2 VALUES IN (2),
28266
PARTITION part3 VALUES IN (3));
28267
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28268
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
28269
# Start usability test (inc/partition_check.inc)
28271
SHOW CREATE TABLE t1;
28273
t1 CREATE TABLE `t1` (
28274
`f_int1` int(11) DEFAULT NULL,
28275
`f_int2` int(11) DEFAULT NULL,
28276
`f_char1` char(20) DEFAULT NULL,
28277
`f_char2` char(20) DEFAULT NULL,
28278
`f_charbig` varchar(1000) DEFAULT NULL,
28279
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
28280
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
28281
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4)) (PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB, PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB, PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB, PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB, PARTITION part0 VALUES IN (0) ENGINE = InnoDB, PARTITION part1 VALUES IN (1) ENGINE = InnoDB, PARTITION part2 VALUES IN (2) ENGINE = InnoDB, PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
28284
$MYSQLTEST_VARDIR/master-data/test/t1.frm
28285
$MYSQLTEST_VARDIR/master-data/test/t1.par
28287
# check prerequisites-1 success: 1
28288
# check COUNT(*) success: 1
28289
# check MIN/MAX(f_int1) success: 1
28290
# check MIN/MAX(f_int2) success: 1
28291
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28292
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28293
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28294
WHERE f_int1 IN (2,3);
28295
ERROR 23000: Can't write; duplicate key in table 't1'
28296
# check prerequisites-3 success: 1
28297
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
28298
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28299
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
28300
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
28301
WHERE f_int1 IN (2,3);
28302
DELETE FROM t1 WHERE f_charbig = 'delete me';
28303
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28304
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
28305
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
28306
WHERE f_int1 IN (2,3);
28307
DELETE FROM t1 WHERE f_charbig = 'delete me';
28308
# check read via f_int1 success: 1
28309
# check read via f_int2 success: 1
28311
# check multiple-1 success: 1
28312
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28314
# check multiple-2 success: 1
28315
INSERT INTO t1 SELECT * FROM t0_template
28316
WHERE MOD(f_int1,3) = 0;
28318
# check multiple-3 success: 1
28319
UPDATE t1 SET f_int1 = f_int1 + @max_row
28320
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28321
AND @max_row_div2 + @max_row_div4;
28323
# check multiple-4 success: 1
28325
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28326
AND @max_row_div2 + @max_row_div4 + @max_row;
28328
# check multiple-5 success: 1
28329
SELECT COUNT(*) INTO @try_count FROM t0_template
28330
WHERE MOD(f_int1,3) = 0
28331
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28332
SELECT COUNT(*) INTO @clash_count
28333
FROM t1 INNER JOIN t0_template USING(f_int1)
28334
WHERE MOD(f_int1,3) = 0
28335
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28336
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28338
SET f_int1 = @cur_value , f_int2 = @cur_value,
28339
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28340
f_charbig = '#SINGLE#';
28342
# check single-1 success: 1
28343
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28345
SET f_int1 = @cur_value , f_int2 = @cur_value,
28346
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28347
f_charbig = '#SINGLE#';
28349
# check single-2 success: 1
28350
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28351
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28352
UPDATE t1 SET f_int1 = @cur_value2
28353
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28355
# check single-3 success: 1
28356
SET @cur_value1= -1;
28357
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28358
UPDATE t1 SET f_int1 = @cur_value1
28359
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28361
# check single-4 success: 1
28362
SELECT MAX(f_int1) INTO @cur_value FROM t1;
28363
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28365
# check single-5 success: 1
28366
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28368
# check single-6 success: 1
28369
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28371
# check single-7 success: 1
28372
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28373
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28374
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28375
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28376
f_charbig = '#NULL#';
28378
SET f_int1 = NULL , f_int2 = -@max_row,
28379
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28380
f_charbig = '#NULL#';
28381
# check null success: 1
28383
# check null-1 success: 1
28384
UPDATE t1 SET f_int1 = -@max_row
28385
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28386
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28388
# check null-2 success: 1
28389
UPDATE t1 SET f_int1 = NULL
28390
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28391
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28393
# check null-3 success: 1
28395
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28396
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28398
# check null-4 success: 1
28400
WHERE f_int1 = 0 AND f_int2 = 0
28401
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28402
AND f_charbig = '#NULL#';
28403
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28404
SELECT f_int1, f_int1, '', '', 'was inserted'
28405
FROM t0_template source_tab
28406
WHERE MOD(f_int1,3) = 0
28407
AND f_int1 BETWEEN @max_row_div2 AND @max_row
28409
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
28410
f_int2 = 2 * @max_row + source_tab.f_int1,
28411
f_charbig = 'was updated';
28413
# check unique-1-a success: 1
28415
# check unique-1-b success: 1
28416
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28417
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28418
f_int2 = CAST(f_char1 AS SIGNED INT),
28419
f_charbig = CONCAT('===',f_char1,'===')
28420
WHERE f_charbig = 'was updated';
28421
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28422
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
28423
FROM t0_template source_tab
28424
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28426
# check replace success: 1
28428
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
28430
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
28431
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
28432
UPDATE t1 SET f_int2 = f_int1,
28433
f_char1 = CAST(f_int1 AS CHAR),
28434
f_char2 = CAST(f_int1 AS CHAR),
28435
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
28436
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
28438
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28439
SELECT f_int1, f_int1, '', '', 'was inserted'
28440
FROM t0_template source_tab
28441
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28443
# check transactions-1 success: 1
28446
# check transactions-2 success: 1
28449
# check transactions-3 success: 1
28450
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28454
# check transactions-4 success: 1
28455
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28456
SELECT f_int1, f_int1, '', '', 'was inserted'
28457
FROM t0_template source_tab
28458
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28460
# check transactions-5 success: 1
28463
# check transactions-6 success: 1
28464
# INFO: Storage engine used for t1 seems to be transactional.
28467
# check transactions-7 success: 1
28468
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28470
SET @@session.sql_mode = 'traditional';
28471
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28472
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28473
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28474
'', '', 'was inserted' FROM t0_template
28475
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28476
ERROR 22012: Division by 0
28479
# check transactions-8 success: 1
28480
# INFO: Storage engine used for t1 seems to be able to revert
28481
# changes made by the failing statement.
28482
SET @@session.sql_mode = '';
28484
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28486
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28488
# check special-1 success: 1
28489
UPDATE t1 SET f_charbig = '';
28491
# check special-2 success: 1
28492
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28493
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28494
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28495
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28496
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28497
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28498
'just inserted' FROM t0_template
28499
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28500
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28502
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28503
f_charbig = 'updated by trigger'
28504
WHERE f_int1 = new.f_int1;
28506
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28507
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28508
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28510
# check trigger-1 success: 1
28511
DROP TRIGGER trg_1;
28512
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28513
f_int2 = CAST(f_char1 AS SIGNED INT),
28514
f_charbig = 'just inserted'
28515
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28517
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28518
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28519
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28520
'just inserted' FROM t0_template
28521
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28522
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28524
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28525
f_charbig = 'updated by trigger'
28526
WHERE f_int1 = new.f_int1;
28528
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28529
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28530
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28532
# check trigger-2 success: 1
28533
DROP TRIGGER trg_1;
28534
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28535
f_int2 = CAST(f_char1 AS SIGNED INT),
28536
f_charbig = 'just inserted'
28537
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28539
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28540
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28541
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28542
'just inserted' FROM t0_template
28543
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28544
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28546
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28547
f_charbig = 'updated by trigger'
28548
WHERE f_int1 = new.f_int1;
28550
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28551
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28553
# check trigger-3 success: 1
28554
DROP TRIGGER trg_1;
28555
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28556
f_int2 = CAST(f_char1 AS SIGNED INT),
28557
f_charbig = 'just inserted'
28558
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28560
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28561
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28562
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28563
'just inserted' FROM t0_template
28564
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28565
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28567
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28568
f_charbig = 'updated by trigger'
28569
WHERE f_int1 = - old.f_int1;
28571
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28572
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28574
# check trigger-4 success: 1
28575
DROP TRIGGER trg_1;
28576
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28577
f_int2 = CAST(f_char1 AS SIGNED INT),
28578
f_charbig = 'just inserted'
28579
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28581
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28582
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28583
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28584
'just inserted' FROM t0_template
28585
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28586
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28588
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28589
f_charbig = 'updated by trigger'
28590
WHERE f_int1 = new.f_int1;
28592
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28593
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28595
# check trigger-5 success: 1
28596
DROP TRIGGER trg_1;
28597
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28598
f_int2 = CAST(f_char1 AS SIGNED INT),
28599
f_charbig = 'just inserted'
28600
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28602
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28603
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28604
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28605
'just inserted' FROM t0_template
28606
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28607
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28609
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28610
f_charbig = 'updated by trigger'
28611
WHERE f_int1 = - old.f_int1;
28613
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28614
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28616
# check trigger-6 success: 1
28617
DROP TRIGGER trg_1;
28618
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28619
f_int2 = CAST(f_char1 AS SIGNED INT),
28620
f_charbig = 'just inserted'
28621
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28623
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28624
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28625
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28626
'just inserted' FROM t0_template
28627
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28628
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28630
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28631
f_charbig = 'updated by trigger'
28632
WHERE f_int1 = - old.f_int1;
28635
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28637
# check trigger-7 success: 1
28638
DROP TRIGGER trg_1;
28639
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28640
f_int2 = CAST(f_char1 AS SIGNED INT),
28641
f_charbig = 'just inserted'
28642
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28644
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28645
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28646
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28647
'just inserted' FROM t0_template
28648
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28649
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28651
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28652
f_charbig = 'updated by trigger'
28653
WHERE f_int1 = - old.f_int1;
28656
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28658
# check trigger-8 success: 1
28659
DROP TRIGGER trg_1;
28660
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28661
f_int2 = CAST(f_char1 AS SIGNED INT),
28662
f_charbig = 'just inserted'
28663
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28665
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28667
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28668
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28670
SET new.f_int1 = old.f_int1 + @max_row,
28671
new.f_int2 = old.f_int2 - @max_row,
28672
new.f_charbig = '####updated per update trigger####';
28675
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28676
f_charbig = '####updated per update statement itself####';
28678
# check trigger-9 success: 1
28679
DROP TRIGGER trg_2;
28680
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28681
f_int2 = CAST(f_char1 AS SIGNED INT),
28682
f_charbig = CONCAT('===',f_char1,'===');
28683
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28685
SET new.f_int1 = new.f_int1 + @max_row,
28686
new.f_int2 = new.f_int2 - @max_row,
28687
new.f_charbig = '####updated per update trigger####';
28690
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28691
f_charbig = '####updated per update statement itself####';
28693
# check trigger-10 success: 1
28694
DROP TRIGGER trg_2;
28695
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28696
f_int2 = CAST(f_char1 AS SIGNED INT),
28697
f_charbig = CONCAT('===',f_char1,'===');
28698
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28700
SET new.f_int1 = @my_max1 + @counter,
28701
new.f_int2 = @my_min2 - @counter,
28702
new.f_charbig = '####updated per insert trigger####';
28703
SET @counter = @counter + 1;
28706
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28707
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28708
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28709
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28710
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28712
DROP TRIGGER trg_3;
28714
# check trigger-11 success: 1
28716
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28717
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28718
AND f_charbig = '####updated per insert trigger####';
28719
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28721
SET new.f_int1 = @my_max1 + @counter,
28722
new.f_int2 = @my_min2 - @counter,
28723
new.f_charbig = '####updated per insert trigger####';
28724
SET @counter = @counter + 1;
28727
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28728
INSERT INTO t1 (f_char1, f_char2, f_charbig)
28729
SELECT CAST(f_int1 AS CHAR),
28730
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28731
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28733
DROP TRIGGER trg_3;
28735
# check trigger-12 success: 1
28737
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28738
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28739
AND f_charbig = '####updated per insert trigger####';
28741
Table Op Msg_type Msg_text
28742
test.t1 analyze note The storage engine for the table doesn't support analyze
28743
CHECK TABLE t1 EXTENDED;
28744
Table Op Msg_type Msg_text
28745
test.t1 check note The storage engine for the table doesn't support check
28746
CHECKSUM TABLE t1 EXTENDED;
28748
test.t1 <some_value>
28750
Table Op Msg_type Msg_text
28751
test.t1 optimize note The storage engine for the table doesn't support optimize
28752
# check layout success: 1
28753
REPAIR TABLE t1 EXTENDED;
28754
Table Op Msg_type Msg_text
28755
test.t1 repair note The storage engine for the table doesn't support repair
28756
# check layout success: 1
28759
# check TRUNCATE success: 1
28760
# check layout success: 1
28761
# End usability test (inc/partition_check.inc)
28768
f_charbig VARCHAR(1000)
28769
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
28771
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
28772
(PARTITION parta VALUES LESS THAN (0),
28773
PARTITION partb VALUES LESS THAN (5),
28774
PARTITION partc VALUES LESS THAN (10),
28775
PARTITION partd VALUES LESS THAN (10 + 5),
28776
PARTITION parte VALUES LESS THAN (20),
28777
PARTITION partf VALUES LESS THAN (2147483646));
28778
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28779
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
28780
# Start usability test (inc/partition_check.inc)
28782
SHOW CREATE TABLE t1;
28784
t1 CREATE TABLE `t1` (
28785
`f_int1` int(11) DEFAULT NULL,
28786
`f_int2` int(11) DEFAULT NULL,
28787
`f_char1` char(20) DEFAULT NULL,
28788
`f_char2` char(20) DEFAULT NULL,
28789
`f_charbig` varchar(1000) DEFAULT NULL,
28790
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
28791
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
28792
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2) (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB, PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
28795
$MYSQLTEST_VARDIR/master-data/test/t1.frm
28796
$MYSQLTEST_VARDIR/master-data/test/t1.par
28798
# check prerequisites-1 success: 1
28799
# check COUNT(*) success: 1
28800
# check MIN/MAX(f_int1) success: 1
28801
# check MIN/MAX(f_int2) success: 1
28802
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28803
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28804
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28805
WHERE f_int1 IN (2,3);
28806
ERROR 23000: Can't write; duplicate key in table 't1'
28807
# check prerequisites-3 success: 1
28808
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
28809
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28810
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
28811
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
28812
WHERE f_int1 IN (2,3);
28813
DELETE FROM t1 WHERE f_charbig = 'delete me';
28814
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28815
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
28816
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
28817
WHERE f_int1 IN (2,3);
28818
DELETE FROM t1 WHERE f_charbig = 'delete me';
28819
# check read via f_int1 success: 1
28820
# check read via f_int2 success: 1
28822
# check multiple-1 success: 1
28823
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28825
# check multiple-2 success: 1
28826
INSERT INTO t1 SELECT * FROM t0_template
28827
WHERE MOD(f_int1,3) = 0;
28829
# check multiple-3 success: 1
28830
UPDATE t1 SET f_int1 = f_int1 + @max_row
28831
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28832
AND @max_row_div2 + @max_row_div4;
28834
# check multiple-4 success: 1
28836
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28837
AND @max_row_div2 + @max_row_div4 + @max_row;
28839
# check multiple-5 success: 1
28840
SELECT COUNT(*) INTO @try_count FROM t0_template
28841
WHERE MOD(f_int1,3) = 0
28842
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28843
SELECT COUNT(*) INTO @clash_count
28844
FROM t1 INNER JOIN t0_template USING(f_int1)
28845
WHERE MOD(f_int1,3) = 0
28846
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28847
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28849
SET f_int1 = @cur_value , f_int2 = @cur_value,
28850
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28851
f_charbig = '#SINGLE#';
28853
# check single-1 success: 1
28854
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28856
SET f_int1 = @cur_value , f_int2 = @cur_value,
28857
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28858
f_charbig = '#SINGLE#';
28860
# check single-2 success: 1
28861
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28862
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28863
UPDATE t1 SET f_int1 = @cur_value2
28864
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28866
# check single-3 success: 1
28867
SET @cur_value1= -1;
28868
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28869
UPDATE t1 SET f_int1 = @cur_value1
28870
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28872
# check single-4 success: 1
28873
SELECT MAX(f_int1) INTO @cur_value FROM t1;
28874
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28876
# check single-5 success: 1
28877
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28879
# check single-6 success: 1
28880
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28881
ERROR HY000: Table has no partition for value 2147483647
28882
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28883
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28884
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28885
f_charbig = '#NULL#';
28887
SET f_int1 = NULL , f_int2 = -@max_row,
28888
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28889
f_charbig = '#NULL#';
28890
# check null success: 1
28892
# check null-1 success: 1
28893
UPDATE t1 SET f_int1 = -@max_row
28894
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28895
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28897
# check null-2 success: 1
28898
UPDATE t1 SET f_int1 = NULL
28899
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28900
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28902
# check null-3 success: 1
28904
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
28905
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
28907
# check null-4 success: 1
28909
WHERE f_int1 = 0 AND f_int2 = 0
28910
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28911
AND f_charbig = '#NULL#';
28912
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28913
SELECT f_int1, f_int1, '', '', 'was inserted'
28914
FROM t0_template source_tab
28915
WHERE MOD(f_int1,3) = 0
28916
AND f_int1 BETWEEN @max_row_div2 AND @max_row
28918
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
28919
f_int2 = 2 * @max_row + source_tab.f_int1,
28920
f_charbig = 'was updated';
28922
# check unique-1-a success: 1
28924
# check unique-1-b success: 1
28925
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28926
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28927
f_int2 = CAST(f_char1 AS SIGNED INT),
28928
f_charbig = CONCAT('===',f_char1,'===')
28929
WHERE f_charbig = 'was updated';
28930
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28931
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
28932
FROM t0_template source_tab
28933
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
28935
# check replace success: 1
28937
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
28939
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
28940
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
28941
UPDATE t1 SET f_int2 = f_int1,
28942
f_char1 = CAST(f_int1 AS CHAR),
28943
f_char2 = CAST(f_int1 AS CHAR),
28944
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
28945
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
28947
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28948
SELECT f_int1, f_int1, '', '', 'was inserted'
28949
FROM t0_template source_tab
28950
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28952
# check transactions-1 success: 1
28955
# check transactions-2 success: 1
28958
# check transactions-3 success: 1
28959
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28963
# check transactions-4 success: 1
28964
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28965
SELECT f_int1, f_int1, '', '', 'was inserted'
28966
FROM t0_template source_tab
28967
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28969
# check transactions-5 success: 1
28972
# check transactions-6 success: 1
28973
# INFO: Storage engine used for t1 seems to be transactional.
28976
# check transactions-7 success: 1
28977
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28979
SET @@session.sql_mode = 'traditional';
28980
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28981
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28982
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28983
'', '', 'was inserted' FROM t0_template
28984
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28985
ERROR 22012: Division by 0
28988
# check transactions-8 success: 1
28989
# INFO: Storage engine used for t1 seems to be able to revert
28990
# changes made by the failing statement.
28991
SET @@session.sql_mode = '';
28993
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28995
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28997
# check special-1 success: 1
28998
UPDATE t1 SET f_charbig = '';
29000
# check special-2 success: 1
29001
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29002
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29003
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29004
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29005
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29006
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29007
'just inserted' FROM t0_template
29008
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29009
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29011
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29012
f_charbig = 'updated by trigger'
29013
WHERE f_int1 = new.f_int1;
29015
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29016
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29017
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29019
# check trigger-1 success: 1
29020
DROP TRIGGER trg_1;
29021
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29022
f_int2 = CAST(f_char1 AS SIGNED INT),
29023
f_charbig = 'just inserted'
29024
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29026
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29027
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29028
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29029
'just inserted' FROM t0_template
29030
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29031
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29033
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29034
f_charbig = 'updated by trigger'
29035
WHERE f_int1 = new.f_int1;
29037
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29038
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29041
# check trigger-2 success: 1
29042
DROP TRIGGER trg_1;
29043
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29044
f_int2 = CAST(f_char1 AS SIGNED INT),
29045
f_charbig = 'just inserted'
29046
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29048
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29049
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29050
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29051
'just inserted' FROM t0_template
29052
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29053
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29055
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29056
f_charbig = 'updated by trigger'
29057
WHERE f_int1 = new.f_int1;
29059
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29060
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29062
# check trigger-3 success: 1
29063
DROP TRIGGER trg_1;
29064
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29065
f_int2 = CAST(f_char1 AS SIGNED INT),
29066
f_charbig = 'just inserted'
29067
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29069
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29070
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29071
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29072
'just inserted' FROM t0_template
29073
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29074
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29076
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29077
f_charbig = 'updated by trigger'
29078
WHERE f_int1 = - old.f_int1;
29080
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29081
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29083
# check trigger-4 success: 1
29084
DROP TRIGGER trg_1;
29085
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29086
f_int2 = CAST(f_char1 AS SIGNED INT),
29087
f_charbig = 'just inserted'
29088
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29090
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29091
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29092
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29093
'just inserted' FROM t0_template
29094
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29095
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29097
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29098
f_charbig = 'updated by trigger'
29099
WHERE f_int1 = new.f_int1;
29101
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29102
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29104
# check trigger-5 success: 1
29105
DROP TRIGGER trg_1;
29106
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29107
f_int2 = CAST(f_char1 AS SIGNED INT),
29108
f_charbig = 'just inserted'
29109
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29111
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29112
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29113
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29114
'just inserted' FROM t0_template
29115
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29116
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29118
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29119
f_charbig = 'updated by trigger'
29120
WHERE f_int1 = - old.f_int1;
29122
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29123
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29125
# check trigger-6 success: 1
29126
DROP TRIGGER trg_1;
29127
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29128
f_int2 = CAST(f_char1 AS SIGNED INT),
29129
f_charbig = 'just inserted'
29130
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29132
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29133
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29134
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29135
'just inserted' FROM t0_template
29136
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29137
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29139
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29140
f_charbig = 'updated by trigger'
29141
WHERE f_int1 = - old.f_int1;
29144
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29146
# check trigger-7 success: 1
29147
DROP TRIGGER trg_1;
29148
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29149
f_int2 = CAST(f_char1 AS SIGNED INT),
29150
f_charbig = 'just inserted'
29151
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29153
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29154
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29155
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29156
'just inserted' FROM t0_template
29157
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29158
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29160
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29161
f_charbig = 'updated by trigger'
29162
WHERE f_int1 = - old.f_int1;
29165
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29167
# check trigger-8 success: 1
29168
DROP TRIGGER trg_1;
29169
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29170
f_int2 = CAST(f_char1 AS SIGNED INT),
29171
f_charbig = 'just inserted'
29172
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29174
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29176
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29177
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29179
SET new.f_int1 = old.f_int1 + @max_row,
29180
new.f_int2 = old.f_int2 - @max_row,
29181
new.f_charbig = '####updated per update trigger####';
29184
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29185
f_charbig = '####updated per update statement itself####';
29187
# check trigger-9 success: 1
29188
DROP TRIGGER trg_2;
29189
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29190
f_int2 = CAST(f_char1 AS SIGNED INT),
29191
f_charbig = CONCAT('===',f_char1,'===');
29192
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29194
SET new.f_int1 = new.f_int1 + @max_row,
29195
new.f_int2 = new.f_int2 - @max_row,
29196
new.f_charbig = '####updated per update trigger####';
29199
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29200
f_charbig = '####updated per update statement itself####';
29202
# check trigger-10 success: 1
29203
DROP TRIGGER trg_2;
29204
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29205
f_int2 = CAST(f_char1 AS SIGNED INT),
29206
f_charbig = CONCAT('===',f_char1,'===');
29207
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29209
SET new.f_int1 = @my_max1 + @counter,
29210
new.f_int2 = @my_min2 - @counter,
29211
new.f_charbig = '####updated per insert trigger####';
29212
SET @counter = @counter + 1;
29215
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29216
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29217
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29218
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29219
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29221
DROP TRIGGER trg_3;
29223
# check trigger-11 success: 1
29225
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29226
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29227
AND f_charbig = '####updated per insert trigger####';
29228
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29230
SET new.f_int1 = @my_max1 + @counter,
29231
new.f_int2 = @my_min2 - @counter,
29232
new.f_charbig = '####updated per insert trigger####';
29233
SET @counter = @counter + 1;
29236
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29237
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29238
SELECT CAST(f_int1 AS CHAR),
29239
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29240
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29242
DROP TRIGGER trg_3;
29244
# check trigger-12 success: 1
29246
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29247
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29248
AND f_charbig = '####updated per insert trigger####';
29250
Table Op Msg_type Msg_text
29251
test.t1 analyze note The storage engine for the table doesn't support analyze
29252
CHECK TABLE t1 EXTENDED;
29253
Table Op Msg_type Msg_text
29254
test.t1 check note The storage engine for the table doesn't support check
29255
CHECKSUM TABLE t1 EXTENDED;
29257
test.t1 <some_value>
29259
Table Op Msg_type Msg_text
29260
test.t1 optimize note The storage engine for the table doesn't support optimize
29261
# check layout success: 1
29262
REPAIR TABLE t1 EXTENDED;
29263
Table Op Msg_type Msg_text
29264
test.t1 repair note The storage engine for the table doesn't support repair
29265
# check layout success: 1
29268
# check TRUNCATE success: 1
29269
# check layout success: 1
29270
# End usability test (inc/partition_check.inc)
29277
f_charbig VARCHAR(1000)
29278
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
29280
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
29281
(PARTITION parta VALUES LESS THAN (0),
29282
PARTITION partb VALUES LESS THAN (5),
29283
PARTITION partc VALUES LESS THAN (10),
29284
PARTITION partd VALUES LESS THAN (2147483646));
29285
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29286
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
29287
# Start usability test (inc/partition_check.inc)
29289
SHOW CREATE TABLE t1;
29291
t1 CREATE TABLE `t1` (
29292
`f_int1` int(11) DEFAULT NULL,
29293
`f_int2` int(11) DEFAULT NULL,
29294
`f_char1` char(20) DEFAULT NULL,
29295
`f_char2` char(20) DEFAULT NULL,
29296
`f_charbig` varchar(1000) DEFAULT NULL,
29297
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
29298
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
29299
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY HASH (f_int2) SUBPARTITIONS 2 (PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB, PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
29302
$MYSQLTEST_VARDIR/master-data/test/t1.frm
29303
$MYSQLTEST_VARDIR/master-data/test/t1.par
29305
# check prerequisites-1 success: 1
29306
# check COUNT(*) success: 1
29307
# check MIN/MAX(f_int1) success: 1
29308
# check MIN/MAX(f_int2) success: 1
29309
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29310
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29311
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29312
WHERE f_int1 IN (2,3);
29313
ERROR 23000: Can't write; duplicate key in table 't1'
29314
# check prerequisites-3 success: 1
29315
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
29316
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29317
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
29318
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
29319
WHERE f_int1 IN (2,3);
29320
DELETE FROM t1 WHERE f_charbig = 'delete me';
29321
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29322
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
29323
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
29324
WHERE f_int1 IN (2,3);
29325
DELETE FROM t1 WHERE f_charbig = 'delete me';
29326
# check read via f_int1 success: 1
29327
# check read via f_int2 success: 1
29329
# check multiple-1 success: 1
29330
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29332
# check multiple-2 success: 1
29333
INSERT INTO t1 SELECT * FROM t0_template
29334
WHERE MOD(f_int1,3) = 0;
29336
# check multiple-3 success: 1
29337
UPDATE t1 SET f_int1 = f_int1 + @max_row
29338
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29339
AND @max_row_div2 + @max_row_div4;
29341
# check multiple-4 success: 1
29343
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29344
AND @max_row_div2 + @max_row_div4 + @max_row;
29346
# check multiple-5 success: 1
29347
SELECT COUNT(*) INTO @try_count FROM t0_template
29348
WHERE MOD(f_int1,3) = 0
29349
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29350
SELECT COUNT(*) INTO @clash_count
29351
FROM t1 INNER JOIN t0_template USING(f_int1)
29352
WHERE MOD(f_int1,3) = 0
29353
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29354
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29356
SET f_int1 = @cur_value , f_int2 = @cur_value,
29357
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29358
f_charbig = '#SINGLE#';
29360
# check single-1 success: 1
29361
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29363
SET f_int1 = @cur_value , f_int2 = @cur_value,
29364
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29365
f_charbig = '#SINGLE#';
29367
# check single-2 success: 1
29368
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29369
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29370
UPDATE t1 SET f_int1 = @cur_value2
29371
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29373
# check single-3 success: 1
29374
SET @cur_value1= -1;
29375
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29376
UPDATE t1 SET f_int1 = @cur_value1
29377
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29379
# check single-4 success: 1
29380
SELECT MAX(f_int1) INTO @cur_value FROM t1;
29381
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29383
# check single-5 success: 1
29384
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29386
# check single-6 success: 1
29387
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29388
ERROR HY000: Table has no partition for value 2147483647
29389
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29390
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29391
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29392
f_charbig = '#NULL#';
29394
SET f_int1 = NULL , f_int2 = -@max_row,
29395
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29396
f_charbig = '#NULL#';
29397
# check null success: 1
29399
# check null-1 success: 1
29400
UPDATE t1 SET f_int1 = -@max_row
29401
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29402
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29404
# check null-2 success: 1
29405
UPDATE t1 SET f_int1 = NULL
29406
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29407
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29409
# check null-3 success: 1
29411
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29412
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29414
# check null-4 success: 1
29416
WHERE f_int1 = 0 AND f_int2 = 0
29417
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29418
AND f_charbig = '#NULL#';
29419
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29420
SELECT f_int1, f_int1, '', '', 'was inserted'
29421
FROM t0_template source_tab
29422
WHERE MOD(f_int1,3) = 0
29423
AND f_int1 BETWEEN @max_row_div2 AND @max_row
29425
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
29426
f_int2 = 2 * @max_row + source_tab.f_int1,
29427
f_charbig = 'was updated';
29429
# check unique-1-a success: 1
29431
# check unique-1-b success: 1
29432
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29433
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29434
f_int2 = CAST(f_char1 AS SIGNED INT),
29435
f_charbig = CONCAT('===',f_char1,'===')
29436
WHERE f_charbig = 'was updated';
29437
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29438
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
29439
FROM t0_template source_tab
29440
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29442
# check replace success: 1
29444
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
29446
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
29447
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
29448
UPDATE t1 SET f_int2 = f_int1,
29449
f_char1 = CAST(f_int1 AS CHAR),
29450
f_char2 = CAST(f_int1 AS CHAR),
29451
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
29452
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
29454
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29455
SELECT f_int1, f_int1, '', '', 'was inserted'
29456
FROM t0_template source_tab
29457
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29459
# check transactions-1 success: 1
29462
# check transactions-2 success: 1
29465
# check transactions-3 success: 1
29466
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29470
# check transactions-4 success: 1
29471
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29472
SELECT f_int1, f_int1, '', '', 'was inserted'
29473
FROM t0_template source_tab
29474
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29476
# check transactions-5 success: 1
29479
# check transactions-6 success: 1
29480
# INFO: Storage engine used for t1 seems to be transactional.
29483
# check transactions-7 success: 1
29484
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29486
SET @@session.sql_mode = 'traditional';
29487
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29488
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29489
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29490
'', '', 'was inserted' FROM t0_template
29491
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29492
ERROR 22012: Division by 0
29495
# check transactions-8 success: 1
29496
# INFO: Storage engine used for t1 seems to be able to revert
29497
# changes made by the failing statement.
29498
SET @@session.sql_mode = '';
29500
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29502
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29504
# check special-1 success: 1
29505
UPDATE t1 SET f_charbig = '';
29507
# check special-2 success: 1
29508
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29509
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29510
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29511
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29512
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29513
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29514
'just inserted' FROM t0_template
29515
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29516
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29518
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29519
f_charbig = 'updated by trigger'
29520
WHERE f_int1 = new.f_int1;
29522
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29523
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29524
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29526
# check trigger-1 success: 1
29527
DROP TRIGGER trg_1;
29528
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29529
f_int2 = CAST(f_char1 AS SIGNED INT),
29530
f_charbig = 'just inserted'
29531
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29533
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29534
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29535
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29536
'just inserted' FROM t0_template
29537
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29538
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29540
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29541
f_charbig = 'updated by trigger'
29542
WHERE f_int1 = new.f_int1;
29544
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29545
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29546
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29548
# check trigger-2 success: 1
29549
DROP TRIGGER trg_1;
29550
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29551
f_int2 = CAST(f_char1 AS SIGNED INT),
29552
f_charbig = 'just inserted'
29553
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29555
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29556
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29557
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29558
'just inserted' FROM t0_template
29559
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29560
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29562
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29563
f_charbig = 'updated by trigger'
29564
WHERE f_int1 = new.f_int1;
29566
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29567
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29569
# check trigger-3 success: 1
29570
DROP TRIGGER trg_1;
29571
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29572
f_int2 = CAST(f_char1 AS SIGNED INT),
29573
f_charbig = 'just inserted'
29574
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29576
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29577
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29578
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29579
'just inserted' FROM t0_template
29580
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29581
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29583
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29584
f_charbig = 'updated by trigger'
29585
WHERE f_int1 = - old.f_int1;
29587
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29588
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29590
# check trigger-4 success: 1
29591
DROP TRIGGER trg_1;
29592
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29593
f_int2 = CAST(f_char1 AS SIGNED INT),
29594
f_charbig = 'just inserted'
29595
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29597
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29598
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29599
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29600
'just inserted' FROM t0_template
29601
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29602
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29604
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29605
f_charbig = 'updated by trigger'
29606
WHERE f_int1 = new.f_int1;
29608
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29609
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29611
# check trigger-5 success: 1
29612
DROP TRIGGER trg_1;
29613
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29614
f_int2 = CAST(f_char1 AS SIGNED INT),
29615
f_charbig = 'just inserted'
29616
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29618
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29619
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29620
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29621
'just inserted' FROM t0_template
29622
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29623
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29625
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29626
f_charbig = 'updated by trigger'
29627
WHERE f_int1 = - old.f_int1;
29629
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29630
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29632
# check trigger-6 success: 1
29633
DROP TRIGGER trg_1;
29634
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29635
f_int2 = CAST(f_char1 AS SIGNED INT),
29636
f_charbig = 'just inserted'
29637
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29639
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29640
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29641
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29642
'just inserted' FROM t0_template
29643
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29644
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29646
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29647
f_charbig = 'updated by trigger'
29648
WHERE f_int1 = - old.f_int1;
29651
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29653
# check trigger-7 success: 1
29654
DROP TRIGGER trg_1;
29655
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29656
f_int2 = CAST(f_char1 AS SIGNED INT),
29657
f_charbig = 'just inserted'
29658
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29660
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29661
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29662
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29663
'just inserted' FROM t0_template
29664
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29665
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29667
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29668
f_charbig = 'updated by trigger'
29669
WHERE f_int1 = - old.f_int1;
29672
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29674
# check trigger-8 success: 1
29675
DROP TRIGGER trg_1;
29676
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29677
f_int2 = CAST(f_char1 AS SIGNED INT),
29678
f_charbig = 'just inserted'
29679
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29681
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29683
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29684
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29686
SET new.f_int1 = old.f_int1 + @max_row,
29687
new.f_int2 = old.f_int2 - @max_row,
29688
new.f_charbig = '####updated per update trigger####';
29691
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29692
f_charbig = '####updated per update statement itself####';
29694
# check trigger-9 success: 1
29695
DROP TRIGGER trg_2;
29696
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29697
f_int2 = CAST(f_char1 AS SIGNED INT),
29698
f_charbig = CONCAT('===',f_char1,'===');
29699
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29701
SET new.f_int1 = new.f_int1 + @max_row,
29702
new.f_int2 = new.f_int2 - @max_row,
29703
new.f_charbig = '####updated per update trigger####';
29706
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29707
f_charbig = '####updated per update statement itself####';
29709
# check trigger-10 success: 1
29710
DROP TRIGGER trg_2;
29711
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29712
f_int2 = CAST(f_char1 AS SIGNED INT),
29713
f_charbig = CONCAT('===',f_char1,'===');
29714
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29716
SET new.f_int1 = @my_max1 + @counter,
29717
new.f_int2 = @my_min2 - @counter,
29718
new.f_charbig = '####updated per insert trigger####';
29719
SET @counter = @counter + 1;
29722
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29723
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29724
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29725
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29726
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29728
DROP TRIGGER trg_3;
29730
# check trigger-11 success: 1
29732
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29733
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29734
AND f_charbig = '####updated per insert trigger####';
29735
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29737
SET new.f_int1 = @my_max1 + @counter,
29738
new.f_int2 = @my_min2 - @counter,
29739
new.f_charbig = '####updated per insert trigger####';
29740
SET @counter = @counter + 1;
29743
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29744
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29745
SELECT CAST(f_int1 AS CHAR),
29746
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29747
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29749
DROP TRIGGER trg_3;
29751
# check trigger-12 success: 1
29753
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29754
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29755
AND f_charbig = '####updated per insert trigger####';
29757
Table Op Msg_type Msg_text
29758
test.t1 analyze note The storage engine for the table doesn't support analyze
29759
CHECK TABLE t1 EXTENDED;
29760
Table Op Msg_type Msg_text
29761
test.t1 check note The storage engine for the table doesn't support check
29762
CHECKSUM TABLE t1 EXTENDED;
29764
test.t1 <some_value>
29766
Table Op Msg_type Msg_text
29767
test.t1 optimize note The storage engine for the table doesn't support optimize
29768
# check layout success: 1
29769
REPAIR TABLE t1 EXTENDED;
29770
Table Op Msg_type Msg_text
29771
test.t1 repair note The storage engine for the table doesn't support repair
29772
# check layout success: 1
29775
# check TRUNCATE success: 1
29776
# check layout success: 1
29777
# End usability test (inc/partition_check.inc)
29784
f_charbig VARCHAR(1000)
29785
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
29787
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
29788
(PARTITION part1 VALUES LESS THAN (0)
29789
(SUBPARTITION subpart11, SUBPARTITION subpart12),
29790
PARTITION part2 VALUES LESS THAN (5)
29791
(SUBPARTITION subpart21, SUBPARTITION subpart22),
29792
PARTITION part3 VALUES LESS THAN (10)
29793
(SUBPARTITION subpart31, SUBPARTITION subpart32),
29794
PARTITION part4 VALUES LESS THAN (2147483646)
29795
(SUBPARTITION subpart41, SUBPARTITION subpart42));
29796
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29797
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
29798
# Start usability test (inc/partition_check.inc)
29800
SHOW CREATE TABLE t1;
29802
t1 CREATE TABLE `t1` (
29803
`f_int1` int(11) DEFAULT NULL,
29804
`f_int2` int(11) DEFAULT NULL,
29805
`f_char1` char(20) DEFAULT NULL,
29806
`f_char2` char(20) DEFAULT NULL,
29807
`f_charbig` varchar(1000) DEFAULT NULL,
29808
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
29809
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
29810
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (f_int1) SUBPARTITION BY KEY (f_int2) (PARTITION part1 VALUES LESS THAN (0) (SUBPARTITION subpart11 ENGINE = InnoDB, SUBPARTITION subpart12 ENGINE = InnoDB), PARTITION part2 VALUES LESS THAN (5) (SUBPARTITION subpart21 ENGINE = InnoDB, SUBPARTITION subpart22 ENGINE = InnoDB), PARTITION part3 VALUES LESS THAN (10) (SUBPARTITION subpart31 ENGINE = InnoDB, SUBPARTITION subpart32 ENGINE = InnoDB), PARTITION part4 VALUES LESS THAN (2147483646) (SUBPARTITION subpart41 ENGINE = InnoDB, SUBPARTITION subpart42 ENGINE = InnoDB)) */
29813
$MYSQLTEST_VARDIR/master-data/test/t1.frm
29814
$MYSQLTEST_VARDIR/master-data/test/t1.par
29816
# check prerequisites-1 success: 1
29817
# check COUNT(*) success: 1
29818
# check MIN/MAX(f_int1) success: 1
29819
# check MIN/MAX(f_int2) success: 1
29820
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29821
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29822
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29823
WHERE f_int1 IN (2,3);
29824
ERROR 23000: Can't write; duplicate key in table 't1'
29825
# check prerequisites-3 success: 1
29826
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
29827
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29828
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
29829
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
29830
WHERE f_int1 IN (2,3);
29831
DELETE FROM t1 WHERE f_charbig = 'delete me';
29832
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29833
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
29834
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
29835
WHERE f_int1 IN (2,3);
29836
DELETE FROM t1 WHERE f_charbig = 'delete me';
29837
# check read via f_int1 success: 1
29838
# check read via f_int2 success: 1
29840
# check multiple-1 success: 1
29841
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29843
# check multiple-2 success: 1
29844
INSERT INTO t1 SELECT * FROM t0_template
29845
WHERE MOD(f_int1,3) = 0;
29847
# check multiple-3 success: 1
29848
UPDATE t1 SET f_int1 = f_int1 + @max_row
29849
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29850
AND @max_row_div2 + @max_row_div4;
29852
# check multiple-4 success: 1
29854
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29855
AND @max_row_div2 + @max_row_div4 + @max_row;
29857
# check multiple-5 success: 1
29858
SELECT COUNT(*) INTO @try_count FROM t0_template
29859
WHERE MOD(f_int1,3) = 0
29860
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29861
SELECT COUNT(*) INTO @clash_count
29862
FROM t1 INNER JOIN t0_template USING(f_int1)
29863
WHERE MOD(f_int1,3) = 0
29864
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29865
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29867
SET f_int1 = @cur_value , f_int2 = @cur_value,
29868
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29869
f_charbig = '#SINGLE#';
29871
# check single-1 success: 1
29872
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29874
SET f_int1 = @cur_value , f_int2 = @cur_value,
29875
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29876
f_charbig = '#SINGLE#';
29878
# check single-2 success: 1
29879
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29880
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29881
UPDATE t1 SET f_int1 = @cur_value2
29882
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29884
# check single-3 success: 1
29885
SET @cur_value1= -1;
29886
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29887
UPDATE t1 SET f_int1 = @cur_value1
29888
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29890
# check single-4 success: 1
29891
SELECT MAX(f_int1) INTO @cur_value FROM t1;
29892
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29894
# check single-5 success: 1
29895
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29897
# check single-6 success: 1
29898
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29899
ERROR HY000: Table has no partition for value 2147483647
29900
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29901
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29902
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29903
f_charbig = '#NULL#';
29905
SET f_int1 = NULL , f_int2 = -@max_row,
29906
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29907
f_charbig = '#NULL#';
29908
# check null success: 1
29910
# check null-1 success: 1
29911
UPDATE t1 SET f_int1 = -@max_row
29912
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29913
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29915
# check null-2 success: 1
29916
UPDATE t1 SET f_int1 = NULL
29917
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29918
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29920
# check null-3 success: 1
29922
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
29923
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
29925
# check null-4 success: 1
29927
WHERE f_int1 = 0 AND f_int2 = 0
29928
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29929
AND f_charbig = '#NULL#';
29930
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29931
SELECT f_int1, f_int1, '', '', 'was inserted'
29932
FROM t0_template source_tab
29933
WHERE MOD(f_int1,3) = 0
29934
AND f_int1 BETWEEN @max_row_div2 AND @max_row
29936
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
29937
f_int2 = 2 * @max_row + source_tab.f_int1,
29938
f_charbig = 'was updated';
29940
# check unique-1-a success: 1
29942
# check unique-1-b success: 1
29943
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29944
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29945
f_int2 = CAST(f_char1 AS SIGNED INT),
29946
f_charbig = CONCAT('===',f_char1,'===')
29947
WHERE f_charbig = 'was updated';
29948
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29949
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
29950
FROM t0_template source_tab
29951
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
29953
# check replace success: 1
29955
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
29957
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
29958
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
29959
UPDATE t1 SET f_int2 = f_int1,
29960
f_char1 = CAST(f_int1 AS CHAR),
29961
f_char2 = CAST(f_int1 AS CHAR),
29962
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
29963
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
29965
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29966
SELECT f_int1, f_int1, '', '', 'was inserted'
29967
FROM t0_template source_tab
29968
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29970
# check transactions-1 success: 1
29973
# check transactions-2 success: 1
29976
# check transactions-3 success: 1
29977
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29981
# check transactions-4 success: 1
29982
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29983
SELECT f_int1, f_int1, '', '', 'was inserted'
29984
FROM t0_template source_tab
29985
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29987
# check transactions-5 success: 1
29990
# check transactions-6 success: 1
29991
# INFO: Storage engine used for t1 seems to be transactional.
29994
# check transactions-7 success: 1
29995
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29997
SET @@session.sql_mode = 'traditional';
29998
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29999
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30000
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30001
'', '', 'was inserted' FROM t0_template
30002
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30003
ERROR 22012: Division by 0
30006
# check transactions-8 success: 1
30007
# INFO: Storage engine used for t1 seems to be able to revert
30008
# changes made by the failing statement.
30009
SET @@session.sql_mode = '';
30011
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30013
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30015
# check special-1 success: 1
30016
UPDATE t1 SET f_charbig = '';
30018
# check special-2 success: 1
30019
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30020
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30021
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30022
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30023
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30024
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30025
'just inserted' FROM t0_template
30026
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30027
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30029
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30030
f_charbig = 'updated by trigger'
30031
WHERE f_int1 = new.f_int1;
30033
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30034
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30035
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30037
# check trigger-1 success: 1
30038
DROP TRIGGER trg_1;
30039
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30040
f_int2 = CAST(f_char1 AS SIGNED INT),
30041
f_charbig = 'just inserted'
30042
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30044
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30045
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30046
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30047
'just inserted' FROM t0_template
30048
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30049
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30051
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30052
f_charbig = 'updated by trigger'
30053
WHERE f_int1 = new.f_int1;
30055
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30056
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30057
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30059
# check trigger-2 success: 1
30060
DROP TRIGGER trg_1;
30061
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30062
f_int2 = CAST(f_char1 AS SIGNED INT),
30063
f_charbig = 'just inserted'
30064
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30066
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30067
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30068
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30069
'just inserted' FROM t0_template
30070
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30071
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30073
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30074
f_charbig = 'updated by trigger'
30075
WHERE f_int1 = new.f_int1;
30077
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30078
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30080
# check trigger-3 success: 1
30081
DROP TRIGGER trg_1;
30082
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30083
f_int2 = CAST(f_char1 AS SIGNED INT),
30084
f_charbig = 'just inserted'
30085
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30087
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30088
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30089
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30090
'just inserted' FROM t0_template
30091
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30092
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30094
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30095
f_charbig = 'updated by trigger'
30096
WHERE f_int1 = - old.f_int1;
30098
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30099
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30101
# check trigger-4 success: 1
30102
DROP TRIGGER trg_1;
30103
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30104
f_int2 = CAST(f_char1 AS SIGNED INT),
30105
f_charbig = 'just inserted'
30106
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30108
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30109
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30110
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30111
'just inserted' FROM t0_template
30112
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30113
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30115
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30116
f_charbig = 'updated by trigger'
30117
WHERE f_int1 = new.f_int1;
30119
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30120
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30122
# check trigger-5 success: 1
30123
DROP TRIGGER trg_1;
30124
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30125
f_int2 = CAST(f_char1 AS SIGNED INT),
30126
f_charbig = 'just inserted'
30127
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30129
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30130
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30131
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30132
'just inserted' FROM t0_template
30133
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30134
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30136
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30137
f_charbig = 'updated by trigger'
30138
WHERE f_int1 = - old.f_int1;
30140
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30141
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30143
# check trigger-6 success: 1
30144
DROP TRIGGER trg_1;
30145
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30146
f_int2 = CAST(f_char1 AS SIGNED INT),
30147
f_charbig = 'just inserted'
30148
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30150
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30151
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30152
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30153
'just inserted' FROM t0_template
30154
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30155
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30157
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30158
f_charbig = 'updated by trigger'
30159
WHERE f_int1 = - old.f_int1;
30162
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30164
# check trigger-7 success: 1
30165
DROP TRIGGER trg_1;
30166
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30167
f_int2 = CAST(f_char1 AS SIGNED INT),
30168
f_charbig = 'just inserted'
30169
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30171
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30172
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30173
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30174
'just inserted' FROM t0_template
30175
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30176
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30178
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30179
f_charbig = 'updated by trigger'
30180
WHERE f_int1 = - old.f_int1;
30183
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30185
# check trigger-8 success: 1
30186
DROP TRIGGER trg_1;
30187
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30188
f_int2 = CAST(f_char1 AS SIGNED INT),
30189
f_charbig = 'just inserted'
30190
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30192
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30195
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30197
SET new.f_int1 = old.f_int1 + @max_row,
30198
new.f_int2 = old.f_int2 - @max_row,
30199
new.f_charbig = '####updated per update trigger####';
30202
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30203
f_charbig = '####updated per update statement itself####';
30205
# check trigger-9 success: 1
30206
DROP TRIGGER trg_2;
30207
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30208
f_int2 = CAST(f_char1 AS SIGNED INT),
30209
f_charbig = CONCAT('===',f_char1,'===');
30210
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30212
SET new.f_int1 = new.f_int1 + @max_row,
30213
new.f_int2 = new.f_int2 - @max_row,
30214
new.f_charbig = '####updated per update trigger####';
30217
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30218
f_charbig = '####updated per update statement itself####';
30220
# check trigger-10 success: 1
30221
DROP TRIGGER trg_2;
30222
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30223
f_int2 = CAST(f_char1 AS SIGNED INT),
30224
f_charbig = CONCAT('===',f_char1,'===');
30225
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30227
SET new.f_int1 = @my_max1 + @counter,
30228
new.f_int2 = @my_min2 - @counter,
30229
new.f_charbig = '####updated per insert trigger####';
30230
SET @counter = @counter + 1;
30233
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30234
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30235
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30236
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30237
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30239
DROP TRIGGER trg_3;
30241
# check trigger-11 success: 1
30243
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30244
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30245
AND f_charbig = '####updated per insert trigger####';
30246
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30248
SET new.f_int1 = @my_max1 + @counter,
30249
new.f_int2 = @my_min2 - @counter,
30250
new.f_charbig = '####updated per insert trigger####';
30251
SET @counter = @counter + 1;
30254
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30255
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30256
SELECT CAST(f_int1 AS CHAR),
30257
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30258
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30260
DROP TRIGGER trg_3;
30262
# check trigger-12 success: 1
30264
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30265
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30266
AND f_charbig = '####updated per insert trigger####';
30268
Table Op Msg_type Msg_text
30269
test.t1 analyze note The storage engine for the table doesn't support analyze
30270
CHECK TABLE t1 EXTENDED;
30271
Table Op Msg_type Msg_text
30272
test.t1 check note The storage engine for the table doesn't support check
30273
CHECKSUM TABLE t1 EXTENDED;
30275
test.t1 <some_value>
30277
Table Op Msg_type Msg_text
30278
test.t1 optimize note The storage engine for the table doesn't support optimize
30279
# check layout success: 1
30280
REPAIR TABLE t1 EXTENDED;
30281
Table Op Msg_type Msg_text
30282
test.t1 repair note The storage engine for the table doesn't support repair
30283
# check layout success: 1
30286
# check TRUNCATE success: 1
30287
# check layout success: 1
30288
# End usability test (inc/partition_check.inc)
30295
f_charbig VARCHAR(1000)
30296
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
30298
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
30299
(PARTITION part1 VALUES IN (0)
30300
(SUBPARTITION sp11, SUBPARTITION sp12),
30301
PARTITION part2 VALUES IN (1)
30302
(SUBPARTITION sp21, SUBPARTITION sp22),
30303
PARTITION part3 VALUES IN (2)
30304
(SUBPARTITION sp31, SUBPARTITION sp32),
30305
PARTITION part4 VALUES IN (NULL)
30306
(SUBPARTITION sp41, SUBPARTITION sp42));
30307
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30308
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
30309
# Start usability test (inc/partition_check.inc)
30311
SHOW CREATE TABLE t1;
30313
t1 CREATE TABLE `t1` (
30314
`f_int1` int(11) DEFAULT NULL,
30315
`f_int2` int(11) DEFAULT NULL,
30316
`f_char1` char(20) DEFAULT NULL,
30317
`f_char2` char(20) DEFAULT NULL,
30318
`f_charbig` varchar(1000) DEFAULT NULL,
30319
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
30320
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
30321
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3))) SUBPARTITION BY HASH (f_int2 + 1) (PARTITION part1 VALUES IN (0) (SUBPARTITION sp11 ENGINE = InnoDB, SUBPARTITION sp12 ENGINE = InnoDB), PARTITION part2 VALUES IN (1) (SUBPARTITION sp21 ENGINE = InnoDB, SUBPARTITION sp22 ENGINE = InnoDB), PARTITION part3 VALUES IN (2) (SUBPARTITION sp31 ENGINE = InnoDB, SUBPARTITION sp32 ENGINE = InnoDB), PARTITION part4 VALUES IN (NULL) (SUBPARTITION sp41 ENGINE = InnoDB, SUBPARTITION sp42 ENGINE = InnoDB)) */
30324
$MYSQLTEST_VARDIR/master-data/test/t1.frm
30325
$MYSQLTEST_VARDIR/master-data/test/t1.par
30327
# check prerequisites-1 success: 1
30328
# check COUNT(*) success: 1
30329
# check MIN/MAX(f_int1) success: 1
30330
# check MIN/MAX(f_int2) success: 1
30331
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30332
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30333
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30334
WHERE f_int1 IN (2,3);
30335
ERROR 23000: Can't write; duplicate key in table 't1'
30336
# check prerequisites-3 success: 1
30337
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
30338
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30339
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
30340
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
30341
WHERE f_int1 IN (2,3);
30342
DELETE FROM t1 WHERE f_charbig = 'delete me';
30343
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30344
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
30345
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
30346
WHERE f_int1 IN (2,3);
30347
DELETE FROM t1 WHERE f_charbig = 'delete me';
30348
# check read via f_int1 success: 1
30349
# check read via f_int2 success: 1
30351
# check multiple-1 success: 1
30352
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30354
# check multiple-2 success: 1
30355
INSERT INTO t1 SELECT * FROM t0_template
30356
WHERE MOD(f_int1,3) = 0;
30358
# check multiple-3 success: 1
30359
UPDATE t1 SET f_int1 = f_int1 + @max_row
30360
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30361
AND @max_row_div2 + @max_row_div4;
30363
# check multiple-4 success: 1
30365
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30366
AND @max_row_div2 + @max_row_div4 + @max_row;
30368
# check multiple-5 success: 1
30369
SELECT COUNT(*) INTO @try_count FROM t0_template
30370
WHERE MOD(f_int1,3) = 0
30371
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30372
SELECT COUNT(*) INTO @clash_count
30373
FROM t1 INNER JOIN t0_template USING(f_int1)
30374
WHERE MOD(f_int1,3) = 0
30375
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30376
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30378
SET f_int1 = @cur_value , f_int2 = @cur_value,
30379
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30380
f_charbig = '#SINGLE#';
30382
# check single-1 success: 1
30383
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30385
SET f_int1 = @cur_value , f_int2 = @cur_value,
30386
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30387
f_charbig = '#SINGLE#';
30389
# check single-2 success: 1
30390
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30391
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30392
UPDATE t1 SET f_int1 = @cur_value2
30393
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30395
# check single-3 success: 1
30396
SET @cur_value1= -1;
30397
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30398
UPDATE t1 SET f_int1 = @cur_value1
30399
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30401
# check single-4 success: 1
30402
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30403
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30405
# check single-5 success: 1
30406
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30408
# check single-6 success: 1
30409
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30411
# check single-7 success: 1
30412
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
30413
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30414
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30415
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30416
f_charbig = '#NULL#';
30418
SET f_int1 = NULL , f_int2 = -@max_row,
30419
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30420
f_charbig = '#NULL#';
30421
# check null success: 1
30423
# check null-1 success: 1
30424
UPDATE t1 SET f_int1 = -@max_row
30425
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30426
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30428
# check null-2 success: 1
30429
UPDATE t1 SET f_int1 = NULL
30430
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30431
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30433
# check null-3 success: 1
30435
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30436
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30438
# check null-4 success: 1
30440
WHERE f_int1 = 0 AND f_int2 = 0
30441
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30442
AND f_charbig = '#NULL#';
30443
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30444
SELECT f_int1, f_int1, '', '', 'was inserted'
30445
FROM t0_template source_tab
30446
WHERE MOD(f_int1,3) = 0
30447
AND f_int1 BETWEEN @max_row_div2 AND @max_row
30449
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
30450
f_int2 = 2 * @max_row + source_tab.f_int1,
30451
f_charbig = 'was updated';
30453
# check unique-1-a success: 1
30455
# check unique-1-b success: 1
30456
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30457
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30458
f_int2 = CAST(f_char1 AS SIGNED INT),
30459
f_charbig = CONCAT('===',f_char1,'===')
30460
WHERE f_charbig = 'was updated';
30461
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30462
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
30463
FROM t0_template source_tab
30464
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30466
# check replace success: 1
30468
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
30470
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
30471
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
30472
UPDATE t1 SET f_int2 = f_int1,
30473
f_char1 = CAST(f_int1 AS CHAR),
30474
f_char2 = CAST(f_int1 AS CHAR),
30475
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
30476
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
30478
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30479
SELECT f_int1, f_int1, '', '', 'was inserted'
30480
FROM t0_template source_tab
30481
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30483
# check transactions-1 success: 1
30486
# check transactions-2 success: 1
30489
# check transactions-3 success: 1
30490
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30494
# check transactions-4 success: 1
30495
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30496
SELECT f_int1, f_int1, '', '', 'was inserted'
30497
FROM t0_template source_tab
30498
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30500
# check transactions-5 success: 1
30503
# check transactions-6 success: 1
30504
# INFO: Storage engine used for t1 seems to be transactional.
30507
# check transactions-7 success: 1
30508
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30510
SET @@session.sql_mode = 'traditional';
30511
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30512
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30513
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30514
'', '', 'was inserted' FROM t0_template
30515
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30516
ERROR 22012: Division by 0
30519
# check transactions-8 success: 1
30520
# INFO: Storage engine used for t1 seems to be able to revert
30521
# changes made by the failing statement.
30522
SET @@session.sql_mode = '';
30524
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30526
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30528
# check special-1 success: 1
30529
UPDATE t1 SET f_charbig = '';
30531
# check special-2 success: 1
30532
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30533
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30534
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30535
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30536
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30537
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30538
'just inserted' FROM t0_template
30539
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30540
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30542
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30543
f_charbig = 'updated by trigger'
30544
WHERE f_int1 = new.f_int1;
30546
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30547
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30548
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30550
# check trigger-1 success: 1
30551
DROP TRIGGER trg_1;
30552
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30553
f_int2 = CAST(f_char1 AS SIGNED INT),
30554
f_charbig = 'just inserted'
30555
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30557
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30558
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30559
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30560
'just inserted' FROM t0_template
30561
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30562
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30564
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30565
f_charbig = 'updated by trigger'
30566
WHERE f_int1 = new.f_int1;
30568
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30569
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30572
# check trigger-2 success: 1
30573
DROP TRIGGER trg_1;
30574
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30575
f_int2 = CAST(f_char1 AS SIGNED INT),
30576
f_charbig = 'just inserted'
30577
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30579
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30580
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30581
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30582
'just inserted' FROM t0_template
30583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30584
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30586
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30587
f_charbig = 'updated by trigger'
30588
WHERE f_int1 = new.f_int1;
30590
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30591
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30593
# check trigger-3 success: 1
30594
DROP TRIGGER trg_1;
30595
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30596
f_int2 = CAST(f_char1 AS SIGNED INT),
30597
f_charbig = 'just inserted'
30598
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30600
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30601
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30602
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30603
'just inserted' FROM t0_template
30604
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30605
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30607
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30608
f_charbig = 'updated by trigger'
30609
WHERE f_int1 = - old.f_int1;
30611
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30612
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30614
# check trigger-4 success: 1
30615
DROP TRIGGER trg_1;
30616
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30617
f_int2 = CAST(f_char1 AS SIGNED INT),
30618
f_charbig = 'just inserted'
30619
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30621
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30622
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30623
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30624
'just inserted' FROM t0_template
30625
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30626
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30628
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30629
f_charbig = 'updated by trigger'
30630
WHERE f_int1 = new.f_int1;
30632
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30633
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30635
# check trigger-5 success: 1
30636
DROP TRIGGER trg_1;
30637
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30638
f_int2 = CAST(f_char1 AS SIGNED INT),
30639
f_charbig = 'just inserted'
30640
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30642
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30643
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30644
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30645
'just inserted' FROM t0_template
30646
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30647
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30649
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30650
f_charbig = 'updated by trigger'
30651
WHERE f_int1 = - old.f_int1;
30653
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30654
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30656
# check trigger-6 success: 1
30657
DROP TRIGGER trg_1;
30658
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30659
f_int2 = CAST(f_char1 AS SIGNED INT),
30660
f_charbig = 'just inserted'
30661
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30663
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30664
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30665
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30666
'just inserted' FROM t0_template
30667
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30668
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30670
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30671
f_charbig = 'updated by trigger'
30672
WHERE f_int1 = - old.f_int1;
30675
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30677
# check trigger-7 success: 1
30678
DROP TRIGGER trg_1;
30679
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30680
f_int2 = CAST(f_char1 AS SIGNED INT),
30681
f_charbig = 'just inserted'
30682
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30684
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30685
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30686
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30687
'just inserted' FROM t0_template
30688
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30689
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30691
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30692
f_charbig = 'updated by trigger'
30693
WHERE f_int1 = - old.f_int1;
30696
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30698
# check trigger-8 success: 1
30699
DROP TRIGGER trg_1;
30700
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30701
f_int2 = CAST(f_char1 AS SIGNED INT),
30702
f_charbig = 'just inserted'
30703
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30705
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30707
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30708
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30710
SET new.f_int1 = old.f_int1 + @max_row,
30711
new.f_int2 = old.f_int2 - @max_row,
30712
new.f_charbig = '####updated per update trigger####';
30715
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30716
f_charbig = '####updated per update statement itself####';
30718
# check trigger-9 success: 1
30719
DROP TRIGGER trg_2;
30720
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30721
f_int2 = CAST(f_char1 AS SIGNED INT),
30722
f_charbig = CONCAT('===',f_char1,'===');
30723
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30725
SET new.f_int1 = new.f_int1 + @max_row,
30726
new.f_int2 = new.f_int2 - @max_row,
30727
new.f_charbig = '####updated per update trigger####';
30730
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30731
f_charbig = '####updated per update statement itself####';
30733
# check trigger-10 success: 1
30734
DROP TRIGGER trg_2;
30735
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30736
f_int2 = CAST(f_char1 AS SIGNED INT),
30737
f_charbig = CONCAT('===',f_char1,'===');
30738
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30740
SET new.f_int1 = @my_max1 + @counter,
30741
new.f_int2 = @my_min2 - @counter,
30742
new.f_charbig = '####updated per insert trigger####';
30743
SET @counter = @counter + 1;
30746
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30747
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30748
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30749
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30750
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30752
DROP TRIGGER trg_3;
30754
# check trigger-11 success: 1
30756
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30757
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30758
AND f_charbig = '####updated per insert trigger####';
30759
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30761
SET new.f_int1 = @my_max1 + @counter,
30762
new.f_int2 = @my_min2 - @counter,
30763
new.f_charbig = '####updated per insert trigger####';
30764
SET @counter = @counter + 1;
30767
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30768
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30769
SELECT CAST(f_int1 AS CHAR),
30770
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30771
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30773
DROP TRIGGER trg_3;
30775
# check trigger-12 success: 1
30777
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30778
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30779
AND f_charbig = '####updated per insert trigger####';
30781
Table Op Msg_type Msg_text
30782
test.t1 analyze note The storage engine for the table doesn't support analyze
30783
CHECK TABLE t1 EXTENDED;
30784
Table Op Msg_type Msg_text
30785
test.t1 check note The storage engine for the table doesn't support check
30786
CHECKSUM TABLE t1 EXTENDED;
30788
test.t1 <some_value>
30790
Table Op Msg_type Msg_text
30791
test.t1 optimize note The storage engine for the table doesn't support optimize
30792
# check layout success: 1
30793
REPAIR TABLE t1 EXTENDED;
30794
Table Op Msg_type Msg_text
30795
test.t1 repair note The storage engine for the table doesn't support repair
30796
# check layout success: 1
30799
# check TRUNCATE success: 1
30800
# check layout success: 1
30801
# End usability test (inc/partition_check.inc)
30808
f_charbig VARCHAR(1000)
30809
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
30811
PARTITION BY LIST(ABS(MOD(f_int1,2)))
30812
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
30813
(PARTITION part1 VALUES IN (0),
30814
PARTITION part2 VALUES IN (1),
30815
PARTITION part3 VALUES IN (NULL));
30816
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30817
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template;
30818
# Start usability test (inc/partition_check.inc)
30820
SHOW CREATE TABLE t1;
30822
t1 CREATE TABLE `t1` (
30823
`f_int1` int(11) DEFAULT NULL,
30824
`f_int2` int(11) DEFAULT NULL,
30825
`f_char1` char(20) DEFAULT NULL,
30826
`f_char2` char(20) DEFAULT NULL,
30827
`f_charbig` varchar(1000) DEFAULT NULL,
30828
UNIQUE KEY `uidx1` (`f_int1`,`f_int2`),
30829
UNIQUE KEY `uidx2` (`f_int2`,`f_int1`)
30830
) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2))) SUBPARTITION BY KEY (f_int2) SUBPARTITIONS 3 (PARTITION part1 VALUES IN (0) ENGINE = InnoDB, PARTITION part2 VALUES IN (1) ENGINE = InnoDB, PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
30833
$MYSQLTEST_VARDIR/master-data/test/t1.frm
30834
$MYSQLTEST_VARDIR/master-data/test/t1.par
30836
# check prerequisites-1 success: 1
30837
# check COUNT(*) success: 1
30838
# check MIN/MAX(f_int1) success: 1
30839
# check MIN/MAX(f_int2) success: 1
30840
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30841
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30842
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30843
WHERE f_int1 IN (2,3);
30844
ERROR 23000: Can't write; duplicate key in table 't1'
30845
# check prerequisites-3 success: 1
30846
# INFO: f_int1 AND/OR f_int2 AND/OR (f_int1,f_int2) is UNIQUE
30847
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30848
SELECT f_int1, 2 * @max_row + f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
30849
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
30850
WHERE f_int1 IN (2,3);
30851
DELETE FROM t1 WHERE f_charbig = 'delete me';
30852
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30853
SELECT 2 * @max_row + f_int1, f_int1, CAST((2 * @max_row + f_int1) AS CHAR),
30854
CAST((2 * @max_row + f_int1) AS CHAR), 'delete me' FROM t0_template
30855
WHERE f_int1 IN (2,3);
30856
DELETE FROM t1 WHERE f_charbig = 'delete me';
30857
# check read via f_int1 success: 1
30858
# check read via f_int2 success: 1
30860
# check multiple-1 success: 1
30861
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30863
# check multiple-2 success: 1
30864
INSERT INTO t1 SELECT * FROM t0_template
30865
WHERE MOD(f_int1,3) = 0;
30867
# check multiple-3 success: 1
30868
UPDATE t1 SET f_int1 = f_int1 + @max_row
30869
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30870
AND @max_row_div2 + @max_row_div4;
30872
# check multiple-4 success: 1
30874
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30875
AND @max_row_div2 + @max_row_div4 + @max_row;
30877
# check multiple-5 success: 1
30878
SELECT COUNT(*) INTO @try_count FROM t0_template
30879
WHERE MOD(f_int1,3) = 0
30880
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30881
SELECT COUNT(*) INTO @clash_count
30882
FROM t1 INNER JOIN t0_template USING(f_int1)
30883
WHERE MOD(f_int1,3) = 0
30884
AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30885
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30887
SET f_int1 = @cur_value , f_int2 = @cur_value,
30888
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30889
f_charbig = '#SINGLE#';
30891
# check single-1 success: 1
30892
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30894
SET f_int1 = @cur_value , f_int2 = @cur_value,
30895
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30896
f_charbig = '#SINGLE#';
30898
# check single-2 success: 1
30899
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30900
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30901
UPDATE t1 SET f_int1 = @cur_value2
30902
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30904
# check single-3 success: 1
30905
SET @cur_value1= -1;
30906
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30907
UPDATE t1 SET f_int1 = @cur_value1
30908
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30910
# check single-4 success: 1
30911
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30912
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30914
# check single-5 success: 1
30915
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30917
# check single-6 success: 1
30918
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30920
# check single-7 success: 1
30921
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
30922
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30923
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30924
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30925
f_charbig = '#NULL#';
30927
SET f_int1 = NULL , f_int2 = -@max_row,
30928
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30929
f_charbig = '#NULL#';
30930
# check null success: 1
30932
# check null-1 success: 1
30933
UPDATE t1 SET f_int1 = -@max_row
30934
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30935
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30937
# check null-2 success: 1
30938
UPDATE t1 SET f_int1 = NULL
30939
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30940
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30942
# check null-3 success: 1
30944
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
30945
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
30947
# check null-4 success: 1
30949
WHERE f_int1 = 0 AND f_int2 = 0
30950
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30951
AND f_charbig = '#NULL#';
30952
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30953
SELECT f_int1, f_int1, '', '', 'was inserted'
30954
FROM t0_template source_tab
30955
WHERE MOD(f_int1,3) = 0
30956
AND f_int1 BETWEEN @max_row_div2 AND @max_row
30958
UPDATE f_int1 = 2 * @max_row + source_tab.f_int1,
30959
f_int2 = 2 * @max_row + source_tab.f_int1,
30960
f_charbig = 'was updated';
30962
# check unique-1-a success: 1
30964
# check unique-1-b success: 1
30965
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30966
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30967
f_int2 = CAST(f_char1 AS SIGNED INT),
30968
f_charbig = CONCAT('===',f_char1,'===')
30969
WHERE f_charbig = 'was updated';
30970
REPLACE INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30971
SELECT f_int1, - f_int1, '', '', 'was inserted or replaced'
30972
FROM t0_template source_tab
30973
WHERE MOD(f_int1,3) = 0 AND f_int1 BETWEEN @max_row_div2 AND @max_row;
30975
# check replace success: 1
30977
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row_div2 + @max_row_div4;
30979
WHERE f_int1 = f_int2 AND MOD(f_int1,3) = 0 AND
30980
f_int1 BETWEEN @max_row_div2 + @max_row_div4 AND @max_row;
30981
UPDATE t1 SET f_int2 = f_int1,
30982
f_char1 = CAST(f_int1 AS CHAR),
30983
f_char2 = CAST(f_int1 AS CHAR),
30984
f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===')
30985
WHERE f_charbig = 'was inserted or replaced' AND f_int1 = - f_int2;
30987
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30988
SELECT f_int1, f_int1, '', '', 'was inserted'
30989
FROM t0_template source_tab
30990
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30992
# check transactions-1 success: 1
30995
# check transactions-2 success: 1
30998
# check transactions-3 success: 1
30999
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31003
# check transactions-4 success: 1
31004
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31005
SELECT f_int1, f_int1, '', '', 'was inserted'
31006
FROM t0_template source_tab
31007
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31009
# check transactions-5 success: 1
31012
# check transactions-6 success: 1
31013
# INFO: Storage engine used for t1 seems to be transactional.
31016
# check transactions-7 success: 1
31017
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31019
SET @@session.sql_mode = 'traditional';
31020
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31021
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31022
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31023
'', '', 'was inserted' FROM t0_template
31024
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31025
ERROR 22012: Division by 0
31028
# check transactions-8 success: 1
31029
# INFO: Storage engine used for t1 seems to be able to revert
31030
# changes made by the failing statement.
31031
SET @@session.sql_mode = '';
31033
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31035
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31037
# check special-1 success: 1
31038
UPDATE t1 SET f_charbig = '';
31040
# check special-2 success: 1
31041
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31042
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31043
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31044
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31045
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31046
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31047
'just inserted' FROM t0_template
31048
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31049
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31051
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31052
f_charbig = 'updated by trigger'
31053
WHERE f_int1 = new.f_int1;
31055
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31056
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31057
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31059
# check trigger-1 success: 1
31060
DROP TRIGGER trg_1;
31061
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31062
f_int2 = CAST(f_char1 AS SIGNED INT),
31063
f_charbig = 'just inserted'
31064
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31066
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31067
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31068
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31069
'just inserted' FROM t0_template
31070
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31071
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31073
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31074
f_charbig = 'updated by trigger'
31075
WHERE f_int1 = new.f_int1;
31077
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31078
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31079
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31081
# check trigger-2 success: 1
31082
DROP TRIGGER trg_1;
31083
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31084
f_int2 = CAST(f_char1 AS SIGNED INT),
31085
f_charbig = 'just inserted'
31086
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31088
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31089
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31090
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31091
'just inserted' FROM t0_template
31092
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31093
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31095
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31096
f_charbig = 'updated by trigger'
31097
WHERE f_int1 = new.f_int1;
31099
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31100
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31102
# check trigger-3 success: 1
31103
DROP TRIGGER trg_1;
31104
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31105
f_int2 = CAST(f_char1 AS SIGNED INT),
31106
f_charbig = 'just inserted'
31107
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31109
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31110
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31111
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31112
'just inserted' FROM t0_template
31113
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31114
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31116
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31117
f_charbig = 'updated by trigger'
31118
WHERE f_int1 = - old.f_int1;
31120
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31121
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31123
# check trigger-4 success: 1
31124
DROP TRIGGER trg_1;
31125
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31126
f_int2 = CAST(f_char1 AS SIGNED INT),
31127
f_charbig = 'just inserted'
31128
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31130
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31131
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31132
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31133
'just inserted' FROM t0_template
31134
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31135
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31137
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31138
f_charbig = 'updated by trigger'
31139
WHERE f_int1 = new.f_int1;
31141
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31142
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31144
# check trigger-5 success: 1
31145
DROP TRIGGER trg_1;
31146
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31147
f_int2 = CAST(f_char1 AS SIGNED INT),
31148
f_charbig = 'just inserted'
31149
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31151
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31152
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31153
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31154
'just inserted' FROM t0_template
31155
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31156
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31158
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31159
f_charbig = 'updated by trigger'
31160
WHERE f_int1 = - old.f_int1;
31162
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31163
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31165
# check trigger-6 success: 1
31166
DROP TRIGGER trg_1;
31167
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31168
f_int2 = CAST(f_char1 AS SIGNED INT),
31169
f_charbig = 'just inserted'
31170
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31172
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31173
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31174
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31175
'just inserted' FROM t0_template
31176
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31177
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31179
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31180
f_charbig = 'updated by trigger'
31181
WHERE f_int1 = - old.f_int1;
31184
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31186
# check trigger-7 success: 1
31187
DROP TRIGGER trg_1;
31188
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31189
f_int2 = CAST(f_char1 AS SIGNED INT),
31190
f_charbig = 'just inserted'
31191
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31193
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31194
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31195
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31196
'just inserted' FROM t0_template
31197
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31198
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31200
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31201
f_charbig = 'updated by trigger'
31202
WHERE f_int1 = - old.f_int1;
31205
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31207
# check trigger-8 success: 1
31208
DROP TRIGGER trg_1;
31209
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31210
f_int2 = CAST(f_char1 AS SIGNED INT),
31211
f_charbig = 'just inserted'
31212
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31214
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31216
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31217
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31219
SET new.f_int1 = old.f_int1 + @max_row,
31220
new.f_int2 = old.f_int2 - @max_row,
31221
new.f_charbig = '####updated per update trigger####';
31224
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31225
f_charbig = '####updated per update statement itself####';
31227
# check trigger-9 success: 1
31228
DROP TRIGGER trg_2;
31229
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31230
f_int2 = CAST(f_char1 AS SIGNED INT),
31231
f_charbig = CONCAT('===',f_char1,'===');
31232
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31234
SET new.f_int1 = new.f_int1 + @max_row,
31235
new.f_int2 = new.f_int2 - @max_row,
31236
new.f_charbig = '####updated per update trigger####';
31239
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31240
f_charbig = '####updated per update statement itself####';
31242
# check trigger-10 success: 1
31243
DROP TRIGGER trg_2;
31244
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31245
f_int2 = CAST(f_char1 AS SIGNED INT),
31246
f_charbig = CONCAT('===',f_char1,'===');
31247
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31249
SET new.f_int1 = @my_max1 + @counter,
31250
new.f_int2 = @my_min2 - @counter,
31251
new.f_charbig = '####updated per insert trigger####';
31252
SET @counter = @counter + 1;
31255
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31256
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31257
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31258
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31259
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31261
DROP TRIGGER trg_3;
31263
# check trigger-11 success: 1
31265
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31266
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31267
AND f_charbig = '####updated per insert trigger####';
31268
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31270
SET new.f_int1 = @my_max1 + @counter,
31271
new.f_int2 = @my_min2 - @counter,
31272
new.f_charbig = '####updated per insert trigger####';
31273
SET @counter = @counter + 1;
31276
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31277
INSERT INTO t1 (f_char1, f_char2, f_charbig)
31278
SELECT CAST(f_int1 AS CHAR),
31279
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31280
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31282
DROP TRIGGER trg_3;
31284
# check trigger-12 success: 1
31286
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31287
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31288
AND f_charbig = '####updated per insert trigger####';
31290
Table Op Msg_type Msg_text
31291
test.t1 analyze note The storage engine for the table doesn't support analyze
31292
CHECK TABLE t1 EXTENDED;
31293
Table Op Msg_type Msg_text
31294
test.t1 check note The storage engine for the table doesn't support check
31295
CHECKSUM TABLE t1 EXTENDED;
31297
test.t1 <some_value>
31299
Table Op Msg_type Msg_text
31300
test.t1 optimize note The storage engine for the table doesn't support optimize
31301
# check layout success: 1
31302
REPAIR TABLE t1 EXTENDED;
31303
Table Op Msg_type Msg_text
31304
test.t1 repair note The storage engine for the table doesn't support repair
31305
# check layout success: 1
31308
# check TRUNCATE success: 1
31309
# check layout success: 1
31310
# End usability test (inc/partition_check.inc)
31312
DROP VIEW IF EXISTS v1;
31313
DROP TABLE IF EXISTS t1;
31314
DROP TABLE IF EXISTS t0_aux;
31315
DROP TABLE IF EXISTS t0_definition;
31316
DROP TABLE IF EXISTS t0_template;