2
SET @@session.storage_engine = 'InnoDB';
4
#------------------------------------------------------------------------
5
# 0. Setting of auxiliary variables + Creation of an auxiliary tables
6
# needed in many testcases
7
#------------------------------------------------------------------------
8
SELECT @max_row DIV 2 INTO @max_row_div2;
9
SELECT @max_row DIV 3 INTO @max_row_div3;
10
SELECT @max_row DIV 4 INTO @max_row_div4;
11
SET @max_int_4 = 2147483647;
12
DROP TABLE IF EXISTS t0_template;
13
CREATE TABLE t0_template (
18
f_charbig VARCHAR(1000) ,
21
# Logging of <max_row> INSERTs into t0_template suppressed
22
DROP TABLE IF EXISTS t0_definition;
23
CREATE TABLE t0_definition (
25
create_command VARBINARY(5000),
26
file_list VARBINARY(10000),
29
DROP TABLE IF EXISTS t0_aux;
30
CREATE TABLE t0_aux ( f_int1 INTEGER,
34
f_charbig VARCHAR(1000) )
37
SET @@session.sql_mode= '';
38
# End of basic preparations needed for all tests
39
#-----------------------------------------------
41
#========================================================================
42
# 2 DROP PRIMARY KEY or UNIQUE INDEX
43
#========================================================================
44
#------------------------------------------------------------------------
45
# 2.1 Partitioning function contains one column(f_int1)
46
#------------------------------------------------------------------------
47
# 2.1.5 DROP PRIMARY KEY + UNIQUE INDEX consisting of two columns
48
DROP TABLE IF EXISTS t1;
54
f_charbig VARCHAR(1000)
55
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
57
PARTITION BY HASH(f_int1) PARTITIONS 2;
58
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
59
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
60
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
61
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
62
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
63
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
64
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
65
# Start usability test (inc/partition_check.inc)
69
t1 CREATE TABLE `t1` (
70
`f_int1` int(11) NOT NULL DEFAULT '0',
71
`f_int2` int(11) NOT NULL DEFAULT '0',
72
`f_char1` char(20) DEFAULT NULL,
73
`f_char2` char(20) DEFAULT NULL,
74
`f_charbig` varchar(1000) DEFAULT NULL
75
) ENGINE=InnoDB DEFAULT CHARSET=latin1
76
/*!50100 PARTITION BY HASH (f_int1)
79
# check prerequisites-1 success: 1
80
# check COUNT(*) success: 1
81
# check MIN/MAX(f_int1) success: 1
82
# check MIN/MAX(f_int2) success: 1
83
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
84
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
85
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
86
WHERE f_int1 IN (2,3);
87
# check prerequisites-3 success: 1
88
DELETE FROM t1 WHERE f_charbig = 'delete me';
89
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
90
# check read via f_int1 success: 1
91
# check read via f_int2 success: 1
93
# check multiple-1 success: 1
94
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
96
# check multiple-2 success: 1
97
INSERT INTO t1 SELECT * FROM t0_template
98
WHERE MOD(f_int1,3) = 0;
100
# check multiple-3 success: 1
101
UPDATE t1 SET f_int1 = f_int1 + @max_row
102
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
103
AND @max_row_div2 + @max_row_div4;
105
# check multiple-4 success: 1
107
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
108
AND @max_row_div2 + @max_row_div4 + @max_row;
110
# check multiple-5 success: 1
111
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
113
SET f_int1 = @cur_value , f_int2 = @cur_value,
114
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
115
f_charbig = '#SINGLE#';
117
# check single-1 success: 1
118
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
120
SET f_int1 = @cur_value , f_int2 = @cur_value,
121
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
122
f_charbig = '#SINGLE#';
124
# check single-2 success: 1
125
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
126
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
127
UPDATE t1 SET f_int1 = @cur_value2
128
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
130
# check single-3 success: 1
132
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
133
UPDATE t1 SET f_int1 = @cur_value1
134
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
136
# check single-4 success: 1
137
SELECT MAX(f_int1) INTO @cur_value FROM t1;
138
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
140
# check single-5 success: 1
141
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
143
# check single-6 success: 1
144
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
146
# check single-7 success: 1
147
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
148
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
149
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
150
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
151
f_charbig = '#NULL#';
153
SET f_int1 = NULL , f_int2 = -@max_row,
154
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
155
f_charbig = '#NULL#';
156
ERROR 23000: Column 'f_int1' cannot be null
157
# check null success: 1
159
WHERE f_int1 = 0 AND f_int2 = 0
160
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
161
AND f_charbig = '#NULL#';
163
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
164
SELECT f_int1, f_int1, '', '', 'was inserted'
165
FROM t0_template source_tab
166
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
168
# check transactions-1 success: 1
171
# check transactions-2 success: 1
174
# check transactions-3 success: 1
175
DELETE FROM t1 WHERE f_charbig = 'was inserted';
179
# check transactions-4 success: 1
180
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
181
SELECT f_int1, f_int1, '', '', 'was inserted'
182
FROM t0_template source_tab
183
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
185
# check transactions-5 success: 1
188
# check transactions-6 success: 1
189
# INFO: Storage engine used for t1 seems to be transactional.
192
# check transactions-7 success: 1
193
DELETE FROM t1 WHERE f_charbig = 'was inserted';
195
SET @@session.sql_mode = 'traditional';
196
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
197
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
198
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
199
'', '', 'was inserted' FROM t0_template
200
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
201
ERROR 22012: Division by 0
204
# check transactions-8 success: 1
205
# INFO: Storage engine used for t1 seems to be able to revert
206
# changes made by the failing statement.
207
SET @@session.sql_mode = '';
209
DELETE FROM t1 WHERE f_charbig = 'was inserted';
211
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
213
# check special-1 success: 1
214
UPDATE t1 SET f_charbig = '';
216
# check special-2 success: 1
217
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
218
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
219
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
220
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
221
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
222
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
223
'just inserted' FROM t0_template
224
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
225
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
227
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
228
f_charbig = 'updated by trigger'
229
WHERE f_int1 = new.f_int1;
231
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
232
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
233
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
235
# check trigger-1 success: 1
237
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
238
f_int2 = CAST(f_char1 AS SIGNED INT),
239
f_charbig = 'just inserted'
240
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
242
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
243
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
244
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
245
'just inserted' FROM t0_template
246
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
247
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
249
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
250
f_charbig = 'updated by trigger'
251
WHERE f_int1 = new.f_int1;
253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
254
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
255
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
257
# check trigger-2 success: 1
259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
260
f_int2 = CAST(f_char1 AS SIGNED INT),
261
f_charbig = 'just inserted'
262
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
264
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
265
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
266
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
267
'just inserted' FROM t0_template
268
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
269
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
271
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
272
f_charbig = 'updated by trigger'
273
WHERE f_int1 = new.f_int1;
275
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
276
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
278
# check trigger-3 success: 1
280
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
281
f_int2 = CAST(f_char1 AS SIGNED INT),
282
f_charbig = 'just inserted'
283
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
285
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
286
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
287
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
288
'just inserted' FROM t0_template
289
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
290
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
292
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
293
f_charbig = 'updated by trigger'
294
WHERE f_int1 = - old.f_int1;
296
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
297
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
299
# check trigger-4 success: 1
301
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
302
f_int2 = CAST(f_char1 AS SIGNED INT),
303
f_charbig = 'just inserted'
304
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
306
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
307
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
308
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
309
'just inserted' FROM t0_template
310
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
311
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
313
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
314
f_charbig = 'updated by trigger'
315
WHERE f_int1 = new.f_int1;
317
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
318
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
320
# check trigger-5 success: 1
322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
323
f_int2 = CAST(f_char1 AS SIGNED INT),
324
f_charbig = 'just inserted'
325
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
327
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
328
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
329
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
330
'just inserted' FROM t0_template
331
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
332
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
334
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
335
f_charbig = 'updated by trigger'
336
WHERE f_int1 = - old.f_int1;
338
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
339
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
341
# check trigger-6 success: 1
343
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
344
f_int2 = CAST(f_char1 AS SIGNED INT),
345
f_charbig = 'just inserted'
346
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
348
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
349
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
350
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
351
'just inserted' FROM t0_template
352
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
353
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
355
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
356
f_charbig = 'updated by trigger'
357
WHERE f_int1 = - old.f_int1;
360
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
362
# check trigger-7 success: 1
364
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
365
f_int2 = CAST(f_char1 AS SIGNED INT),
366
f_charbig = 'just inserted'
367
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
369
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
370
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
371
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
372
'just inserted' FROM t0_template
373
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
374
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
376
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
377
f_charbig = 'updated by trigger'
378
WHERE f_int1 = - old.f_int1;
381
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
383
# check trigger-8 success: 1
385
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
386
f_int2 = CAST(f_char1 AS SIGNED INT),
387
f_charbig = 'just inserted'
388
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
390
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
392
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
393
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
395
SET new.f_int1 = old.f_int1 + @max_row,
396
new.f_int2 = old.f_int2 - @max_row,
397
new.f_charbig = '####updated per update trigger####';
400
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
401
f_charbig = '####updated per update statement itself####';
403
# check trigger-9 success: 1
405
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
406
f_int2 = CAST(f_char1 AS SIGNED INT),
407
f_charbig = CONCAT('===',f_char1,'===');
408
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
410
SET new.f_int1 = new.f_int1 + @max_row,
411
new.f_int2 = new.f_int2 - @max_row,
412
new.f_charbig = '####updated per update trigger####';
415
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
416
f_charbig = '####updated per update statement itself####';
418
# check trigger-10 success: 1
420
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
421
f_int2 = CAST(f_char1 AS SIGNED INT),
422
f_charbig = CONCAT('===',f_char1,'===');
423
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
425
SET new.f_int1 = @my_max1 + @counter,
426
new.f_int2 = @my_min2 - @counter,
427
new.f_charbig = '####updated per insert trigger####';
428
SET @counter = @counter + 1;
431
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
432
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
433
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
434
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
435
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
439
# check trigger-11 success: 1
441
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
442
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
443
AND f_charbig = '####updated per insert trigger####';
444
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
446
SET new.f_int1 = @my_max1 + @counter,
447
new.f_int2 = @my_min2 - @counter,
448
new.f_charbig = '####updated per insert trigger####';
449
SET @counter = @counter + 1;
452
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
453
INSERT INTO t1 (f_char1, f_char2, f_charbig)
454
SELECT CAST(f_int1 AS CHAR),
455
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
456
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
460
# check trigger-12 success: 1
462
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
463
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
464
AND f_charbig = '####updated per insert trigger####';
466
Table Op Msg_type Msg_text
467
test.t1 analyze status OK
468
CHECK TABLE t1 EXTENDED;
469
Table Op Msg_type Msg_text
470
test.t1 check status OK
471
CHECKSUM TABLE t1 EXTENDED;
475
Table Op Msg_type Msg_text
476
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
477
test.t1 optimize status OK
478
# check layout success: 1
479
REPAIR TABLE t1 EXTENDED;
480
Table Op Msg_type Msg_text
481
test.t1 repair note The storage engine for the table doesn't support repair
482
# check layout success: 1
485
# check TRUNCATE success: 1
486
# check layout success: 1
487
# End usability test (inc/partition_check.inc)
494
f_charbig VARCHAR(1000)
495
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
497
PARTITION BY KEY(f_int1) PARTITIONS 5;
498
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
499
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
500
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
501
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
502
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
503
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
504
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
505
# Start usability test (inc/partition_check.inc)
507
SHOW CREATE TABLE t1;
509
t1 CREATE TABLE `t1` (
510
`f_int1` int(11) NOT NULL DEFAULT '0',
511
`f_int2` int(11) NOT NULL DEFAULT '0',
512
`f_char1` char(20) DEFAULT NULL,
513
`f_char2` char(20) DEFAULT NULL,
514
`f_charbig` varchar(1000) DEFAULT NULL
515
) ENGINE=InnoDB DEFAULT CHARSET=latin1
516
/*!50100 PARTITION BY KEY (f_int1)
519
# check prerequisites-1 success: 1
520
# check COUNT(*) success: 1
521
# check MIN/MAX(f_int1) success: 1
522
# check MIN/MAX(f_int2) success: 1
523
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
524
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
525
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
526
WHERE f_int1 IN (2,3);
527
# check prerequisites-3 success: 1
528
DELETE FROM t1 WHERE f_charbig = 'delete me';
529
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
530
# check read via f_int1 success: 1
531
# check read via f_int2 success: 1
533
# check multiple-1 success: 1
534
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
536
# check multiple-2 success: 1
537
INSERT INTO t1 SELECT * FROM t0_template
538
WHERE MOD(f_int1,3) = 0;
540
# check multiple-3 success: 1
541
UPDATE t1 SET f_int1 = f_int1 + @max_row
542
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
543
AND @max_row_div2 + @max_row_div4;
545
# check multiple-4 success: 1
547
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
548
AND @max_row_div2 + @max_row_div4 + @max_row;
550
# check multiple-5 success: 1
551
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
553
SET f_int1 = @cur_value , f_int2 = @cur_value,
554
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
555
f_charbig = '#SINGLE#';
557
# check single-1 success: 1
558
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
560
SET f_int1 = @cur_value , f_int2 = @cur_value,
561
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
562
f_charbig = '#SINGLE#';
564
# check single-2 success: 1
565
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
566
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
567
UPDATE t1 SET f_int1 = @cur_value2
568
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
570
# check single-3 success: 1
572
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
573
UPDATE t1 SET f_int1 = @cur_value1
574
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
576
# check single-4 success: 1
577
SELECT MAX(f_int1) INTO @cur_value FROM t1;
578
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
580
# check single-5 success: 1
581
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
583
# check single-6 success: 1
584
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
586
# check single-7 success: 1
587
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
588
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
589
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
590
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
591
f_charbig = '#NULL#';
593
SET f_int1 = NULL , f_int2 = -@max_row,
594
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
595
f_charbig = '#NULL#';
596
ERROR 23000: Column 'f_int1' cannot be null
597
# check null success: 1
599
WHERE f_int1 = 0 AND f_int2 = 0
600
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
601
AND f_charbig = '#NULL#';
603
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
604
SELECT f_int1, f_int1, '', '', 'was inserted'
605
FROM t0_template source_tab
606
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
608
# check transactions-1 success: 1
611
# check transactions-2 success: 1
614
# check transactions-3 success: 1
615
DELETE FROM t1 WHERE f_charbig = 'was inserted';
619
# check transactions-4 success: 1
620
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
621
SELECT f_int1, f_int1, '', '', 'was inserted'
622
FROM t0_template source_tab
623
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
625
# check transactions-5 success: 1
628
# check transactions-6 success: 1
629
# INFO: Storage engine used for t1 seems to be transactional.
632
# check transactions-7 success: 1
633
DELETE FROM t1 WHERE f_charbig = 'was inserted';
635
SET @@session.sql_mode = 'traditional';
636
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
637
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
638
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
639
'', '', 'was inserted' FROM t0_template
640
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
641
ERROR 22012: Division by 0
644
# check transactions-8 success: 1
645
# INFO: Storage engine used for t1 seems to be able to revert
646
# changes made by the failing statement.
647
SET @@session.sql_mode = '';
649
DELETE FROM t1 WHERE f_charbig = 'was inserted';
651
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
653
# check special-1 success: 1
654
UPDATE t1 SET f_charbig = '';
656
# check special-2 success: 1
657
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
658
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
659
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
660
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
661
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
662
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
663
'just inserted' FROM t0_template
664
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
665
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
667
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
668
f_charbig = 'updated by trigger'
669
WHERE f_int1 = new.f_int1;
671
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
672
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
675
# check trigger-1 success: 1
677
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
678
f_int2 = CAST(f_char1 AS SIGNED INT),
679
f_charbig = 'just inserted'
680
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
682
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
683
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
684
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
685
'just inserted' FROM t0_template
686
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
687
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
689
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
690
f_charbig = 'updated by trigger'
691
WHERE f_int1 = new.f_int1;
693
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
694
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
695
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
697
# check trigger-2 success: 1
699
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
700
f_int2 = CAST(f_char1 AS SIGNED INT),
701
f_charbig = 'just inserted'
702
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
704
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
705
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
706
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
707
'just inserted' FROM t0_template
708
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
709
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
711
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
712
f_charbig = 'updated by trigger'
713
WHERE f_int1 = new.f_int1;
715
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
716
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
718
# check trigger-3 success: 1
720
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
721
f_int2 = CAST(f_char1 AS SIGNED INT),
722
f_charbig = 'just inserted'
723
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
725
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
726
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
727
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
728
'just inserted' FROM t0_template
729
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
730
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
732
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
733
f_charbig = 'updated by trigger'
734
WHERE f_int1 = - old.f_int1;
736
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
737
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
739
# check trigger-4 success: 1
741
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
742
f_int2 = CAST(f_char1 AS SIGNED INT),
743
f_charbig = 'just inserted'
744
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
746
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
747
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
748
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
749
'just inserted' FROM t0_template
750
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
751
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
753
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
754
f_charbig = 'updated by trigger'
755
WHERE f_int1 = new.f_int1;
757
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
758
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
760
# check trigger-5 success: 1
762
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
763
f_int2 = CAST(f_char1 AS SIGNED INT),
764
f_charbig = 'just inserted'
765
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
767
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
768
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
769
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
770
'just inserted' FROM t0_template
771
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
772
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
774
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
775
f_charbig = 'updated by trigger'
776
WHERE f_int1 = - old.f_int1;
778
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
779
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
781
# check trigger-6 success: 1
783
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
784
f_int2 = CAST(f_char1 AS SIGNED INT),
785
f_charbig = 'just inserted'
786
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
788
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
789
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
790
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
791
'just inserted' FROM t0_template
792
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
793
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
795
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
796
f_charbig = 'updated by trigger'
797
WHERE f_int1 = - old.f_int1;
800
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
802
# check trigger-7 success: 1
804
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
805
f_int2 = CAST(f_char1 AS SIGNED INT),
806
f_charbig = 'just inserted'
807
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
809
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
810
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
811
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
812
'just inserted' FROM t0_template
813
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
814
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
816
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
817
f_charbig = 'updated by trigger'
818
WHERE f_int1 = - old.f_int1;
821
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
823
# check trigger-8 success: 1
825
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
826
f_int2 = CAST(f_char1 AS SIGNED INT),
827
f_charbig = 'just inserted'
828
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
830
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
832
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
833
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
835
SET new.f_int1 = old.f_int1 + @max_row,
836
new.f_int2 = old.f_int2 - @max_row,
837
new.f_charbig = '####updated per update trigger####';
840
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
841
f_charbig = '####updated per update statement itself####';
843
# check trigger-9 success: 1
845
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
846
f_int2 = CAST(f_char1 AS SIGNED INT),
847
f_charbig = CONCAT('===',f_char1,'===');
848
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
850
SET new.f_int1 = new.f_int1 + @max_row,
851
new.f_int2 = new.f_int2 - @max_row,
852
new.f_charbig = '####updated per update trigger####';
855
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
856
f_charbig = '####updated per update statement itself####';
858
# check trigger-10 success: 1
860
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
861
f_int2 = CAST(f_char1 AS SIGNED INT),
862
f_charbig = CONCAT('===',f_char1,'===');
863
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
865
SET new.f_int1 = @my_max1 + @counter,
866
new.f_int2 = @my_min2 - @counter,
867
new.f_charbig = '####updated per insert trigger####';
868
SET @counter = @counter + 1;
871
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
872
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
873
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
874
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
875
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
879
# check trigger-11 success: 1
881
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
882
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
883
AND f_charbig = '####updated per insert trigger####';
884
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
886
SET new.f_int1 = @my_max1 + @counter,
887
new.f_int2 = @my_min2 - @counter,
888
new.f_charbig = '####updated per insert trigger####';
889
SET @counter = @counter + 1;
892
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
893
INSERT INTO t1 (f_char1, f_char2, f_charbig)
894
SELECT CAST(f_int1 AS CHAR),
895
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
896
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
900
# check trigger-12 success: 1
902
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
903
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
904
AND f_charbig = '####updated per insert trigger####';
906
Table Op Msg_type Msg_text
907
test.t1 analyze status OK
908
CHECK TABLE t1 EXTENDED;
909
Table Op Msg_type Msg_text
910
test.t1 check status OK
911
CHECKSUM TABLE t1 EXTENDED;
915
Table Op Msg_type Msg_text
916
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
917
test.t1 optimize status OK
918
# check layout success: 1
919
REPAIR TABLE t1 EXTENDED;
920
Table Op Msg_type Msg_text
921
test.t1 repair note The storage engine for the table doesn't support repair
922
# check layout success: 1
925
# check TRUNCATE success: 1
926
# check layout success: 1
927
# End usability test (inc/partition_check.inc)
934
f_charbig VARCHAR(1000)
935
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
937
PARTITION BY LIST(MOD(f_int1,4))
938
(PARTITION part_3 VALUES IN (-3),
939
PARTITION part_2 VALUES IN (-2),
940
PARTITION part_1 VALUES IN (-1),
941
PARTITION part_N VALUES IN (NULL),
942
PARTITION part0 VALUES IN (0),
943
PARTITION part1 VALUES IN (1),
944
PARTITION part2 VALUES IN (2),
945
PARTITION part3 VALUES IN (3));
946
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
947
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
948
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
949
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
950
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
951
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
952
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
953
# Start usability test (inc/partition_check.inc)
955
SHOW CREATE TABLE t1;
957
t1 CREATE TABLE `t1` (
958
`f_int1` int(11) NOT NULL DEFAULT '0',
959
`f_int2` int(11) NOT NULL DEFAULT '0',
960
`f_char1` char(20) DEFAULT NULL,
961
`f_char2` char(20) DEFAULT NULL,
962
`f_charbig` varchar(1000) DEFAULT NULL
963
) ENGINE=InnoDB DEFAULT CHARSET=latin1
964
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
965
(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
966
PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
967
PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
968
PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
969
PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
970
PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
971
PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
972
PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
974
# check prerequisites-1 success: 1
975
# check COUNT(*) success: 1
976
# check MIN/MAX(f_int1) success: 1
977
# check MIN/MAX(f_int2) success: 1
978
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
979
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
980
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
981
WHERE f_int1 IN (2,3);
982
# check prerequisites-3 success: 1
983
DELETE FROM t1 WHERE f_charbig = 'delete me';
984
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
985
# check read via f_int1 success: 1
986
# check read via f_int2 success: 1
988
# check multiple-1 success: 1
989
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
991
# check multiple-2 success: 1
992
INSERT INTO t1 SELECT * FROM t0_template
993
WHERE MOD(f_int1,3) = 0;
995
# check multiple-3 success: 1
996
UPDATE t1 SET f_int1 = f_int1 + @max_row
997
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
998
AND @max_row_div2 + @max_row_div4;
1000
# check multiple-4 success: 1
1002
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1003
AND @max_row_div2 + @max_row_div4 + @max_row;
1005
# check multiple-5 success: 1
1006
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1008
SET f_int1 = @cur_value , f_int2 = @cur_value,
1009
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1010
f_charbig = '#SINGLE#';
1012
# check single-1 success: 1
1013
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1015
SET f_int1 = @cur_value , f_int2 = @cur_value,
1016
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1017
f_charbig = '#SINGLE#';
1019
# check single-2 success: 1
1020
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1021
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1022
UPDATE t1 SET f_int1 = @cur_value2
1023
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1025
# check single-3 success: 1
1026
SET @cur_value1= -1;
1027
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1028
UPDATE t1 SET f_int1 = @cur_value1
1029
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1031
# check single-4 success: 1
1032
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1033
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1035
# check single-5 success: 1
1036
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1038
# check single-6 success: 1
1039
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1041
# check single-7 success: 1
1042
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1043
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1044
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1045
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1046
f_charbig = '#NULL#';
1048
SET f_int1 = NULL , f_int2 = -@max_row,
1049
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1050
f_charbig = '#NULL#';
1051
ERROR 23000: Column 'f_int1' cannot be null
1052
# check null success: 1
1054
WHERE f_int1 = 0 AND f_int2 = 0
1055
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1056
AND f_charbig = '#NULL#';
1058
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1059
SELECT f_int1, f_int1, '', '', 'was inserted'
1060
FROM t0_template source_tab
1061
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1063
# check transactions-1 success: 1
1066
# check transactions-2 success: 1
1069
# check transactions-3 success: 1
1070
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1074
# check transactions-4 success: 1
1075
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1076
SELECT f_int1, f_int1, '', '', 'was inserted'
1077
FROM t0_template source_tab
1078
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1080
# check transactions-5 success: 1
1083
# check transactions-6 success: 1
1084
# INFO: Storage engine used for t1 seems to be transactional.
1087
# check transactions-7 success: 1
1088
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1090
SET @@session.sql_mode = 'traditional';
1091
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1092
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1093
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1094
'', '', 'was inserted' FROM t0_template
1095
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1096
ERROR 22012: Division by 0
1099
# check transactions-8 success: 1
1100
# INFO: Storage engine used for t1 seems to be able to revert
1101
# changes made by the failing statement.
1102
SET @@session.sql_mode = '';
1104
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1106
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1108
# check special-1 success: 1
1109
UPDATE t1 SET f_charbig = '';
1111
# check special-2 success: 1
1112
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1113
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1114
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1115
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1116
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1117
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1118
'just inserted' FROM t0_template
1119
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1120
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1122
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1123
f_charbig = 'updated by trigger'
1124
WHERE f_int1 = new.f_int1;
1126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1127
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1128
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1130
# check trigger-1 success: 1
1132
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1133
f_int2 = CAST(f_char1 AS SIGNED INT),
1134
f_charbig = 'just inserted'
1135
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1137
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1138
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1139
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1140
'just inserted' FROM t0_template
1141
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1142
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1144
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1145
f_charbig = 'updated by trigger'
1146
WHERE f_int1 = new.f_int1;
1148
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1149
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1152
# check trigger-2 success: 1
1154
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1155
f_int2 = CAST(f_char1 AS SIGNED INT),
1156
f_charbig = 'just inserted'
1157
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1159
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1160
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1161
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1162
'just inserted' FROM t0_template
1163
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1164
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1166
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1167
f_charbig = 'updated by trigger'
1168
WHERE f_int1 = new.f_int1;
1170
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1171
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1173
# check trigger-3 success: 1
1175
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1176
f_int2 = CAST(f_char1 AS SIGNED INT),
1177
f_charbig = 'just inserted'
1178
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1180
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1181
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1182
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1183
'just inserted' FROM t0_template
1184
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1185
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1187
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1188
f_charbig = 'updated by trigger'
1189
WHERE f_int1 = - old.f_int1;
1191
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1192
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1194
# check trigger-4 success: 1
1196
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1197
f_int2 = CAST(f_char1 AS SIGNED INT),
1198
f_charbig = 'just inserted'
1199
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1201
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1202
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1203
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1204
'just inserted' FROM t0_template
1205
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1206
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1208
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1209
f_charbig = 'updated by trigger'
1210
WHERE f_int1 = new.f_int1;
1212
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1213
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1215
# check trigger-5 success: 1
1217
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1218
f_int2 = CAST(f_char1 AS SIGNED INT),
1219
f_charbig = 'just inserted'
1220
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1222
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1223
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1224
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1225
'just inserted' FROM t0_template
1226
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1227
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
1229
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1230
f_charbig = 'updated by trigger'
1231
WHERE f_int1 = - old.f_int1;
1233
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1234
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1236
# check trigger-6 success: 1
1238
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1239
f_int2 = CAST(f_char1 AS SIGNED INT),
1240
f_charbig = 'just inserted'
1241
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1243
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1244
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1245
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1246
'just inserted' FROM t0_template
1247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1248
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
1250
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1251
f_charbig = 'updated by trigger'
1252
WHERE f_int1 = - old.f_int1;
1255
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1257
# check trigger-7 success: 1
1259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1260
f_int2 = CAST(f_char1 AS SIGNED INT),
1261
f_charbig = 'just inserted'
1262
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1264
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1265
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1266
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1267
'just inserted' FROM t0_template
1268
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1269
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
1271
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1272
f_charbig = 'updated by trigger'
1273
WHERE f_int1 = - old.f_int1;
1276
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1278
# check trigger-8 success: 1
1280
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1281
f_int2 = CAST(f_char1 AS SIGNED INT),
1282
f_charbig = 'just inserted'
1283
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1285
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1287
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1288
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1290
SET new.f_int1 = old.f_int1 + @max_row,
1291
new.f_int2 = old.f_int2 - @max_row,
1292
new.f_charbig = '####updated per update trigger####';
1295
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1296
f_charbig = '####updated per update statement itself####';
1298
# check trigger-9 success: 1
1300
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1301
f_int2 = CAST(f_char1 AS SIGNED INT),
1302
f_charbig = CONCAT('===',f_char1,'===');
1303
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1305
SET new.f_int1 = new.f_int1 + @max_row,
1306
new.f_int2 = new.f_int2 - @max_row,
1307
new.f_charbig = '####updated per update trigger####';
1310
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1311
f_charbig = '####updated per update statement itself####';
1313
# check trigger-10 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 = CONCAT('===',f_char1,'===');
1318
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1320
SET new.f_int1 = @my_max1 + @counter,
1321
new.f_int2 = @my_min2 - @counter,
1322
new.f_charbig = '####updated per insert trigger####';
1323
SET @counter = @counter + 1;
1326
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1327
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1328
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1329
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1330
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1334
# check trigger-11 success: 1
1336
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1337
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1338
AND f_charbig = '####updated per insert trigger####';
1339
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1341
SET new.f_int1 = @my_max1 + @counter,
1342
new.f_int2 = @my_min2 - @counter,
1343
new.f_charbig = '####updated per insert trigger####';
1344
SET @counter = @counter + 1;
1347
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1348
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1349
SELECT CAST(f_int1 AS CHAR),
1350
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1351
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1355
# check trigger-12 success: 1
1357
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1358
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1359
AND f_charbig = '####updated per insert trigger####';
1361
Table Op Msg_type Msg_text
1362
test.t1 analyze status OK
1363
CHECK TABLE t1 EXTENDED;
1364
Table Op Msg_type Msg_text
1365
test.t1 check status OK
1366
CHECKSUM TABLE t1 EXTENDED;
1368
test.t1 <some_value>
1370
Table Op Msg_type Msg_text
1371
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
1372
test.t1 optimize status OK
1373
# check layout success: 1
1374
REPAIR TABLE t1 EXTENDED;
1375
Table Op Msg_type Msg_text
1376
test.t1 repair note The storage engine for the table doesn't support repair
1377
# check layout success: 1
1380
# check TRUNCATE success: 1
1381
# check layout success: 1
1382
# End usability test (inc/partition_check.inc)
1389
f_charbig VARCHAR(1000)
1390
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
1392
PARTITION BY RANGE(f_int1)
1393
(PARTITION parta VALUES LESS THAN (0),
1394
PARTITION partb VALUES LESS THAN (5),
1395
PARTITION partc VALUES LESS THAN (10),
1396
PARTITION partd VALUES LESS THAN (10 + 5),
1397
PARTITION parte VALUES LESS THAN (20),
1398
PARTITION partf VALUES LESS THAN (2147483646));
1399
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1400
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1401
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1402
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
1403
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1404
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1405
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1406
# Start usability test (inc/partition_check.inc)
1408
SHOW CREATE TABLE t1;
1410
t1 CREATE TABLE `t1` (
1411
`f_int1` int(11) NOT NULL DEFAULT '0',
1412
`f_int2` int(11) NOT NULL DEFAULT '0',
1413
`f_char1` char(20) DEFAULT NULL,
1414
`f_char2` char(20) DEFAULT NULL,
1415
`f_charbig` varchar(1000) DEFAULT NULL
1416
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1417
/*!50100 PARTITION BY RANGE (f_int1)
1418
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
1419
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
1420
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
1421
PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
1422
PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
1423
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
1425
# check prerequisites-1 success: 1
1426
# check COUNT(*) success: 1
1427
# check MIN/MAX(f_int1) success: 1
1428
# check MIN/MAX(f_int2) success: 1
1429
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1430
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1431
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1432
WHERE f_int1 IN (2,3);
1433
# check prerequisites-3 success: 1
1434
DELETE FROM t1 WHERE f_charbig = 'delete me';
1435
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1436
# check read via f_int1 success: 1
1437
# check read via f_int2 success: 1
1439
# check multiple-1 success: 1
1440
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1442
# check multiple-2 success: 1
1443
INSERT INTO t1 SELECT * FROM t0_template
1444
WHERE MOD(f_int1,3) = 0;
1446
# check multiple-3 success: 1
1447
UPDATE t1 SET f_int1 = f_int1 + @max_row
1448
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1449
AND @max_row_div2 + @max_row_div4;
1451
# check multiple-4 success: 1
1453
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1454
AND @max_row_div2 + @max_row_div4 + @max_row;
1456
# check multiple-5 success: 1
1457
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1459
SET f_int1 = @cur_value , f_int2 = @cur_value,
1460
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1461
f_charbig = '#SINGLE#';
1463
# check single-1 success: 1
1464
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1466
SET f_int1 = @cur_value , f_int2 = @cur_value,
1467
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1468
f_charbig = '#SINGLE#';
1470
# check single-2 success: 1
1471
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1472
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1473
UPDATE t1 SET f_int1 = @cur_value2
1474
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1476
# check single-3 success: 1
1477
SET @cur_value1= -1;
1478
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1479
UPDATE t1 SET f_int1 = @cur_value1
1480
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1482
# check single-4 success: 1
1483
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1484
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1486
# check single-5 success: 1
1487
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1489
# check single-6 success: 1
1490
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1491
ERROR HY000: Table has no partition for value 2147483647
1492
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1493
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1494
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1495
f_charbig = '#NULL#';
1497
SET f_int1 = NULL , f_int2 = -@max_row,
1498
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1499
f_charbig = '#NULL#';
1500
ERROR 23000: Column 'f_int1' cannot be null
1501
# check null success: 1
1503
WHERE f_int1 = 0 AND f_int2 = 0
1504
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1505
AND f_charbig = '#NULL#';
1507
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1508
SELECT f_int1, f_int1, '', '', 'was inserted'
1509
FROM t0_template source_tab
1510
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1512
# check transactions-1 success: 1
1515
# check transactions-2 success: 1
1518
# check transactions-3 success: 1
1519
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1523
# check transactions-4 success: 1
1524
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1525
SELECT f_int1, f_int1, '', '', 'was inserted'
1526
FROM t0_template source_tab
1527
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1529
# check transactions-5 success: 1
1532
# check transactions-6 success: 1
1533
# INFO: Storage engine used for t1 seems to be transactional.
1536
# check transactions-7 success: 1
1537
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1539
SET @@session.sql_mode = 'traditional';
1540
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1541
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1542
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1543
'', '', 'was inserted' FROM t0_template
1544
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1545
ERROR 22012: Division by 0
1548
# check transactions-8 success: 1
1549
# INFO: Storage engine used for t1 seems to be able to revert
1550
# changes made by the failing statement.
1551
SET @@session.sql_mode = '';
1553
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1555
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
1557
# check special-1 success: 1
1558
UPDATE t1 SET f_charbig = '';
1560
# check special-2 success: 1
1561
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
1562
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1563
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
1564
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1565
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1566
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1567
'just inserted' FROM t0_template
1568
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1569
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
1571
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1572
f_charbig = 'updated by trigger'
1573
WHERE f_int1 = new.f_int1;
1575
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1576
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1577
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1579
# check trigger-1 success: 1
1581
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1582
f_int2 = CAST(f_char1 AS SIGNED INT),
1583
f_charbig = 'just inserted'
1584
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1586
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1587
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1588
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1589
'just inserted' FROM t0_template
1590
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1591
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
1593
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1594
f_charbig = 'updated by trigger'
1595
WHERE f_int1 = new.f_int1;
1597
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1598
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
1599
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1601
# check trigger-2 success: 1
1603
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1604
f_int2 = CAST(f_char1 AS SIGNED INT),
1605
f_charbig = 'just inserted'
1606
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1608
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1609
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1610
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1611
'just inserted' FROM t0_template
1612
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1613
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1615
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1616
f_charbig = 'updated by trigger'
1617
WHERE f_int1 = new.f_int1;
1619
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1620
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1622
# check trigger-3 success: 1
1624
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1625
f_int2 = CAST(f_char1 AS SIGNED INT),
1626
f_charbig = 'just inserted'
1627
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
1629
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1630
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
1631
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
1632
'just inserted' FROM t0_template
1633
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1634
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
1636
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
1637
f_charbig = 'updated by trigger'
1638
WHERE f_int1 = - old.f_int1;
1640
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
1641
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1643
# check trigger-4 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 AFTER 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-5 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 AFTER 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-6 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 BEFORE DELETE 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 = - old.f_int1;
1704
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1706
# check trigger-7 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 DELETE 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;
1725
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
1727
# check trigger-8 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;
1736
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
1737
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1739
SET new.f_int1 = old.f_int1 + @max_row,
1740
new.f_int2 = old.f_int2 - @max_row,
1741
new.f_charbig = '####updated per update trigger####';
1744
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1745
f_charbig = '####updated per update statement itself####';
1747
# check trigger-9 success: 1
1749
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1750
f_int2 = CAST(f_char1 AS SIGNED INT),
1751
f_charbig = CONCAT('===',f_char1,'===');
1752
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
1754
SET new.f_int1 = new.f_int1 + @max_row,
1755
new.f_int2 = new.f_int2 - @max_row,
1756
new.f_charbig = '####updated per update trigger####';
1759
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
1760
f_charbig = '####updated per update statement itself####';
1762
# check trigger-10 success: 1
1764
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
1765
f_int2 = CAST(f_char1 AS SIGNED INT),
1766
f_charbig = CONCAT('===',f_char1,'===');
1767
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1769
SET new.f_int1 = @my_max1 + @counter,
1770
new.f_int2 = @my_min2 - @counter,
1771
new.f_charbig = '####updated per insert trigger####';
1772
SET @counter = @counter + 1;
1775
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1776
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1777
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1778
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1779
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1783
# check trigger-11 success: 1
1785
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1786
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1787
AND f_charbig = '####updated per insert trigger####';
1788
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
1790
SET new.f_int1 = @my_max1 + @counter,
1791
new.f_int2 = @my_min2 - @counter,
1792
new.f_charbig = '####updated per insert trigger####';
1793
SET @counter = @counter + 1;
1796
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
1797
INSERT INTO t1 (f_char1, f_char2, f_charbig)
1798
SELECT CAST(f_int1 AS CHAR),
1799
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
1800
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
1804
# check trigger-12 success: 1
1806
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
1807
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
1808
AND f_charbig = '####updated per insert trigger####';
1810
Table Op Msg_type Msg_text
1811
test.t1 analyze status OK
1812
CHECK TABLE t1 EXTENDED;
1813
Table Op Msg_type Msg_text
1814
test.t1 check status OK
1815
CHECKSUM TABLE t1 EXTENDED;
1817
test.t1 <some_value>
1819
Table Op Msg_type Msg_text
1820
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
1821
test.t1 optimize status OK
1822
# check layout success: 1
1823
REPAIR TABLE t1 EXTENDED;
1824
Table Op Msg_type Msg_text
1825
test.t1 repair note The storage engine for the table doesn't support repair
1826
# check layout success: 1
1829
# check TRUNCATE success: 1
1830
# check layout success: 1
1831
# End usability test (inc/partition_check.inc)
1838
f_charbig VARCHAR(1000)
1839
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
1841
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
1842
(PARTITION parta VALUES LESS THAN (0),
1843
PARTITION partb VALUES LESS THAN (5),
1844
PARTITION partc VALUES LESS THAN (10),
1845
PARTITION partd VALUES LESS THAN (2147483646));
1846
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1847
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1848
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
1849
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
1850
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
1851
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
1852
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
1853
# Start usability test (inc/partition_check.inc)
1855
SHOW CREATE TABLE t1;
1857
t1 CREATE TABLE `t1` (
1858
`f_int1` int(11) NOT NULL DEFAULT '0',
1859
`f_int2` int(11) NOT NULL DEFAULT '0',
1860
`f_char1` char(20) DEFAULT NULL,
1861
`f_char2` char(20) DEFAULT NULL,
1862
`f_charbig` varchar(1000) DEFAULT NULL
1863
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1864
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
1865
SUBPARTITION BY HASH (f_int1)
1867
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
1868
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
1869
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
1870
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
1872
# check prerequisites-1 success: 1
1873
# check COUNT(*) success: 1
1874
# check MIN/MAX(f_int1) success: 1
1875
# check MIN/MAX(f_int2) success: 1
1876
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1877
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
1878
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
1879
WHERE f_int1 IN (2,3);
1880
# check prerequisites-3 success: 1
1881
DELETE FROM t1 WHERE f_charbig = 'delete me';
1882
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
1883
# check read via f_int1 success: 1
1884
# check read via f_int2 success: 1
1886
# check multiple-1 success: 1
1887
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
1889
# check multiple-2 success: 1
1890
INSERT INTO t1 SELECT * FROM t0_template
1891
WHERE MOD(f_int1,3) = 0;
1893
# check multiple-3 success: 1
1894
UPDATE t1 SET f_int1 = f_int1 + @max_row
1895
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
1896
AND @max_row_div2 + @max_row_div4;
1898
# check multiple-4 success: 1
1900
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
1901
AND @max_row_div2 + @max_row_div4 + @max_row;
1903
# check multiple-5 success: 1
1904
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
1906
SET f_int1 = @cur_value , f_int2 = @cur_value,
1907
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1908
f_charbig = '#SINGLE#';
1910
# check single-1 success: 1
1911
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
1913
SET f_int1 = @cur_value , f_int2 = @cur_value,
1914
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
1915
f_charbig = '#SINGLE#';
1917
# check single-2 success: 1
1918
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
1919
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
1920
UPDATE t1 SET f_int1 = @cur_value2
1921
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
1923
# check single-3 success: 1
1924
SET @cur_value1= -1;
1925
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
1926
UPDATE t1 SET f_int1 = @cur_value1
1927
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
1929
# check single-4 success: 1
1930
SELECT MAX(f_int1) INTO @cur_value FROM t1;
1931
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
1933
# check single-5 success: 1
1934
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
1936
# check single-6 success: 1
1937
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
1939
# check single-7 success: 1
1940
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
1941
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
1942
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
1943
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
1944
f_charbig = '#NULL#';
1946
SET f_int1 = NULL , f_int2 = -@max_row,
1947
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
1948
f_charbig = '#NULL#';
1949
ERROR 23000: Column 'f_int1' cannot be null
1950
# check null success: 1
1952
WHERE f_int1 = 0 AND f_int2 = 0
1953
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
1954
AND f_charbig = '#NULL#';
1956
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1957
SELECT f_int1, f_int1, '', '', 'was inserted'
1958
FROM t0_template source_tab
1959
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1961
# check transactions-1 success: 1
1964
# check transactions-2 success: 1
1967
# check transactions-3 success: 1
1968
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1972
# check transactions-4 success: 1
1973
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1974
SELECT f_int1, f_int1, '', '', 'was inserted'
1975
FROM t0_template source_tab
1976
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1978
# check transactions-5 success: 1
1981
# check transactions-6 success: 1
1982
# INFO: Storage engine used for t1 seems to be transactional.
1985
# check transactions-7 success: 1
1986
DELETE FROM t1 WHERE f_charbig = 'was inserted';
1988
SET @@session.sql_mode = 'traditional';
1989
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
1990
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
1991
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
1992
'', '', 'was inserted' FROM t0_template
1993
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
1994
ERROR 22012: Division by 0
1997
# check transactions-8 success: 1
1998
# INFO: Storage engine used for t1 seems to be able to revert
1999
# changes made by the failing statement.
2000
SET @@session.sql_mode = '';
2002
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2004
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2006
# check special-1 success: 1
2007
UPDATE t1 SET f_charbig = '';
2009
# check special-2 success: 1
2010
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2011
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2012
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2013
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2014
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2015
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2016
'just inserted' FROM t0_template
2017
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2018
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2020
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2021
f_charbig = 'updated by trigger'
2022
WHERE f_int1 = new.f_int1;
2024
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2025
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2026
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2028
# check trigger-1 success: 1
2030
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2031
f_int2 = CAST(f_char1 AS SIGNED INT),
2032
f_charbig = 'just inserted'
2033
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2035
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2036
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2037
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2038
'just inserted' FROM t0_template
2039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2040
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2042
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2043
f_charbig = 'updated by trigger'
2044
WHERE f_int1 = new.f_int1;
2046
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2047
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2048
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2050
# check trigger-2 success: 1
2052
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2053
f_int2 = CAST(f_char1 AS SIGNED INT),
2054
f_charbig = 'just inserted'
2055
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2057
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2058
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2059
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2060
'just inserted' FROM t0_template
2061
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2062
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2064
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2065
f_charbig = 'updated by trigger'
2066
WHERE f_int1 = new.f_int1;
2068
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2069
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2071
# check trigger-3 success: 1
2073
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2074
f_int2 = CAST(f_char1 AS SIGNED INT),
2075
f_charbig = 'just inserted'
2076
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2078
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2079
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2080
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2081
'just inserted' FROM t0_template
2082
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2083
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2085
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2086
f_charbig = 'updated by trigger'
2087
WHERE f_int1 = - old.f_int1;
2089
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2090
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2092
# check trigger-4 success: 1
2094
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2095
f_int2 = CAST(f_char1 AS SIGNED INT),
2096
f_charbig = 'just inserted'
2097
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2099
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2100
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2101
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2102
'just inserted' FROM t0_template
2103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2104
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2106
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2107
f_charbig = 'updated by trigger'
2108
WHERE f_int1 = new.f_int1;
2110
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2111
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2113
# check trigger-5 success: 1
2115
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2116
f_int2 = CAST(f_char1 AS SIGNED INT),
2117
f_charbig = 'just inserted'
2118
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2120
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2121
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2122
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2123
'just inserted' FROM t0_template
2124
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2125
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2127
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2128
f_charbig = 'updated by trigger'
2129
WHERE f_int1 = - old.f_int1;
2131
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2132
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2134
# check trigger-6 success: 1
2136
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2137
f_int2 = CAST(f_char1 AS SIGNED INT),
2138
f_charbig = 'just inserted'
2139
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2141
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2142
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2143
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2144
'just inserted' FROM t0_template
2145
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2146
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2148
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2149
f_charbig = 'updated by trigger'
2150
WHERE f_int1 = - old.f_int1;
2153
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2155
# check trigger-7 success: 1
2157
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2158
f_int2 = CAST(f_char1 AS SIGNED INT),
2159
f_charbig = 'just inserted'
2160
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2162
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2163
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2164
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2165
'just inserted' FROM t0_template
2166
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2167
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2169
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2170
f_charbig = 'updated by trigger'
2171
WHERE f_int1 = - old.f_int1;
2174
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2176
# check trigger-8 success: 1
2178
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2179
f_int2 = CAST(f_char1 AS SIGNED INT),
2180
f_charbig = 'just inserted'
2181
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2183
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2185
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2186
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2188
SET new.f_int1 = old.f_int1 + @max_row,
2189
new.f_int2 = old.f_int2 - @max_row,
2190
new.f_charbig = '####updated per update trigger####';
2193
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2194
f_charbig = '####updated per update statement itself####';
2196
# check trigger-9 success: 1
2198
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2199
f_int2 = CAST(f_char1 AS SIGNED INT),
2200
f_charbig = CONCAT('===',f_char1,'===');
2201
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2203
SET new.f_int1 = new.f_int1 + @max_row,
2204
new.f_int2 = new.f_int2 - @max_row,
2205
new.f_charbig = '####updated per update trigger####';
2208
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2209
f_charbig = '####updated per update statement itself####';
2211
# check trigger-10 success: 1
2213
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2214
f_int2 = CAST(f_char1 AS SIGNED INT),
2215
f_charbig = CONCAT('===',f_char1,'===');
2216
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2218
SET new.f_int1 = @my_max1 + @counter,
2219
new.f_int2 = @my_min2 - @counter,
2220
new.f_charbig = '####updated per insert trigger####';
2221
SET @counter = @counter + 1;
2224
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2225
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2226
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2227
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2228
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2232
# check trigger-11 success: 1
2234
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2235
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2236
AND f_charbig = '####updated per insert trigger####';
2237
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2239
SET new.f_int1 = @my_max1 + @counter,
2240
new.f_int2 = @my_min2 - @counter,
2241
new.f_charbig = '####updated per insert trigger####';
2242
SET @counter = @counter + 1;
2245
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2246
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2247
SELECT CAST(f_int1 AS CHAR),
2248
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2249
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2253
# check trigger-12 success: 1
2255
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2256
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2257
AND f_charbig = '####updated per insert trigger####';
2259
Table Op Msg_type Msg_text
2260
test.t1 analyze status OK
2261
CHECK TABLE t1 EXTENDED;
2262
Table Op Msg_type Msg_text
2263
test.t1 check status OK
2264
CHECKSUM TABLE t1 EXTENDED;
2266
test.t1 <some_value>
2268
Table Op Msg_type Msg_text
2269
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
2270
test.t1 optimize status OK
2271
# check layout success: 1
2272
REPAIR TABLE t1 EXTENDED;
2273
Table Op Msg_type Msg_text
2274
test.t1 repair note The storage engine for the table doesn't support repair
2275
# check layout success: 1
2278
# check TRUNCATE success: 1
2279
# check layout success: 1
2280
# End usability test (inc/partition_check.inc)
2287
f_charbig VARCHAR(1000)
2288
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
2290
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
2291
(PARTITION part1 VALUES LESS THAN (0)
2292
(SUBPARTITION subpart11, SUBPARTITION subpart12),
2293
PARTITION part2 VALUES LESS THAN (5)
2294
(SUBPARTITION subpart21, SUBPARTITION subpart22),
2295
PARTITION part3 VALUES LESS THAN (10)
2296
(SUBPARTITION subpart31, SUBPARTITION subpart32),
2297
PARTITION part4 VALUES LESS THAN (2147483646)
2298
(SUBPARTITION subpart41, SUBPARTITION subpart42));
2299
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2300
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2301
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2302
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
2303
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2304
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2305
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2306
# Start usability test (inc/partition_check.inc)
2308
SHOW CREATE TABLE t1;
2310
t1 CREATE TABLE `t1` (
2311
`f_int1` int(11) NOT NULL DEFAULT '0',
2312
`f_int2` int(11) NOT NULL DEFAULT '0',
2313
`f_char1` char(20) DEFAULT NULL,
2314
`f_char2` char(20) DEFAULT NULL,
2315
`f_charbig` varchar(1000) DEFAULT NULL
2316
) ENGINE=InnoDB DEFAULT CHARSET=latin1
2317
/*!50100 PARTITION BY RANGE (f_int1)
2318
SUBPARTITION BY KEY (f_int1)
2319
(PARTITION part1 VALUES LESS THAN (0)
2320
(SUBPARTITION subpart11 ENGINE = InnoDB,
2321
SUBPARTITION subpart12 ENGINE = InnoDB),
2322
PARTITION part2 VALUES LESS THAN (5)
2323
(SUBPARTITION subpart21 ENGINE = InnoDB,
2324
SUBPARTITION subpart22 ENGINE = InnoDB),
2325
PARTITION part3 VALUES LESS THAN (10)
2326
(SUBPARTITION subpart31 ENGINE = InnoDB,
2327
SUBPARTITION subpart32 ENGINE = InnoDB),
2328
PARTITION part4 VALUES LESS THAN (2147483646)
2329
(SUBPARTITION subpart41 ENGINE = InnoDB,
2330
SUBPARTITION subpart42 ENGINE = InnoDB)) */
2332
# check prerequisites-1 success: 1
2333
# check COUNT(*) success: 1
2334
# check MIN/MAX(f_int1) success: 1
2335
# check MIN/MAX(f_int2) success: 1
2336
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2337
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2338
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2339
WHERE f_int1 IN (2,3);
2340
# check prerequisites-3 success: 1
2341
DELETE FROM t1 WHERE f_charbig = 'delete me';
2342
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2343
# check read via f_int1 success: 1
2344
# check read via f_int2 success: 1
2346
# check multiple-1 success: 1
2347
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2349
# check multiple-2 success: 1
2350
INSERT INTO t1 SELECT * FROM t0_template
2351
WHERE MOD(f_int1,3) = 0;
2353
# check multiple-3 success: 1
2354
UPDATE t1 SET f_int1 = f_int1 + @max_row
2355
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2356
AND @max_row_div2 + @max_row_div4;
2358
# check multiple-4 success: 1
2360
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2361
AND @max_row_div2 + @max_row_div4 + @max_row;
2363
# check multiple-5 success: 1
2364
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2366
SET f_int1 = @cur_value , f_int2 = @cur_value,
2367
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2368
f_charbig = '#SINGLE#';
2370
# check single-1 success: 1
2371
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2373
SET f_int1 = @cur_value , f_int2 = @cur_value,
2374
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2375
f_charbig = '#SINGLE#';
2377
# check single-2 success: 1
2378
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2379
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2380
UPDATE t1 SET f_int1 = @cur_value2
2381
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2383
# check single-3 success: 1
2384
SET @cur_value1= -1;
2385
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2386
UPDATE t1 SET f_int1 = @cur_value1
2387
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2389
# check single-4 success: 1
2390
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2391
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2393
# check single-5 success: 1
2394
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2396
# check single-6 success: 1
2397
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2398
ERROR HY000: Table has no partition for value 2147483647
2399
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2400
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2401
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2402
f_charbig = '#NULL#';
2404
SET f_int1 = NULL , f_int2 = -@max_row,
2405
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2406
f_charbig = '#NULL#';
2407
ERROR 23000: Column 'f_int1' cannot be null
2408
# check null success: 1
2410
WHERE f_int1 = 0 AND f_int2 = 0
2411
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2412
AND f_charbig = '#NULL#';
2414
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2415
SELECT f_int1, f_int1, '', '', 'was inserted'
2416
FROM t0_template source_tab
2417
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2419
# check transactions-1 success: 1
2422
# check transactions-2 success: 1
2425
# check transactions-3 success: 1
2426
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2430
# check transactions-4 success: 1
2431
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2432
SELECT f_int1, f_int1, '', '', 'was inserted'
2433
FROM t0_template source_tab
2434
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2436
# check transactions-5 success: 1
2439
# check transactions-6 success: 1
2440
# INFO: Storage engine used for t1 seems to be transactional.
2443
# check transactions-7 success: 1
2444
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2446
SET @@session.sql_mode = 'traditional';
2447
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2448
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2449
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2450
'', '', 'was inserted' FROM t0_template
2451
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2452
ERROR 22012: Division by 0
2455
# check transactions-8 success: 1
2456
# INFO: Storage engine used for t1 seems to be able to revert
2457
# changes made by the failing statement.
2458
SET @@session.sql_mode = '';
2460
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2462
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2464
# check special-1 success: 1
2465
UPDATE t1 SET f_charbig = '';
2467
# check special-2 success: 1
2468
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2469
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2470
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2471
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2472
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2473
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2474
'just inserted' FROM t0_template
2475
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2476
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2478
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2479
f_charbig = 'updated by trigger'
2480
WHERE f_int1 = new.f_int1;
2482
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2483
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2484
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2486
# check trigger-1 success: 1
2488
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2489
f_int2 = CAST(f_char1 AS SIGNED INT),
2490
f_charbig = 'just inserted'
2491
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2493
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2494
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2495
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2496
'just inserted' FROM t0_template
2497
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2498
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2500
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2501
f_charbig = 'updated by trigger'
2502
WHERE f_int1 = new.f_int1;
2504
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2505
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2506
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2508
# check trigger-2 success: 1
2510
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2511
f_int2 = CAST(f_char1 AS SIGNED INT),
2512
f_charbig = 'just inserted'
2513
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2515
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2516
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2517
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2518
'just inserted' FROM t0_template
2519
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2520
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2522
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2523
f_charbig = 'updated by trigger'
2524
WHERE f_int1 = new.f_int1;
2526
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2527
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2529
# check trigger-3 success: 1
2531
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2532
f_int2 = CAST(f_char1 AS SIGNED INT),
2533
f_charbig = 'just inserted'
2534
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2536
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2537
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2538
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2539
'just inserted' FROM t0_template
2540
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2541
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2543
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2544
f_charbig = 'updated by trigger'
2545
WHERE f_int1 = - old.f_int1;
2547
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2548
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2550
# check trigger-4 success: 1
2552
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2553
f_int2 = CAST(f_char1 AS SIGNED INT),
2554
f_charbig = 'just inserted'
2555
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2557
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2558
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2559
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2560
'just inserted' FROM t0_template
2561
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2562
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2564
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2565
f_charbig = 'updated by trigger'
2566
WHERE f_int1 = new.f_int1;
2568
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2569
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2571
# check trigger-5 success: 1
2573
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2574
f_int2 = CAST(f_char1 AS SIGNED INT),
2575
f_charbig = 'just inserted'
2576
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2578
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2579
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2580
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2581
'just inserted' FROM t0_template
2582
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2583
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
2585
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2586
f_charbig = 'updated by trigger'
2587
WHERE f_int1 = - old.f_int1;
2589
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2590
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2592
# check trigger-6 success: 1
2594
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2595
f_int2 = CAST(f_char1 AS SIGNED INT),
2596
f_charbig = 'just inserted'
2597
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2599
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2600
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2601
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2602
'just inserted' FROM t0_template
2603
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2604
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
2606
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2607
f_charbig = 'updated by trigger'
2608
WHERE f_int1 = - old.f_int1;
2611
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2613
# check trigger-7 success: 1
2615
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2616
f_int2 = CAST(f_char1 AS SIGNED INT),
2617
f_charbig = 'just inserted'
2618
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2620
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2621
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2622
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2623
'just inserted' FROM t0_template
2624
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2625
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
2627
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2628
f_charbig = 'updated by trigger'
2629
WHERE f_int1 = - old.f_int1;
2632
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2634
# check trigger-8 success: 1
2636
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2637
f_int2 = CAST(f_char1 AS SIGNED INT),
2638
f_charbig = 'just inserted'
2639
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2641
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2643
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2644
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2646
SET new.f_int1 = old.f_int1 + @max_row,
2647
new.f_int2 = old.f_int2 - @max_row,
2648
new.f_charbig = '####updated per update trigger####';
2651
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2652
f_charbig = '####updated per update statement itself####';
2654
# check trigger-9 success: 1
2656
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2657
f_int2 = CAST(f_char1 AS SIGNED INT),
2658
f_charbig = CONCAT('===',f_char1,'===');
2659
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
2661
SET new.f_int1 = new.f_int1 + @max_row,
2662
new.f_int2 = new.f_int2 - @max_row,
2663
new.f_charbig = '####updated per update trigger####';
2666
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
2667
f_charbig = '####updated per update statement itself####';
2669
# check trigger-10 success: 1
2671
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2672
f_int2 = CAST(f_char1 AS SIGNED INT),
2673
f_charbig = CONCAT('===',f_char1,'===');
2674
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2676
SET new.f_int1 = @my_max1 + @counter,
2677
new.f_int2 = @my_min2 - @counter,
2678
new.f_charbig = '####updated per insert trigger####';
2679
SET @counter = @counter + 1;
2682
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2683
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2684
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2685
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2686
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2690
# check trigger-11 success: 1
2692
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2693
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2694
AND f_charbig = '####updated per insert trigger####';
2695
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
2697
SET new.f_int1 = @my_max1 + @counter,
2698
new.f_int2 = @my_min2 - @counter,
2699
new.f_charbig = '####updated per insert trigger####';
2700
SET @counter = @counter + 1;
2703
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
2704
INSERT INTO t1 (f_char1, f_char2, f_charbig)
2705
SELECT CAST(f_int1 AS CHAR),
2706
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
2707
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
2711
# check trigger-12 success: 1
2713
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
2714
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
2715
AND f_charbig = '####updated per insert trigger####';
2717
Table Op Msg_type Msg_text
2718
test.t1 analyze status OK
2719
CHECK TABLE t1 EXTENDED;
2720
Table Op Msg_type Msg_text
2721
test.t1 check status OK
2722
CHECKSUM TABLE t1 EXTENDED;
2724
test.t1 <some_value>
2726
Table Op Msg_type Msg_text
2727
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
2728
test.t1 optimize status OK
2729
# check layout success: 1
2730
REPAIR TABLE t1 EXTENDED;
2731
Table Op Msg_type Msg_text
2732
test.t1 repair note The storage engine for the table doesn't support repair
2733
# check layout success: 1
2736
# check TRUNCATE success: 1
2737
# check layout success: 1
2738
# End usability test (inc/partition_check.inc)
2745
f_charbig VARCHAR(1000)
2746
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
2748
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
2749
(PARTITION part1 VALUES IN (0)
2750
(SUBPARTITION sp11, SUBPARTITION sp12),
2751
PARTITION part2 VALUES IN (1)
2752
(SUBPARTITION sp21, SUBPARTITION sp22),
2753
PARTITION part3 VALUES IN (2)
2754
(SUBPARTITION sp31, SUBPARTITION sp32),
2755
PARTITION part4 VALUES IN (NULL)
2756
(SUBPARTITION sp41, SUBPARTITION sp42));
2757
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2758
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2759
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
2760
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
2761
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2762
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
2763
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
2764
# Start usability test (inc/partition_check.inc)
2766
SHOW CREATE TABLE t1;
2768
t1 CREATE TABLE `t1` (
2769
`f_int1` int(11) NOT NULL DEFAULT '0',
2770
`f_int2` int(11) NOT NULL DEFAULT '0',
2771
`f_char1` char(20) DEFAULT NULL,
2772
`f_char2` char(20) DEFAULT NULL,
2773
`f_charbig` varchar(1000) DEFAULT NULL
2774
) ENGINE=InnoDB DEFAULT CHARSET=latin1
2775
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
2776
SUBPARTITION BY HASH (f_int1 + 1)
2777
(PARTITION part1 VALUES IN (0)
2778
(SUBPARTITION sp11 ENGINE = InnoDB,
2779
SUBPARTITION sp12 ENGINE = InnoDB),
2780
PARTITION part2 VALUES IN (1)
2781
(SUBPARTITION sp21 ENGINE = InnoDB,
2782
SUBPARTITION sp22 ENGINE = InnoDB),
2783
PARTITION part3 VALUES IN (2)
2784
(SUBPARTITION sp31 ENGINE = InnoDB,
2785
SUBPARTITION sp32 ENGINE = InnoDB),
2786
PARTITION part4 VALUES IN (NULL)
2787
(SUBPARTITION sp41 ENGINE = InnoDB,
2788
SUBPARTITION sp42 ENGINE = InnoDB)) */
2790
# check prerequisites-1 success: 1
2791
# check COUNT(*) success: 1
2792
# check MIN/MAX(f_int1) success: 1
2793
# check MIN/MAX(f_int2) success: 1
2794
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2795
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
2796
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
2797
WHERE f_int1 IN (2,3);
2798
# check prerequisites-3 success: 1
2799
DELETE FROM t1 WHERE f_charbig = 'delete me';
2800
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
2801
# check read via f_int1 success: 1
2802
# check read via f_int2 success: 1
2804
# check multiple-1 success: 1
2805
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
2807
# check multiple-2 success: 1
2808
INSERT INTO t1 SELECT * FROM t0_template
2809
WHERE MOD(f_int1,3) = 0;
2811
# check multiple-3 success: 1
2812
UPDATE t1 SET f_int1 = f_int1 + @max_row
2813
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
2814
AND @max_row_div2 + @max_row_div4;
2816
# check multiple-4 success: 1
2818
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
2819
AND @max_row_div2 + @max_row_div4 + @max_row;
2821
# check multiple-5 success: 1
2822
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
2824
SET f_int1 = @cur_value , f_int2 = @cur_value,
2825
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2826
f_charbig = '#SINGLE#';
2828
# check single-1 success: 1
2829
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
2831
SET f_int1 = @cur_value , f_int2 = @cur_value,
2832
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
2833
f_charbig = '#SINGLE#';
2835
# check single-2 success: 1
2836
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
2837
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
2838
UPDATE t1 SET f_int1 = @cur_value2
2839
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
2841
# check single-3 success: 1
2842
SET @cur_value1= -1;
2843
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
2844
UPDATE t1 SET f_int1 = @cur_value1
2845
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
2847
# check single-4 success: 1
2848
SELECT MAX(f_int1) INTO @cur_value FROM t1;
2849
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
2851
# check single-5 success: 1
2852
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
2854
# check single-6 success: 1
2855
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
2857
# check single-7 success: 1
2858
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
2859
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
2860
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
2861
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
2862
f_charbig = '#NULL#';
2864
SET f_int1 = NULL , f_int2 = -@max_row,
2865
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
2866
f_charbig = '#NULL#';
2867
ERROR 23000: Column 'f_int1' cannot be null
2868
# check null success: 1
2870
WHERE f_int1 = 0 AND f_int2 = 0
2871
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
2872
AND f_charbig = '#NULL#';
2874
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2875
SELECT f_int1, f_int1, '', '', 'was inserted'
2876
FROM t0_template source_tab
2877
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2879
# check transactions-1 success: 1
2882
# check transactions-2 success: 1
2885
# check transactions-3 success: 1
2886
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2890
# check transactions-4 success: 1
2891
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2892
SELECT f_int1, f_int1, '', '', 'was inserted'
2893
FROM t0_template source_tab
2894
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2896
# check transactions-5 success: 1
2899
# check transactions-6 success: 1
2900
# INFO: Storage engine used for t1 seems to be transactional.
2903
# check transactions-7 success: 1
2904
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2906
SET @@session.sql_mode = 'traditional';
2907
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
2908
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
2909
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
2910
'', '', 'was inserted' FROM t0_template
2911
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
2912
ERROR 22012: Division by 0
2915
# check transactions-8 success: 1
2916
# INFO: Storage engine used for t1 seems to be able to revert
2917
# changes made by the failing statement.
2918
SET @@session.sql_mode = '';
2920
DELETE FROM t1 WHERE f_charbig = 'was inserted';
2922
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
2924
# check special-1 success: 1
2925
UPDATE t1 SET f_charbig = '';
2927
# check special-2 success: 1
2928
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
2929
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
2930
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
2931
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2932
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2933
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2934
'just inserted' FROM t0_template
2935
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2936
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
2938
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2939
f_charbig = 'updated by trigger'
2940
WHERE f_int1 = new.f_int1;
2942
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2943
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2944
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2946
# check trigger-1 success: 1
2948
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2949
f_int2 = CAST(f_char1 AS SIGNED INT),
2950
f_charbig = 'just inserted'
2951
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2953
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2954
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2955
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2956
'just inserted' FROM t0_template
2957
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2958
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
2960
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2961
f_charbig = 'updated by trigger'
2962
WHERE f_int1 = new.f_int1;
2964
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2965
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
2966
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2968
# check trigger-2 success: 1
2970
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2971
f_int2 = CAST(f_char1 AS SIGNED INT),
2972
f_charbig = 'just inserted'
2973
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2975
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2976
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2977
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2978
'just inserted' FROM t0_template
2979
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2980
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
2982
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
2983
f_charbig = 'updated by trigger'
2984
WHERE f_int1 = new.f_int1;
2986
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
2987
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
2989
# check trigger-3 success: 1
2991
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
2992
f_int2 = CAST(f_char1 AS SIGNED INT),
2993
f_charbig = 'just inserted'
2994
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
2996
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
2997
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
2998
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
2999
'just inserted' FROM t0_template
3000
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3001
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3003
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3004
f_charbig = 'updated by trigger'
3005
WHERE f_int1 = - old.f_int1;
3007
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3008
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3010
# check trigger-4 success: 1
3012
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3013
f_int2 = CAST(f_char1 AS SIGNED INT),
3014
f_charbig = 'just inserted'
3015
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3017
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3018
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3019
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3020
'just inserted' FROM t0_template
3021
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3022
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3024
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3025
f_charbig = 'updated by trigger'
3026
WHERE f_int1 = new.f_int1;
3028
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3029
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3031
# check trigger-5 success: 1
3033
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3034
f_int2 = CAST(f_char1 AS SIGNED INT),
3035
f_charbig = 'just inserted'
3036
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3038
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3039
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3040
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3041
'just inserted' FROM t0_template
3042
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3043
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3045
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3046
f_charbig = 'updated by trigger'
3047
WHERE f_int1 = - old.f_int1;
3049
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3050
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3052
# check trigger-6 success: 1
3054
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3055
f_int2 = CAST(f_char1 AS SIGNED INT),
3056
f_charbig = 'just inserted'
3057
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3059
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3060
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3061
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3062
'just inserted' FROM t0_template
3063
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3064
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3066
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3067
f_charbig = 'updated by trigger'
3068
WHERE f_int1 = - old.f_int1;
3071
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3073
# check trigger-7 success: 1
3075
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3076
f_int2 = CAST(f_char1 AS SIGNED INT),
3077
f_charbig = 'just inserted'
3078
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3080
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3081
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3082
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3083
'just inserted' FROM t0_template
3084
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3085
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3087
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3088
f_charbig = 'updated by trigger'
3089
WHERE f_int1 = - old.f_int1;
3092
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3094
# check trigger-8 success: 1
3096
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3097
f_int2 = CAST(f_char1 AS SIGNED INT),
3098
f_charbig = 'just inserted'
3099
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3101
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3103
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3104
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3106
SET new.f_int1 = old.f_int1 + @max_row,
3107
new.f_int2 = old.f_int2 - @max_row,
3108
new.f_charbig = '####updated per update trigger####';
3111
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3112
f_charbig = '####updated per update statement itself####';
3114
# check trigger-9 success: 1
3116
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3117
f_int2 = CAST(f_char1 AS SIGNED INT),
3118
f_charbig = CONCAT('===',f_char1,'===');
3119
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3121
SET new.f_int1 = new.f_int1 + @max_row,
3122
new.f_int2 = new.f_int2 - @max_row,
3123
new.f_charbig = '####updated per update trigger####';
3126
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3127
f_charbig = '####updated per update statement itself####';
3129
# check trigger-10 success: 1
3131
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3132
f_int2 = CAST(f_char1 AS SIGNED INT),
3133
f_charbig = CONCAT('===',f_char1,'===');
3134
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3136
SET new.f_int1 = @my_max1 + @counter,
3137
new.f_int2 = @my_min2 - @counter,
3138
new.f_charbig = '####updated per insert trigger####';
3139
SET @counter = @counter + 1;
3142
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3143
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3144
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3145
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3146
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3150
# check trigger-11 success: 1
3152
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3153
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3154
AND f_charbig = '####updated per insert trigger####';
3155
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3157
SET new.f_int1 = @my_max1 + @counter,
3158
new.f_int2 = @my_min2 - @counter,
3159
new.f_charbig = '####updated per insert trigger####';
3160
SET @counter = @counter + 1;
3163
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3164
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3165
SELECT CAST(f_int1 AS CHAR),
3166
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3167
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3171
# check trigger-12 success: 1
3173
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3174
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3175
AND f_charbig = '####updated per insert trigger####';
3177
Table Op Msg_type Msg_text
3178
test.t1 analyze status OK
3179
CHECK TABLE t1 EXTENDED;
3180
Table Op Msg_type Msg_text
3181
test.t1 check status OK
3182
CHECKSUM TABLE t1 EXTENDED;
3184
test.t1 <some_value>
3186
Table Op Msg_type Msg_text
3187
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
3188
test.t1 optimize status OK
3189
# check layout success: 1
3190
REPAIR TABLE t1 EXTENDED;
3191
Table Op Msg_type Msg_text
3192
test.t1 repair note The storage engine for the table doesn't support repair
3193
# check layout success: 1
3196
# check TRUNCATE success: 1
3197
# check layout success: 1
3198
# End usability test (inc/partition_check.inc)
3205
f_charbig VARCHAR(1000)
3206
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
3208
PARTITION BY LIST(ABS(MOD(f_int1,2)))
3209
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
3210
(PARTITION part1 VALUES IN (0),
3211
PARTITION part2 VALUES IN (1),
3212
PARTITION part3 VALUES IN (NULL));
3213
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3214
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3215
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3216
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
3217
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3218
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3219
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3220
# Start usability test (inc/partition_check.inc)
3222
SHOW CREATE TABLE t1;
3224
t1 CREATE TABLE `t1` (
3225
`f_int1` int(11) NOT NULL DEFAULT '0',
3226
`f_int2` int(11) NOT NULL DEFAULT '0',
3227
`f_char1` char(20) DEFAULT NULL,
3228
`f_char2` char(20) DEFAULT NULL,
3229
`f_charbig` varchar(1000) DEFAULT NULL
3230
) ENGINE=InnoDB DEFAULT CHARSET=latin1
3231
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
3232
SUBPARTITION BY KEY (f_int1)
3234
(PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
3235
PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
3236
PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
3238
# check prerequisites-1 success: 1
3239
# check COUNT(*) success: 1
3240
# check MIN/MAX(f_int1) success: 1
3241
# check MIN/MAX(f_int2) success: 1
3242
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3243
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3244
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3245
WHERE f_int1 IN (2,3);
3246
# check prerequisites-3 success: 1
3247
DELETE FROM t1 WHERE f_charbig = 'delete me';
3248
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3249
# check read via f_int1 success: 1
3250
# check read via f_int2 success: 1
3252
# check multiple-1 success: 1
3253
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3255
# check multiple-2 success: 1
3256
INSERT INTO t1 SELECT * FROM t0_template
3257
WHERE MOD(f_int1,3) = 0;
3259
# check multiple-3 success: 1
3260
UPDATE t1 SET f_int1 = f_int1 + @max_row
3261
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3262
AND @max_row_div2 + @max_row_div4;
3264
# check multiple-4 success: 1
3266
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3267
AND @max_row_div2 + @max_row_div4 + @max_row;
3269
# check multiple-5 success: 1
3270
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3272
SET f_int1 = @cur_value , f_int2 = @cur_value,
3273
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3274
f_charbig = '#SINGLE#';
3276
# check single-1 success: 1
3277
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3279
SET f_int1 = @cur_value , f_int2 = @cur_value,
3280
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3281
f_charbig = '#SINGLE#';
3283
# check single-2 success: 1
3284
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3285
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3286
UPDATE t1 SET f_int1 = @cur_value2
3287
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3289
# check single-3 success: 1
3290
SET @cur_value1= -1;
3291
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3292
UPDATE t1 SET f_int1 = @cur_value1
3293
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3295
# check single-4 success: 1
3296
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3297
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3299
# check single-5 success: 1
3300
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3302
# check single-6 success: 1
3303
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3305
# check single-7 success: 1
3306
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3307
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3308
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3309
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3310
f_charbig = '#NULL#';
3312
SET f_int1 = NULL , f_int2 = -@max_row,
3313
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3314
f_charbig = '#NULL#';
3315
ERROR 23000: Column 'f_int1' cannot be null
3316
# check null success: 1
3318
WHERE f_int1 = 0 AND f_int2 = 0
3319
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3320
AND f_charbig = '#NULL#';
3322
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3323
SELECT f_int1, f_int1, '', '', 'was inserted'
3324
FROM t0_template source_tab
3325
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3327
# check transactions-1 success: 1
3330
# check transactions-2 success: 1
3333
# check transactions-3 success: 1
3334
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3338
# check transactions-4 success: 1
3339
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3340
SELECT f_int1, f_int1, '', '', 'was inserted'
3341
FROM t0_template source_tab
3342
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3344
# check transactions-5 success: 1
3347
# check transactions-6 success: 1
3348
# INFO: Storage engine used for t1 seems to be transactional.
3351
# check transactions-7 success: 1
3352
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3354
SET @@session.sql_mode = 'traditional';
3355
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3356
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3357
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3358
'', '', 'was inserted' FROM t0_template
3359
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3360
ERROR 22012: Division by 0
3363
# check transactions-8 success: 1
3364
# INFO: Storage engine used for t1 seems to be able to revert
3365
# changes made by the failing statement.
3366
SET @@session.sql_mode = '';
3368
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3370
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3372
# check special-1 success: 1
3373
UPDATE t1 SET f_charbig = '';
3375
# check special-2 success: 1
3376
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3377
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3378
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3379
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3380
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3381
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3382
'just inserted' FROM t0_template
3383
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3384
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3386
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3387
f_charbig = 'updated by trigger'
3388
WHERE f_int1 = new.f_int1;
3390
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3391
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3392
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3394
# check trigger-1 success: 1
3396
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3397
f_int2 = CAST(f_char1 AS SIGNED INT),
3398
f_charbig = 'just inserted'
3399
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3401
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3402
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3403
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3404
'just inserted' FROM t0_template
3405
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3406
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3408
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3409
f_charbig = 'updated by trigger'
3410
WHERE f_int1 = new.f_int1;
3412
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3413
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3414
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3416
# check trigger-2 success: 1
3418
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3419
f_int2 = CAST(f_char1 AS SIGNED INT),
3420
f_charbig = 'just inserted'
3421
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3423
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3424
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3425
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3426
'just inserted' FROM t0_template
3427
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3428
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3430
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3431
f_charbig = 'updated by trigger'
3432
WHERE f_int1 = new.f_int1;
3434
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3435
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3437
# check trigger-3 success: 1
3439
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3440
f_int2 = CAST(f_char1 AS SIGNED INT),
3441
f_charbig = 'just inserted'
3442
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3444
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3445
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3446
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3447
'just inserted' FROM t0_template
3448
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3449
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3451
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3452
f_charbig = 'updated by trigger'
3453
WHERE f_int1 = - old.f_int1;
3455
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3456
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3458
# check trigger-4 success: 1
3460
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3461
f_int2 = CAST(f_char1 AS SIGNED INT),
3462
f_charbig = 'just inserted'
3463
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3465
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3466
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3467
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3468
'just inserted' FROM t0_template
3469
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3470
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3472
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3473
f_charbig = 'updated by trigger'
3474
WHERE f_int1 = new.f_int1;
3476
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3477
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3479
# check trigger-5 success: 1
3481
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3482
f_int2 = CAST(f_char1 AS SIGNED INT),
3483
f_charbig = 'just inserted'
3484
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3486
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3487
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3488
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3489
'just inserted' FROM t0_template
3490
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3491
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3493
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3494
f_charbig = 'updated by trigger'
3495
WHERE f_int1 = - old.f_int1;
3497
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3498
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3500
# check trigger-6 success: 1
3502
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3503
f_int2 = CAST(f_char1 AS SIGNED INT),
3504
f_charbig = 'just inserted'
3505
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3507
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3508
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3509
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3510
'just inserted' FROM t0_template
3511
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3512
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3514
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3515
f_charbig = 'updated by trigger'
3516
WHERE f_int1 = - old.f_int1;
3519
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3521
# check trigger-7 success: 1
3523
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3524
f_int2 = CAST(f_char1 AS SIGNED INT),
3525
f_charbig = 'just inserted'
3526
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3528
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3529
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3530
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3531
'just inserted' FROM t0_template
3532
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3533
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3535
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3536
f_charbig = 'updated by trigger'
3537
WHERE f_int1 = - old.f_int1;
3540
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3542
# check trigger-8 success: 1
3544
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3545
f_int2 = CAST(f_char1 AS SIGNED INT),
3546
f_charbig = 'just inserted'
3547
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3549
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3551
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3552
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3554
SET new.f_int1 = old.f_int1 + @max_row,
3555
new.f_int2 = old.f_int2 - @max_row,
3556
new.f_charbig = '####updated per update trigger####';
3559
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3560
f_charbig = '####updated per update statement itself####';
3562
# check trigger-9 success: 1
3564
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3565
f_int2 = CAST(f_char1 AS SIGNED INT),
3566
f_charbig = CONCAT('===',f_char1,'===');
3567
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3569
SET new.f_int1 = new.f_int1 + @max_row,
3570
new.f_int2 = new.f_int2 - @max_row,
3571
new.f_charbig = '####updated per update trigger####';
3574
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
3575
f_charbig = '####updated per update statement itself####';
3577
# check trigger-10 success: 1
3579
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3580
f_int2 = CAST(f_char1 AS SIGNED INT),
3581
f_charbig = CONCAT('===',f_char1,'===');
3582
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3584
SET new.f_int1 = @my_max1 + @counter,
3585
new.f_int2 = @my_min2 - @counter,
3586
new.f_charbig = '####updated per insert trigger####';
3587
SET @counter = @counter + 1;
3590
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3591
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3592
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3593
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3594
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3598
# check trigger-11 success: 1
3600
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3601
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3602
AND f_charbig = '####updated per insert trigger####';
3603
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
3605
SET new.f_int1 = @my_max1 + @counter,
3606
new.f_int2 = @my_min2 - @counter,
3607
new.f_charbig = '####updated per insert trigger####';
3608
SET @counter = @counter + 1;
3611
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
3612
INSERT INTO t1 (f_char1, f_char2, f_charbig)
3613
SELECT CAST(f_int1 AS CHAR),
3614
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
3615
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
3619
# check trigger-12 success: 1
3621
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
3622
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
3623
AND f_charbig = '####updated per insert trigger####';
3625
Table Op Msg_type Msg_text
3626
test.t1 analyze status OK
3627
CHECK TABLE t1 EXTENDED;
3628
Table Op Msg_type Msg_text
3629
test.t1 check status OK
3630
CHECKSUM TABLE t1 EXTENDED;
3632
test.t1 <some_value>
3634
Table Op Msg_type Msg_text
3635
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
3636
test.t1 optimize status OK
3637
# check layout success: 1
3638
REPAIR TABLE t1 EXTENDED;
3639
Table Op Msg_type Msg_text
3640
test.t1 repair note The storage engine for the table doesn't support repair
3641
# check layout success: 1
3644
# check TRUNCATE success: 1
3645
# check layout success: 1
3646
# End usability test (inc/partition_check.inc)
3648
DROP TABLE IF EXISTS t1;
3654
f_charbig VARCHAR(1000)
3655
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
3657
PARTITION BY HASH(f_int1) PARTITIONS 2;
3658
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3659
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3660
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
3661
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
3662
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3663
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
3664
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
3665
# Start usability test (inc/partition_check.inc)
3667
SHOW CREATE TABLE t1;
3669
t1 CREATE TABLE `t1` (
3670
`f_int1` int(11) NOT NULL DEFAULT '0',
3671
`f_int2` int(11) NOT NULL DEFAULT '0',
3672
`f_char1` char(20) DEFAULT NULL,
3673
`f_char2` char(20) DEFAULT NULL,
3674
`f_charbig` varchar(1000) DEFAULT NULL
3675
) ENGINE=InnoDB DEFAULT CHARSET=latin1
3676
/*!50100 PARTITION BY HASH (f_int1)
3679
# check prerequisites-1 success: 1
3680
# check COUNT(*) success: 1
3681
# check MIN/MAX(f_int1) success: 1
3682
# check MIN/MAX(f_int2) success: 1
3683
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3684
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
3685
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
3686
WHERE f_int1 IN (2,3);
3687
# check prerequisites-3 success: 1
3688
DELETE FROM t1 WHERE f_charbig = 'delete me';
3689
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
3690
# check read via f_int1 success: 1
3691
# check read via f_int2 success: 1
3693
# check multiple-1 success: 1
3694
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
3696
# check multiple-2 success: 1
3697
INSERT INTO t1 SELECT * FROM t0_template
3698
WHERE MOD(f_int1,3) = 0;
3700
# check multiple-3 success: 1
3701
UPDATE t1 SET f_int1 = f_int1 + @max_row
3702
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
3703
AND @max_row_div2 + @max_row_div4;
3705
# check multiple-4 success: 1
3707
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
3708
AND @max_row_div2 + @max_row_div4 + @max_row;
3710
# check multiple-5 success: 1
3711
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
3713
SET f_int1 = @cur_value , f_int2 = @cur_value,
3714
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3715
f_charbig = '#SINGLE#';
3717
# check single-1 success: 1
3718
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
3720
SET f_int1 = @cur_value , f_int2 = @cur_value,
3721
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
3722
f_charbig = '#SINGLE#';
3724
# check single-2 success: 1
3725
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
3726
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
3727
UPDATE t1 SET f_int1 = @cur_value2
3728
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
3730
# check single-3 success: 1
3731
SET @cur_value1= -1;
3732
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
3733
UPDATE t1 SET f_int1 = @cur_value1
3734
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
3736
# check single-4 success: 1
3737
SELECT MAX(f_int1) INTO @cur_value FROM t1;
3738
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
3740
# check single-5 success: 1
3741
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
3743
# check single-6 success: 1
3744
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
3746
# check single-7 success: 1
3747
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
3748
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
3749
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
3750
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
3751
f_charbig = '#NULL#';
3753
SET f_int1 = NULL , f_int2 = -@max_row,
3754
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
3755
f_charbig = '#NULL#';
3756
ERROR 23000: Column 'f_int1' cannot be null
3757
# check null success: 1
3759
WHERE f_int1 = 0 AND f_int2 = 0
3760
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
3761
AND f_charbig = '#NULL#';
3763
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3764
SELECT f_int1, f_int1, '', '', 'was inserted'
3765
FROM t0_template source_tab
3766
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3768
# check transactions-1 success: 1
3771
# check transactions-2 success: 1
3774
# check transactions-3 success: 1
3775
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3779
# check transactions-4 success: 1
3780
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3781
SELECT f_int1, f_int1, '', '', 'was inserted'
3782
FROM t0_template source_tab
3783
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3785
# check transactions-5 success: 1
3788
# check transactions-6 success: 1
3789
# INFO: Storage engine used for t1 seems to be transactional.
3792
# check transactions-7 success: 1
3793
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3795
SET @@session.sql_mode = 'traditional';
3796
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
3797
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
3798
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
3799
'', '', 'was inserted' FROM t0_template
3800
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
3801
ERROR 22012: Division by 0
3804
# check transactions-8 success: 1
3805
# INFO: Storage engine used for t1 seems to be able to revert
3806
# changes made by the failing statement.
3807
SET @@session.sql_mode = '';
3809
DELETE FROM t1 WHERE f_charbig = 'was inserted';
3811
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
3813
# check special-1 success: 1
3814
UPDATE t1 SET f_charbig = '';
3816
# check special-2 success: 1
3817
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
3818
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
3819
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
3820
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3821
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3822
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3823
'just inserted' FROM t0_template
3824
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3825
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
3827
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3828
f_charbig = 'updated by trigger'
3829
WHERE f_int1 = new.f_int1;
3831
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3832
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3833
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3835
# check trigger-1 success: 1
3837
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3838
f_int2 = CAST(f_char1 AS SIGNED INT),
3839
f_charbig = 'just inserted'
3840
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3842
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3843
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3844
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3845
'just inserted' FROM t0_template
3846
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3847
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
3849
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3850
f_charbig = 'updated by trigger'
3851
WHERE f_int1 = new.f_int1;
3853
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3854
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
3855
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3857
# check trigger-2 success: 1
3859
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3860
f_int2 = CAST(f_char1 AS SIGNED INT),
3861
f_charbig = 'just inserted'
3862
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3864
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3865
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3866
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3867
'just inserted' FROM t0_template
3868
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3869
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3871
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3872
f_charbig = 'updated by trigger'
3873
WHERE f_int1 = new.f_int1;
3875
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3876
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3878
# check trigger-3 success: 1
3880
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3881
f_int2 = CAST(f_char1 AS SIGNED INT),
3882
f_charbig = 'just inserted'
3883
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3885
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3886
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3887
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3888
'just inserted' FROM t0_template
3889
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3890
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
3892
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3893
f_charbig = 'updated by trigger'
3894
WHERE f_int1 = - old.f_int1;
3896
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3897
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3899
# check trigger-4 success: 1
3901
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3902
f_int2 = CAST(f_char1 AS SIGNED INT),
3903
f_charbig = 'just inserted'
3904
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3906
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3907
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3908
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3909
'just inserted' FROM t0_template
3910
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3911
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3913
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3914
f_charbig = 'updated by trigger'
3915
WHERE f_int1 = new.f_int1;
3917
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3918
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3920
# check trigger-5 success: 1
3922
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3923
f_int2 = CAST(f_char1 AS SIGNED INT),
3924
f_charbig = 'just inserted'
3925
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3927
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3928
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3929
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3930
'just inserted' FROM t0_template
3931
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3932
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
3934
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3935
f_charbig = 'updated by trigger'
3936
WHERE f_int1 = - old.f_int1;
3938
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
3939
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3941
# check trigger-6 success: 1
3943
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3944
f_int2 = CAST(f_char1 AS SIGNED INT),
3945
f_charbig = 'just inserted'
3946
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3948
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3949
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3950
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3951
'just inserted' FROM t0_template
3952
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3953
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
3955
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3956
f_charbig = 'updated by trigger'
3957
WHERE f_int1 = - old.f_int1;
3960
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3962
# check trigger-7 success: 1
3964
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3965
f_int2 = CAST(f_char1 AS SIGNED INT),
3966
f_charbig = 'just inserted'
3967
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3969
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3970
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
3971
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
3972
'just inserted' FROM t0_template
3973
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3974
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
3976
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
3977
f_charbig = 'updated by trigger'
3978
WHERE f_int1 = - old.f_int1;
3981
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
3983
# check trigger-8 success: 1
3985
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
3986
f_int2 = CAST(f_char1 AS SIGNED INT),
3987
f_charbig = 'just inserted'
3988
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
3990
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3992
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
3993
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
3995
SET new.f_int1 = old.f_int1 + @max_row,
3996
new.f_int2 = old.f_int2 - @max_row,
3997
new.f_charbig = '####updated per update trigger####';
4000
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4001
f_charbig = '####updated per update statement itself####';
4003
# check trigger-9 success: 1
4005
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4006
f_int2 = CAST(f_char1 AS SIGNED INT),
4007
f_charbig = CONCAT('===',f_char1,'===');
4008
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4010
SET new.f_int1 = new.f_int1 + @max_row,
4011
new.f_int2 = new.f_int2 - @max_row,
4012
new.f_charbig = '####updated per update trigger####';
4015
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4016
f_charbig = '####updated per update statement itself####';
4018
# check trigger-10 success: 1
4020
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4021
f_int2 = CAST(f_char1 AS SIGNED INT),
4022
f_charbig = CONCAT('===',f_char1,'===');
4023
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4025
SET new.f_int1 = @my_max1 + @counter,
4026
new.f_int2 = @my_min2 - @counter,
4027
new.f_charbig = '####updated per insert trigger####';
4028
SET @counter = @counter + 1;
4031
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4032
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4033
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4034
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4035
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4039
# check trigger-11 success: 1
4041
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4042
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4043
AND f_charbig = '####updated per insert trigger####';
4044
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4046
SET new.f_int1 = @my_max1 + @counter,
4047
new.f_int2 = @my_min2 - @counter,
4048
new.f_charbig = '####updated per insert trigger####';
4049
SET @counter = @counter + 1;
4052
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4053
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4054
SELECT CAST(f_int1 AS CHAR),
4055
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4056
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4060
# check trigger-12 success: 1
4062
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4063
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4064
AND f_charbig = '####updated per insert trigger####';
4066
Table Op Msg_type Msg_text
4067
test.t1 analyze status OK
4068
CHECK TABLE t1 EXTENDED;
4069
Table Op Msg_type Msg_text
4070
test.t1 check status OK
4071
CHECKSUM TABLE t1 EXTENDED;
4073
test.t1 <some_value>
4075
Table Op Msg_type Msg_text
4076
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
4077
test.t1 optimize status OK
4078
# check layout success: 1
4079
REPAIR TABLE t1 EXTENDED;
4080
Table Op Msg_type Msg_text
4081
test.t1 repair note The storage engine for the table doesn't support repair
4082
# check layout success: 1
4085
# check TRUNCATE success: 1
4086
# check layout success: 1
4087
# End usability test (inc/partition_check.inc)
4094
f_charbig VARCHAR(1000)
4095
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
4097
PARTITION BY KEY(f_int1) PARTITIONS 5;
4098
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4099
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4100
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4101
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
4102
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4103
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4104
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4105
# Start usability test (inc/partition_check.inc)
4107
SHOW CREATE TABLE t1;
4109
t1 CREATE TABLE `t1` (
4110
`f_int1` int(11) NOT NULL DEFAULT '0',
4111
`f_int2` int(11) NOT NULL DEFAULT '0',
4112
`f_char1` char(20) DEFAULT NULL,
4113
`f_char2` char(20) DEFAULT NULL,
4114
`f_charbig` varchar(1000) DEFAULT NULL
4115
) ENGINE=InnoDB DEFAULT CHARSET=latin1
4116
/*!50100 PARTITION BY KEY (f_int1)
4119
# check prerequisites-1 success: 1
4120
# check COUNT(*) success: 1
4121
# check MIN/MAX(f_int1) success: 1
4122
# check MIN/MAX(f_int2) success: 1
4123
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4124
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4125
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4126
WHERE f_int1 IN (2,3);
4127
# check prerequisites-3 success: 1
4128
DELETE FROM t1 WHERE f_charbig = 'delete me';
4129
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4130
# check read via f_int1 success: 1
4131
# check read via f_int2 success: 1
4133
# check multiple-1 success: 1
4134
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4136
# check multiple-2 success: 1
4137
INSERT INTO t1 SELECT * FROM t0_template
4138
WHERE MOD(f_int1,3) = 0;
4140
# check multiple-3 success: 1
4141
UPDATE t1 SET f_int1 = f_int1 + @max_row
4142
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4143
AND @max_row_div2 + @max_row_div4;
4145
# check multiple-4 success: 1
4147
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4148
AND @max_row_div2 + @max_row_div4 + @max_row;
4150
# check multiple-5 success: 1
4151
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4153
SET f_int1 = @cur_value , f_int2 = @cur_value,
4154
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4155
f_charbig = '#SINGLE#';
4157
# check single-1 success: 1
4158
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4160
SET f_int1 = @cur_value , f_int2 = @cur_value,
4161
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4162
f_charbig = '#SINGLE#';
4164
# check single-2 success: 1
4165
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4166
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4167
UPDATE t1 SET f_int1 = @cur_value2
4168
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4170
# check single-3 success: 1
4171
SET @cur_value1= -1;
4172
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4173
UPDATE t1 SET f_int1 = @cur_value1
4174
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4176
# check single-4 success: 1
4177
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4178
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4180
# check single-5 success: 1
4181
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4183
# check single-6 success: 1
4184
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4186
# check single-7 success: 1
4187
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4188
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4189
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4190
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4191
f_charbig = '#NULL#';
4193
SET f_int1 = NULL , f_int2 = -@max_row,
4194
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4195
f_charbig = '#NULL#';
4196
ERROR 23000: Column 'f_int1' cannot be null
4197
# check null success: 1
4199
WHERE f_int1 = 0 AND f_int2 = 0
4200
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4201
AND f_charbig = '#NULL#';
4203
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4204
SELECT f_int1, f_int1, '', '', 'was inserted'
4205
FROM t0_template source_tab
4206
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4208
# check transactions-1 success: 1
4211
# check transactions-2 success: 1
4214
# check transactions-3 success: 1
4215
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4219
# check transactions-4 success: 1
4220
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4221
SELECT f_int1, f_int1, '', '', 'was inserted'
4222
FROM t0_template source_tab
4223
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4225
# check transactions-5 success: 1
4228
# check transactions-6 success: 1
4229
# INFO: Storage engine used for t1 seems to be transactional.
4232
# check transactions-7 success: 1
4233
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4235
SET @@session.sql_mode = 'traditional';
4236
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4237
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4238
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4239
'', '', 'was inserted' FROM t0_template
4240
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4241
ERROR 22012: Division by 0
4244
# check transactions-8 success: 1
4245
# INFO: Storage engine used for t1 seems to be able to revert
4246
# changes made by the failing statement.
4247
SET @@session.sql_mode = '';
4249
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4251
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4253
# check special-1 success: 1
4254
UPDATE t1 SET f_charbig = '';
4256
# check special-2 success: 1
4257
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4258
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4259
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4260
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4261
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4262
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4263
'just inserted' FROM t0_template
4264
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4265
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4267
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4268
f_charbig = 'updated by trigger'
4269
WHERE f_int1 = new.f_int1;
4271
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4272
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4273
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4275
# check trigger-1 success: 1
4277
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4278
f_int2 = CAST(f_char1 AS SIGNED INT),
4279
f_charbig = 'just inserted'
4280
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4282
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4283
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4284
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4285
'just inserted' FROM t0_template
4286
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4287
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4289
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4290
f_charbig = 'updated by trigger'
4291
WHERE f_int1 = new.f_int1;
4293
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4294
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4295
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4297
# check trigger-2 success: 1
4299
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4300
f_int2 = CAST(f_char1 AS SIGNED INT),
4301
f_charbig = 'just inserted'
4302
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4304
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4305
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4306
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4307
'just inserted' FROM t0_template
4308
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4309
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4311
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4312
f_charbig = 'updated by trigger'
4313
WHERE f_int1 = new.f_int1;
4315
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4316
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4318
# check trigger-3 success: 1
4320
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4321
f_int2 = CAST(f_char1 AS SIGNED INT),
4322
f_charbig = 'just inserted'
4323
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4325
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4326
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4327
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4328
'just inserted' FROM t0_template
4329
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4330
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4332
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4333
f_charbig = 'updated by trigger'
4334
WHERE f_int1 = - old.f_int1;
4336
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4337
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4339
# check trigger-4 success: 1
4341
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4342
f_int2 = CAST(f_char1 AS SIGNED INT),
4343
f_charbig = 'just inserted'
4344
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4346
WHERE ABS(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 AFTER UPDATE 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
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4358
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4360
# check trigger-5 success: 1
4362
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4363
f_int2 = CAST(f_char1 AS SIGNED INT),
4364
f_charbig = 'just inserted'
4365
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4367
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4368
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4369
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4370
'just inserted' FROM t0_template
4371
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4372
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4374
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4375
f_charbig = 'updated by trigger'
4376
WHERE f_int1 = - old.f_int1;
4378
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4379
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4381
# check trigger-6 success: 1
4383
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4384
f_int2 = CAST(f_char1 AS SIGNED INT),
4385
f_charbig = 'just inserted'
4386
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4388
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4389
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4390
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4391
'just inserted' FROM t0_template
4392
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4393
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4395
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4396
f_charbig = 'updated by trigger'
4397
WHERE f_int1 = - old.f_int1;
4400
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4402
# check trigger-7 success: 1
4404
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4405
f_int2 = CAST(f_char1 AS SIGNED INT),
4406
f_charbig = 'just inserted'
4407
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4409
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4410
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4411
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4412
'just inserted' FROM t0_template
4413
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4414
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4416
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4417
f_charbig = 'updated by trigger'
4418
WHERE f_int1 = - old.f_int1;
4421
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4423
# check trigger-8 success: 1
4425
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4426
f_int2 = CAST(f_char1 AS SIGNED INT),
4427
f_charbig = 'just inserted'
4428
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4430
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4432
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4433
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4435
SET new.f_int1 = old.f_int1 + @max_row,
4436
new.f_int2 = old.f_int2 - @max_row,
4437
new.f_charbig = '####updated per update trigger####';
4440
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4441
f_charbig = '####updated per update statement itself####';
4443
# check trigger-9 success: 1
4445
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4446
f_int2 = CAST(f_char1 AS SIGNED INT),
4447
f_charbig = CONCAT('===',f_char1,'===');
4448
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4450
SET new.f_int1 = new.f_int1 + @max_row,
4451
new.f_int2 = new.f_int2 - @max_row,
4452
new.f_charbig = '####updated per update trigger####';
4455
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4456
f_charbig = '####updated per update statement itself####';
4458
# check trigger-10 success: 1
4460
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4461
f_int2 = CAST(f_char1 AS SIGNED INT),
4462
f_charbig = CONCAT('===',f_char1,'===');
4463
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4465
SET new.f_int1 = @my_max1 + @counter,
4466
new.f_int2 = @my_min2 - @counter,
4467
new.f_charbig = '####updated per insert trigger####';
4468
SET @counter = @counter + 1;
4471
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4472
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4473
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4474
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4475
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4479
# check trigger-11 success: 1
4481
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4482
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4483
AND f_charbig = '####updated per insert trigger####';
4484
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4486
SET new.f_int1 = @my_max1 + @counter,
4487
new.f_int2 = @my_min2 - @counter,
4488
new.f_charbig = '####updated per insert trigger####';
4489
SET @counter = @counter + 1;
4492
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4493
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4494
SELECT CAST(f_int1 AS CHAR),
4495
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4496
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4500
# check trigger-12 success: 1
4502
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4503
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4504
AND f_charbig = '####updated per insert trigger####';
4506
Table Op Msg_type Msg_text
4507
test.t1 analyze status OK
4508
CHECK TABLE t1 EXTENDED;
4509
Table Op Msg_type Msg_text
4510
test.t1 check status OK
4511
CHECKSUM TABLE t1 EXTENDED;
4513
test.t1 <some_value>
4515
Table Op Msg_type Msg_text
4516
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
4517
test.t1 optimize status OK
4518
# check layout success: 1
4519
REPAIR TABLE t1 EXTENDED;
4520
Table Op Msg_type Msg_text
4521
test.t1 repair note The storage engine for the table doesn't support repair
4522
# check layout success: 1
4525
# check TRUNCATE success: 1
4526
# check layout success: 1
4527
# End usability test (inc/partition_check.inc)
4534
f_charbig VARCHAR(1000)
4535
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
4537
PARTITION BY LIST(MOD(f_int1,4))
4538
(PARTITION part_3 VALUES IN (-3),
4539
PARTITION part_2 VALUES IN (-2),
4540
PARTITION part_1 VALUES IN (-1),
4541
PARTITION part_N VALUES IN (NULL),
4542
PARTITION part0 VALUES IN (0),
4543
PARTITION part1 VALUES IN (1),
4544
PARTITION part2 VALUES IN (2),
4545
PARTITION part3 VALUES IN (3));
4546
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4547
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4548
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
4549
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
4550
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4551
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
4552
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
4553
# Start usability test (inc/partition_check.inc)
4555
SHOW CREATE TABLE t1;
4557
t1 CREATE TABLE `t1` (
4558
`f_int1` int(11) NOT NULL DEFAULT '0',
4559
`f_int2` int(11) NOT NULL DEFAULT '0',
4560
`f_char1` char(20) DEFAULT NULL,
4561
`f_char2` char(20) DEFAULT NULL,
4562
`f_charbig` varchar(1000) DEFAULT NULL
4563
) ENGINE=InnoDB DEFAULT CHARSET=latin1
4564
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
4565
(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
4566
PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
4567
PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
4568
PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
4569
PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
4570
PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
4571
PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
4572
PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
4574
# check prerequisites-1 success: 1
4575
# check COUNT(*) success: 1
4576
# check MIN/MAX(f_int1) success: 1
4577
# check MIN/MAX(f_int2) success: 1
4578
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4579
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4580
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
4581
WHERE f_int1 IN (2,3);
4582
# check prerequisites-3 success: 1
4583
DELETE FROM t1 WHERE f_charbig = 'delete me';
4584
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
4585
# check read via f_int1 success: 1
4586
# check read via f_int2 success: 1
4588
# check multiple-1 success: 1
4589
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
4591
# check multiple-2 success: 1
4592
INSERT INTO t1 SELECT * FROM t0_template
4593
WHERE MOD(f_int1,3) = 0;
4595
# check multiple-3 success: 1
4596
UPDATE t1 SET f_int1 = f_int1 + @max_row
4597
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
4598
AND @max_row_div2 + @max_row_div4;
4600
# check multiple-4 success: 1
4602
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
4603
AND @max_row_div2 + @max_row_div4 + @max_row;
4605
# check multiple-5 success: 1
4606
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
4608
SET f_int1 = @cur_value , f_int2 = @cur_value,
4609
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4610
f_charbig = '#SINGLE#';
4612
# check single-1 success: 1
4613
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
4615
SET f_int1 = @cur_value , f_int2 = @cur_value,
4616
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
4617
f_charbig = '#SINGLE#';
4619
# check single-2 success: 1
4620
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
4621
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
4622
UPDATE t1 SET f_int1 = @cur_value2
4623
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
4625
# check single-3 success: 1
4626
SET @cur_value1= -1;
4627
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
4628
UPDATE t1 SET f_int1 = @cur_value1
4629
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
4631
# check single-4 success: 1
4632
SELECT MAX(f_int1) INTO @cur_value FROM t1;
4633
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
4635
# check single-5 success: 1
4636
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
4638
# check single-6 success: 1
4639
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
4641
# check single-7 success: 1
4642
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
4643
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
4644
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
4645
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
4646
f_charbig = '#NULL#';
4648
SET f_int1 = NULL , f_int2 = -@max_row,
4649
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
4650
f_charbig = '#NULL#';
4651
ERROR 23000: Column 'f_int1' cannot be null
4652
# check null success: 1
4654
WHERE f_int1 = 0 AND f_int2 = 0
4655
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
4656
AND f_charbig = '#NULL#';
4658
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4659
SELECT f_int1, f_int1, '', '', 'was inserted'
4660
FROM t0_template source_tab
4661
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4663
# check transactions-1 success: 1
4666
# check transactions-2 success: 1
4669
# check transactions-3 success: 1
4670
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4674
# check transactions-4 success: 1
4675
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4676
SELECT f_int1, f_int1, '', '', 'was inserted'
4677
FROM t0_template source_tab
4678
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4680
# check transactions-5 success: 1
4683
# check transactions-6 success: 1
4684
# INFO: Storage engine used for t1 seems to be transactional.
4687
# check transactions-7 success: 1
4688
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4690
SET @@session.sql_mode = 'traditional';
4691
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
4692
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4693
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
4694
'', '', 'was inserted' FROM t0_template
4695
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
4696
ERROR 22012: Division by 0
4699
# check transactions-8 success: 1
4700
# INFO: Storage engine used for t1 seems to be able to revert
4701
# changes made by the failing statement.
4702
SET @@session.sql_mode = '';
4704
DELETE FROM t1 WHERE f_charbig = 'was inserted';
4706
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
4708
# check special-1 success: 1
4709
UPDATE t1 SET f_charbig = '';
4711
# check special-2 success: 1
4712
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
4713
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
4714
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
4715
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4716
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4717
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4718
'just inserted' FROM t0_template
4719
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4720
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
4722
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4723
f_charbig = 'updated by trigger'
4724
WHERE f_int1 = new.f_int1;
4726
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4727
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4728
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4730
# check trigger-1 success: 1
4732
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4733
f_int2 = CAST(f_char1 AS SIGNED INT),
4734
f_charbig = 'just inserted'
4735
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4737
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4738
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4739
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4740
'just inserted' FROM t0_template
4741
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4742
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
4744
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4745
f_charbig = 'updated by trigger'
4746
WHERE f_int1 = new.f_int1;
4748
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4749
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
4750
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4752
# check trigger-2 success: 1
4754
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4755
f_int2 = CAST(f_char1 AS SIGNED INT),
4756
f_charbig = 'just inserted'
4757
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4759
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4760
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4761
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4762
'just inserted' FROM t0_template
4763
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4764
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4766
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4767
f_charbig = 'updated by trigger'
4768
WHERE f_int1 = new.f_int1;
4770
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4771
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4773
# check trigger-3 success: 1
4775
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4776
f_int2 = CAST(f_char1 AS SIGNED INT),
4777
f_charbig = 'just inserted'
4778
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4780
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4781
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4782
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4783
'just inserted' FROM t0_template
4784
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4785
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
4787
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4788
f_charbig = 'updated by trigger'
4789
WHERE f_int1 = - old.f_int1;
4791
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4792
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4794
# check trigger-4 success: 1
4796
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4797
f_int2 = CAST(f_char1 AS SIGNED INT),
4798
f_charbig = 'just inserted'
4799
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4801
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4802
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4803
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4804
'just inserted' FROM t0_template
4805
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4806
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4808
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4809
f_charbig = 'updated by trigger'
4810
WHERE f_int1 = new.f_int1;
4812
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4813
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4815
# check trigger-5 success: 1
4817
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4818
f_int2 = CAST(f_char1 AS SIGNED INT),
4819
f_charbig = 'just inserted'
4820
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4822
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4823
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4824
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4825
'just inserted' FROM t0_template
4826
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4827
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
4829
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4830
f_charbig = 'updated by trigger'
4831
WHERE f_int1 = - old.f_int1;
4833
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
4834
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4836
# check trigger-6 success: 1
4838
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4839
f_int2 = CAST(f_char1 AS SIGNED INT),
4840
f_charbig = 'just inserted'
4841
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4843
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4844
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4845
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4846
'just inserted' FROM t0_template
4847
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4848
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
4850
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4851
f_charbig = 'updated by trigger'
4852
WHERE f_int1 = - old.f_int1;
4855
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4857
# check trigger-7 success: 1
4859
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4860
f_int2 = CAST(f_char1 AS SIGNED INT),
4861
f_charbig = 'just inserted'
4862
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4864
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4865
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
4866
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
4867
'just inserted' FROM t0_template
4868
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4869
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
4871
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
4872
f_charbig = 'updated by trigger'
4873
WHERE f_int1 = - old.f_int1;
4876
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
4878
# check trigger-8 success: 1
4880
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4881
f_int2 = CAST(f_char1 AS SIGNED INT),
4882
f_charbig = 'just inserted'
4883
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
4885
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4887
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
4888
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4890
SET new.f_int1 = old.f_int1 + @max_row,
4891
new.f_int2 = old.f_int2 - @max_row,
4892
new.f_charbig = '####updated per update trigger####';
4895
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4896
f_charbig = '####updated per update statement itself####';
4898
# check trigger-9 success: 1
4900
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4901
f_int2 = CAST(f_char1 AS SIGNED INT),
4902
f_charbig = CONCAT('===',f_char1,'===');
4903
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
4905
SET new.f_int1 = new.f_int1 + @max_row,
4906
new.f_int2 = new.f_int2 - @max_row,
4907
new.f_charbig = '####updated per update trigger####';
4910
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
4911
f_charbig = '####updated per update statement itself####';
4913
# check trigger-10 success: 1
4915
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
4916
f_int2 = CAST(f_char1 AS SIGNED INT),
4917
f_charbig = CONCAT('===',f_char1,'===');
4918
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4920
SET new.f_int1 = @my_max1 + @counter,
4921
new.f_int2 = @my_min2 - @counter,
4922
new.f_charbig = '####updated per insert trigger####';
4923
SET @counter = @counter + 1;
4926
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4927
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
4928
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
4929
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4930
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4934
# check trigger-11 success: 1
4936
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4937
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4938
AND f_charbig = '####updated per insert trigger####';
4939
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
4941
SET new.f_int1 = @my_max1 + @counter,
4942
new.f_int2 = @my_min2 - @counter,
4943
new.f_charbig = '####updated per insert trigger####';
4944
SET @counter = @counter + 1;
4947
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
4948
INSERT INTO t1 (f_char1, f_char2, f_charbig)
4949
SELECT CAST(f_int1 AS CHAR),
4950
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
4951
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
4955
# check trigger-12 success: 1
4957
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
4958
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
4959
AND f_charbig = '####updated per insert trigger####';
4961
Table Op Msg_type Msg_text
4962
test.t1 analyze status OK
4963
CHECK TABLE t1 EXTENDED;
4964
Table Op Msg_type Msg_text
4965
test.t1 check status OK
4966
CHECKSUM TABLE t1 EXTENDED;
4968
test.t1 <some_value>
4970
Table Op Msg_type Msg_text
4971
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
4972
test.t1 optimize status OK
4973
# check layout success: 1
4974
REPAIR TABLE t1 EXTENDED;
4975
Table Op Msg_type Msg_text
4976
test.t1 repair note The storage engine for the table doesn't support repair
4977
# check layout success: 1
4980
# check TRUNCATE success: 1
4981
# check layout success: 1
4982
# End usability test (inc/partition_check.inc)
4989
f_charbig VARCHAR(1000)
4990
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
4992
PARTITION BY RANGE(f_int1)
4993
(PARTITION parta VALUES LESS THAN (0),
4994
PARTITION partb VALUES LESS THAN (5),
4995
PARTITION partc VALUES LESS THAN (10),
4996
PARTITION partd VALUES LESS THAN (10 + 5),
4997
PARTITION parte VALUES LESS THAN (20),
4998
PARTITION partf VALUES LESS THAN (2147483646));
4999
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5000
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5001
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5002
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
5003
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5004
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5005
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5006
# Start usability test (inc/partition_check.inc)
5008
SHOW CREATE TABLE t1;
5010
t1 CREATE TABLE `t1` (
5011
`f_int1` int(11) NOT NULL DEFAULT '0',
5012
`f_int2` int(11) NOT NULL DEFAULT '0',
5013
`f_char1` char(20) DEFAULT NULL,
5014
`f_char2` char(20) DEFAULT NULL,
5015
`f_charbig` varchar(1000) DEFAULT NULL
5016
) ENGINE=InnoDB DEFAULT CHARSET=latin1
5017
/*!50100 PARTITION BY RANGE (f_int1)
5018
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
5019
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
5020
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
5021
PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
5022
PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
5023
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
5025
# check prerequisites-1 success: 1
5026
# check COUNT(*) success: 1
5027
# check MIN/MAX(f_int1) success: 1
5028
# check MIN/MAX(f_int2) success: 1
5029
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5030
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5031
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5032
WHERE f_int1 IN (2,3);
5033
# check prerequisites-3 success: 1
5034
DELETE FROM t1 WHERE f_charbig = 'delete me';
5035
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5036
# check read via f_int1 success: 1
5037
# check read via f_int2 success: 1
5039
# check multiple-1 success: 1
5040
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5042
# check multiple-2 success: 1
5043
INSERT INTO t1 SELECT * FROM t0_template
5044
WHERE MOD(f_int1,3) = 0;
5046
# check multiple-3 success: 1
5047
UPDATE t1 SET f_int1 = f_int1 + @max_row
5048
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5049
AND @max_row_div2 + @max_row_div4;
5051
# check multiple-4 success: 1
5053
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5054
AND @max_row_div2 + @max_row_div4 + @max_row;
5056
# check multiple-5 success: 1
5057
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5059
SET f_int1 = @cur_value , f_int2 = @cur_value,
5060
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5061
f_charbig = '#SINGLE#';
5063
# check single-1 success: 1
5064
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5066
SET f_int1 = @cur_value , f_int2 = @cur_value,
5067
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5068
f_charbig = '#SINGLE#';
5070
# check single-2 success: 1
5071
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5072
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5073
UPDATE t1 SET f_int1 = @cur_value2
5074
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5076
# check single-3 success: 1
5077
SET @cur_value1= -1;
5078
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5079
UPDATE t1 SET f_int1 = @cur_value1
5080
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5082
# check single-4 success: 1
5083
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5084
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5086
# check single-5 success: 1
5087
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5089
# check single-6 success: 1
5090
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5091
ERROR HY000: Table has no partition for value 2147483647
5092
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5093
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5094
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5095
f_charbig = '#NULL#';
5097
SET f_int1 = NULL , f_int2 = -@max_row,
5098
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5099
f_charbig = '#NULL#';
5100
ERROR 23000: Column 'f_int1' cannot be null
5101
# check null success: 1
5103
WHERE f_int1 = 0 AND f_int2 = 0
5104
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5105
AND f_charbig = '#NULL#';
5107
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5108
SELECT f_int1, f_int1, '', '', 'was inserted'
5109
FROM t0_template source_tab
5110
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5112
# check transactions-1 success: 1
5115
# check transactions-2 success: 1
5118
# check transactions-3 success: 1
5119
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5123
# check transactions-4 success: 1
5124
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5125
SELECT f_int1, f_int1, '', '', 'was inserted'
5126
FROM t0_template source_tab
5127
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5129
# check transactions-5 success: 1
5132
# check transactions-6 success: 1
5133
# INFO: Storage engine used for t1 seems to be transactional.
5136
# check transactions-7 success: 1
5137
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5139
SET @@session.sql_mode = 'traditional';
5140
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5141
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5142
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5143
'', '', 'was inserted' FROM t0_template
5144
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5145
ERROR 22012: Division by 0
5148
# check transactions-8 success: 1
5149
# INFO: Storage engine used for t1 seems to be able to revert
5150
# changes made by the failing statement.
5151
SET @@session.sql_mode = '';
5153
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5155
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5157
# check special-1 success: 1
5158
UPDATE t1 SET f_charbig = '';
5160
# check special-2 success: 1
5161
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5162
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5163
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5164
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5165
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5166
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5167
'just inserted' FROM t0_template
5168
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5169
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5171
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5172
f_charbig = 'updated by trigger'
5173
WHERE f_int1 = new.f_int1;
5175
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5176
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5177
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5179
# check trigger-1 success: 1
5181
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5182
f_int2 = CAST(f_char1 AS SIGNED INT),
5183
f_charbig = 'just inserted'
5184
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5186
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5187
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5188
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5189
'just inserted' FROM t0_template
5190
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5191
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5193
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5194
f_charbig = 'updated by trigger'
5195
WHERE f_int1 = new.f_int1;
5197
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5198
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5199
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5201
# check trigger-2 success: 1
5203
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5204
f_int2 = CAST(f_char1 AS SIGNED INT),
5205
f_charbig = 'just inserted'
5206
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5208
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5209
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5210
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5211
'just inserted' FROM t0_template
5212
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5213
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5215
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5216
f_charbig = 'updated by trigger'
5217
WHERE f_int1 = new.f_int1;
5219
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5220
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5222
# check trigger-3 success: 1
5224
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5225
f_int2 = CAST(f_char1 AS SIGNED INT),
5226
f_charbig = 'just inserted'
5227
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5229
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5230
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5231
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5232
'just inserted' FROM t0_template
5233
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5234
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5236
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5237
f_charbig = 'updated by trigger'
5238
WHERE f_int1 = - old.f_int1;
5240
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5241
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5243
# check trigger-4 success: 1
5245
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5246
f_int2 = CAST(f_char1 AS SIGNED INT),
5247
f_charbig = 'just inserted'
5248
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5250
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5251
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5252
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5253
'just inserted' FROM t0_template
5254
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5255
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5257
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5258
f_charbig = 'updated by trigger'
5259
WHERE f_int1 = new.f_int1;
5261
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5262
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5264
# check trigger-5 success: 1
5266
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5267
f_int2 = CAST(f_char1 AS SIGNED INT),
5268
f_charbig = 'just inserted'
5269
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5271
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5272
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5273
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5274
'just inserted' FROM t0_template
5275
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5276
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5278
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5279
f_charbig = 'updated by trigger'
5280
WHERE f_int1 = - old.f_int1;
5282
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5283
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5285
# check trigger-6 success: 1
5287
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5288
f_int2 = CAST(f_char1 AS SIGNED INT),
5289
f_charbig = 'just inserted'
5290
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5292
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5293
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5294
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5295
'just inserted' FROM t0_template
5296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5297
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5299
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5300
f_charbig = 'updated by trigger'
5301
WHERE f_int1 = - old.f_int1;
5304
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5306
# check trigger-7 success: 1
5308
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5309
f_int2 = CAST(f_char1 AS SIGNED INT),
5310
f_charbig = 'just inserted'
5311
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5313
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5314
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5315
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5316
'just inserted' FROM t0_template
5317
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5318
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5320
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5321
f_charbig = 'updated by trigger'
5322
WHERE f_int1 = - old.f_int1;
5325
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5327
# check trigger-8 success: 1
5329
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5330
f_int2 = CAST(f_char1 AS SIGNED INT),
5331
f_charbig = 'just inserted'
5332
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5334
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5336
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5337
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5339
SET new.f_int1 = old.f_int1 + @max_row,
5340
new.f_int2 = old.f_int2 - @max_row,
5341
new.f_charbig = '####updated per update trigger####';
5344
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5345
f_charbig = '####updated per update statement itself####';
5347
# check trigger-9 success: 1
5349
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5350
f_int2 = CAST(f_char1 AS SIGNED INT),
5351
f_charbig = CONCAT('===',f_char1,'===');
5352
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5354
SET new.f_int1 = new.f_int1 + @max_row,
5355
new.f_int2 = new.f_int2 - @max_row,
5356
new.f_charbig = '####updated per update trigger####';
5359
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5360
f_charbig = '####updated per update statement itself####';
5362
# check trigger-10 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 = CONCAT('===',f_char1,'===');
5367
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5369
SET new.f_int1 = @my_max1 + @counter,
5370
new.f_int2 = @my_min2 - @counter,
5371
new.f_charbig = '####updated per insert trigger####';
5372
SET @counter = @counter + 1;
5375
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5376
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5377
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5378
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5379
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5383
# check trigger-11 success: 1
5385
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5386
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5387
AND f_charbig = '####updated per insert trigger####';
5388
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5390
SET new.f_int1 = @my_max1 + @counter,
5391
new.f_int2 = @my_min2 - @counter,
5392
new.f_charbig = '####updated per insert trigger####';
5393
SET @counter = @counter + 1;
5396
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5397
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5398
SELECT CAST(f_int1 AS CHAR),
5399
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5400
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5404
# check trigger-12 success: 1
5406
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5407
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5408
AND f_charbig = '####updated per insert trigger####';
5410
Table Op Msg_type Msg_text
5411
test.t1 analyze status OK
5412
CHECK TABLE t1 EXTENDED;
5413
Table Op Msg_type Msg_text
5414
test.t1 check status OK
5415
CHECKSUM TABLE t1 EXTENDED;
5417
test.t1 <some_value>
5419
Table Op Msg_type Msg_text
5420
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
5421
test.t1 optimize status OK
5422
# check layout success: 1
5423
REPAIR TABLE t1 EXTENDED;
5424
Table Op Msg_type Msg_text
5425
test.t1 repair note The storage engine for the table doesn't support repair
5426
# check layout success: 1
5429
# check TRUNCATE success: 1
5430
# check layout success: 1
5431
# End usability test (inc/partition_check.inc)
5438
f_charbig VARCHAR(1000)
5439
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
5441
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
5442
(PARTITION parta VALUES LESS THAN (0),
5443
PARTITION partb VALUES LESS THAN (5),
5444
PARTITION partc VALUES LESS THAN (10),
5445
PARTITION partd VALUES LESS THAN (2147483646));
5446
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5447
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5448
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5449
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
5450
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5451
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5452
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5453
# Start usability test (inc/partition_check.inc)
5455
SHOW CREATE TABLE t1;
5457
t1 CREATE TABLE `t1` (
5458
`f_int1` int(11) NOT NULL DEFAULT '0',
5459
`f_int2` int(11) NOT NULL DEFAULT '0',
5460
`f_char1` char(20) DEFAULT NULL,
5461
`f_char2` char(20) DEFAULT NULL,
5462
`f_charbig` varchar(1000) DEFAULT NULL
5463
) ENGINE=InnoDB DEFAULT CHARSET=latin1
5464
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
5465
SUBPARTITION BY HASH (f_int1)
5467
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
5468
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
5469
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
5470
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
5472
# check prerequisites-1 success: 1
5473
# check COUNT(*) success: 1
5474
# check MIN/MAX(f_int1) success: 1
5475
# check MIN/MAX(f_int2) success: 1
5476
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5477
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5478
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5479
WHERE f_int1 IN (2,3);
5480
# check prerequisites-3 success: 1
5481
DELETE FROM t1 WHERE f_charbig = 'delete me';
5482
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5483
# check read via f_int1 success: 1
5484
# check read via f_int2 success: 1
5486
# check multiple-1 success: 1
5487
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5489
# check multiple-2 success: 1
5490
INSERT INTO t1 SELECT * FROM t0_template
5491
WHERE MOD(f_int1,3) = 0;
5493
# check multiple-3 success: 1
5494
UPDATE t1 SET f_int1 = f_int1 + @max_row
5495
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5496
AND @max_row_div2 + @max_row_div4;
5498
# check multiple-4 success: 1
5500
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5501
AND @max_row_div2 + @max_row_div4 + @max_row;
5503
# check multiple-5 success: 1
5504
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5506
SET f_int1 = @cur_value , f_int2 = @cur_value,
5507
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5508
f_charbig = '#SINGLE#';
5510
# check single-1 success: 1
5511
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5513
SET f_int1 = @cur_value , f_int2 = @cur_value,
5514
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5515
f_charbig = '#SINGLE#';
5517
# check single-2 success: 1
5518
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5519
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5520
UPDATE t1 SET f_int1 = @cur_value2
5521
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5523
# check single-3 success: 1
5524
SET @cur_value1= -1;
5525
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5526
UPDATE t1 SET f_int1 = @cur_value1
5527
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5529
# check single-4 success: 1
5530
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5531
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5533
# check single-5 success: 1
5534
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5536
# check single-6 success: 1
5537
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5539
# check single-7 success: 1
5540
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
5541
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
5542
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
5543
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
5544
f_charbig = '#NULL#';
5546
SET f_int1 = NULL , f_int2 = -@max_row,
5547
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
5548
f_charbig = '#NULL#';
5549
ERROR 23000: Column 'f_int1' cannot be null
5550
# check null success: 1
5552
WHERE f_int1 = 0 AND f_int2 = 0
5553
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
5554
AND f_charbig = '#NULL#';
5556
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5557
SELECT f_int1, f_int1, '', '', 'was inserted'
5558
FROM t0_template source_tab
5559
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5561
# check transactions-1 success: 1
5564
# check transactions-2 success: 1
5567
# check transactions-3 success: 1
5568
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5572
# check transactions-4 success: 1
5573
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5574
SELECT f_int1, f_int1, '', '', 'was inserted'
5575
FROM t0_template source_tab
5576
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5578
# check transactions-5 success: 1
5581
# check transactions-6 success: 1
5582
# INFO: Storage engine used for t1 seems to be transactional.
5585
# check transactions-7 success: 1
5586
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5588
SET @@session.sql_mode = 'traditional';
5589
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
5590
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5591
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
5592
'', '', 'was inserted' FROM t0_template
5593
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
5594
ERROR 22012: Division by 0
5597
# check transactions-8 success: 1
5598
# INFO: Storage engine used for t1 seems to be able to revert
5599
# changes made by the failing statement.
5600
SET @@session.sql_mode = '';
5602
DELETE FROM t1 WHERE f_charbig = 'was inserted';
5604
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
5606
# check special-1 success: 1
5607
UPDATE t1 SET f_charbig = '';
5609
# check special-2 success: 1
5610
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
5611
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5612
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
5613
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5614
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5615
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5616
'just inserted' FROM t0_template
5617
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5618
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
5620
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5621
f_charbig = 'updated by trigger'
5622
WHERE f_int1 = new.f_int1;
5624
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5625
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5626
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5628
# check trigger-1 success: 1
5630
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5631
f_int2 = CAST(f_char1 AS SIGNED INT),
5632
f_charbig = 'just inserted'
5633
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5635
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5636
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5637
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5638
'just inserted' FROM t0_template
5639
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5640
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
5642
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5643
f_charbig = 'updated by trigger'
5644
WHERE f_int1 = new.f_int1;
5646
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5647
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
5648
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5650
# check trigger-2 success: 1
5652
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5653
f_int2 = CAST(f_char1 AS SIGNED INT),
5654
f_charbig = 'just inserted'
5655
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5657
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5658
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5659
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5660
'just inserted' FROM t0_template
5661
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5662
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5664
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5665
f_charbig = 'updated by trigger'
5666
WHERE f_int1 = new.f_int1;
5668
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5669
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5671
# check trigger-3 success: 1
5673
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5674
f_int2 = CAST(f_char1 AS SIGNED INT),
5675
f_charbig = 'just inserted'
5676
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5678
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5679
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5680
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5681
'just inserted' FROM t0_template
5682
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5683
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
5685
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5686
f_charbig = 'updated by trigger'
5687
WHERE f_int1 = - old.f_int1;
5689
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5690
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5692
# check trigger-4 success: 1
5694
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5695
f_int2 = CAST(f_char1 AS SIGNED INT),
5696
f_charbig = 'just inserted'
5697
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5699
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5702
'just inserted' FROM t0_template
5703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5704
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5707
f_charbig = 'updated by trigger'
5708
WHERE f_int1 = new.f_int1;
5710
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5711
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5713
# check trigger-5 success: 1
5715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5716
f_int2 = CAST(f_char1 AS SIGNED INT),
5717
f_charbig = 'just inserted'
5718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5723
'just inserted' FROM t0_template
5724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5725
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
5727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5728
f_charbig = 'updated by trigger'
5729
WHERE f_int1 = - old.f_int1;
5731
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
5732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5734
# check trigger-6 success: 1
5736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5737
f_int2 = CAST(f_char1 AS SIGNED INT),
5738
f_charbig = 'just inserted'
5739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5742
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5743
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5744
'just inserted' FROM t0_template
5745
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5746
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
5748
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5749
f_charbig = 'updated by trigger'
5750
WHERE f_int1 = - old.f_int1;
5753
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5755
# check trigger-7 success: 1
5757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5758
f_int2 = CAST(f_char1 AS SIGNED INT),
5759
f_charbig = 'just inserted'
5760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
5764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
5765
'just inserted' FROM t0_template
5766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5767
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
5769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
5770
f_charbig = 'updated by trigger'
5771
WHERE f_int1 = - old.f_int1;
5774
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
5776
# check trigger-8 success: 1
5778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5779
f_int2 = CAST(f_char1 AS SIGNED INT),
5780
f_charbig = 'just inserted'
5781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
5783
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5785
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
5786
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5788
SET new.f_int1 = old.f_int1 + @max_row,
5789
new.f_int2 = old.f_int2 - @max_row,
5790
new.f_charbig = '####updated per update trigger####';
5793
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5794
f_charbig = '####updated per update statement itself####';
5796
# check trigger-9 success: 1
5798
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5799
f_int2 = CAST(f_char1 AS SIGNED INT),
5800
f_charbig = CONCAT('===',f_char1,'===');
5801
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
5803
SET new.f_int1 = new.f_int1 + @max_row,
5804
new.f_int2 = new.f_int2 - @max_row,
5805
new.f_charbig = '####updated per update trigger####';
5808
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
5809
f_charbig = '####updated per update statement itself####';
5811
# check trigger-10 success: 1
5813
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
5814
f_int2 = CAST(f_char1 AS SIGNED INT),
5815
f_charbig = CONCAT('===',f_char1,'===');
5816
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5818
SET new.f_int1 = @my_max1 + @counter,
5819
new.f_int2 = @my_min2 - @counter,
5820
new.f_charbig = '####updated per insert trigger####';
5821
SET @counter = @counter + 1;
5824
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5825
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5826
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5827
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5828
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5832
# check trigger-11 success: 1
5834
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5835
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5836
AND f_charbig = '####updated per insert trigger####';
5837
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
5839
SET new.f_int1 = @my_max1 + @counter,
5840
new.f_int2 = @my_min2 - @counter,
5841
new.f_charbig = '####updated per insert trigger####';
5842
SET @counter = @counter + 1;
5845
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
5846
INSERT INTO t1 (f_char1, f_char2, f_charbig)
5847
SELECT CAST(f_int1 AS CHAR),
5848
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
5849
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
5853
# check trigger-12 success: 1
5855
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
5856
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
5857
AND f_charbig = '####updated per insert trigger####';
5859
Table Op Msg_type Msg_text
5860
test.t1 analyze status OK
5861
CHECK TABLE t1 EXTENDED;
5862
Table Op Msg_type Msg_text
5863
test.t1 check status OK
5864
CHECKSUM TABLE t1 EXTENDED;
5866
test.t1 <some_value>
5868
Table Op Msg_type Msg_text
5869
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
5870
test.t1 optimize status OK
5871
# check layout success: 1
5872
REPAIR TABLE t1 EXTENDED;
5873
Table Op Msg_type Msg_text
5874
test.t1 repair note The storage engine for the table doesn't support repair
5875
# check layout success: 1
5878
# check TRUNCATE success: 1
5879
# check layout success: 1
5880
# End usability test (inc/partition_check.inc)
5887
f_charbig VARCHAR(1000)
5888
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
5890
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
5891
(PARTITION part1 VALUES LESS THAN (0)
5892
(SUBPARTITION subpart11, SUBPARTITION subpart12),
5893
PARTITION part2 VALUES LESS THAN (5)
5894
(SUBPARTITION subpart21, SUBPARTITION subpart22),
5895
PARTITION part3 VALUES LESS THAN (10)
5896
(SUBPARTITION subpart31, SUBPARTITION subpart32),
5897
PARTITION part4 VALUES LESS THAN (2147483646)
5898
(SUBPARTITION subpart41, SUBPARTITION subpart42));
5899
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5900
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5901
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
5902
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
5903
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
5904
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
5905
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
5906
# Start usability test (inc/partition_check.inc)
5908
SHOW CREATE TABLE t1;
5910
t1 CREATE TABLE `t1` (
5911
`f_int1` int(11) NOT NULL DEFAULT '0',
5912
`f_int2` int(11) NOT NULL DEFAULT '0',
5913
`f_char1` char(20) DEFAULT NULL,
5914
`f_char2` char(20) DEFAULT NULL,
5915
`f_charbig` varchar(1000) DEFAULT NULL
5916
) ENGINE=InnoDB DEFAULT CHARSET=latin1
5917
/*!50100 PARTITION BY RANGE (f_int1)
5918
SUBPARTITION BY KEY (f_int1)
5919
(PARTITION part1 VALUES LESS THAN (0)
5920
(SUBPARTITION subpart11 ENGINE = InnoDB,
5921
SUBPARTITION subpart12 ENGINE = InnoDB),
5922
PARTITION part2 VALUES LESS THAN (5)
5923
(SUBPARTITION subpart21 ENGINE = InnoDB,
5924
SUBPARTITION subpart22 ENGINE = InnoDB),
5925
PARTITION part3 VALUES LESS THAN (10)
5926
(SUBPARTITION subpart31 ENGINE = InnoDB,
5927
SUBPARTITION subpart32 ENGINE = InnoDB),
5928
PARTITION part4 VALUES LESS THAN (2147483646)
5929
(SUBPARTITION subpart41 ENGINE = InnoDB,
5930
SUBPARTITION subpart42 ENGINE = InnoDB)) */
5932
# check prerequisites-1 success: 1
5933
# check COUNT(*) success: 1
5934
# check MIN/MAX(f_int1) success: 1
5935
# check MIN/MAX(f_int2) success: 1
5936
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
5937
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
5938
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
5939
WHERE f_int1 IN (2,3);
5940
# check prerequisites-3 success: 1
5941
DELETE FROM t1 WHERE f_charbig = 'delete me';
5942
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
5943
# check read via f_int1 success: 1
5944
# check read via f_int2 success: 1
5946
# check multiple-1 success: 1
5947
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
5949
# check multiple-2 success: 1
5950
INSERT INTO t1 SELECT * FROM t0_template
5951
WHERE MOD(f_int1,3) = 0;
5953
# check multiple-3 success: 1
5954
UPDATE t1 SET f_int1 = f_int1 + @max_row
5955
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
5956
AND @max_row_div2 + @max_row_div4;
5958
# check multiple-4 success: 1
5960
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
5961
AND @max_row_div2 + @max_row_div4 + @max_row;
5963
# check multiple-5 success: 1
5964
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
5966
SET f_int1 = @cur_value , f_int2 = @cur_value,
5967
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5968
f_charbig = '#SINGLE#';
5970
# check single-1 success: 1
5971
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
5973
SET f_int1 = @cur_value , f_int2 = @cur_value,
5974
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
5975
f_charbig = '#SINGLE#';
5977
# check single-2 success: 1
5978
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
5979
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
5980
UPDATE t1 SET f_int1 = @cur_value2
5981
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
5983
# check single-3 success: 1
5984
SET @cur_value1= -1;
5985
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
5986
UPDATE t1 SET f_int1 = @cur_value1
5987
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
5989
# check single-4 success: 1
5990
SELECT MAX(f_int1) INTO @cur_value FROM t1;
5991
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
5993
# check single-5 success: 1
5994
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
5996
# check single-6 success: 1
5997
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
5998
ERROR HY000: Table has no partition for value 2147483647
5999
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6000
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6001
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6002
f_charbig = '#NULL#';
6004
SET f_int1 = NULL , f_int2 = -@max_row,
6005
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6006
f_charbig = '#NULL#';
6007
ERROR 23000: Column 'f_int1' cannot be null
6008
# check null success: 1
6010
WHERE f_int1 = 0 AND f_int2 = 0
6011
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6012
AND f_charbig = '#NULL#';
6014
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6015
SELECT f_int1, f_int1, '', '', 'was inserted'
6016
FROM t0_template source_tab
6017
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6019
# check transactions-1 success: 1
6022
# check transactions-2 success: 1
6025
# check transactions-3 success: 1
6026
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6030
# check transactions-4 success: 1
6031
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6032
SELECT f_int1, f_int1, '', '', 'was inserted'
6033
FROM t0_template source_tab
6034
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6036
# check transactions-5 success: 1
6039
# check transactions-6 success: 1
6040
# INFO: Storage engine used for t1 seems to be transactional.
6043
# check transactions-7 success: 1
6044
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6046
SET @@session.sql_mode = 'traditional';
6047
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6048
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6049
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6050
'', '', 'was inserted' FROM t0_template
6051
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6052
ERROR 22012: Division by 0
6055
# check transactions-8 success: 1
6056
# INFO: Storage engine used for t1 seems to be able to revert
6057
# changes made by the failing statement.
6058
SET @@session.sql_mode = '';
6060
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6062
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6064
# check special-1 success: 1
6065
UPDATE t1 SET f_charbig = '';
6067
# check special-2 success: 1
6068
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6069
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6070
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6071
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6072
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6073
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6074
'just inserted' FROM t0_template
6075
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6076
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6078
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6079
f_charbig = 'updated by trigger'
6080
WHERE f_int1 = new.f_int1;
6082
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6083
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6084
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6086
# check trigger-1 success: 1
6088
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6089
f_int2 = CAST(f_char1 AS SIGNED INT),
6090
f_charbig = 'just inserted'
6091
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6093
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6094
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6095
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6096
'just inserted' FROM t0_template
6097
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6098
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6100
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6101
f_charbig = 'updated by trigger'
6102
WHERE f_int1 = new.f_int1;
6104
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6105
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6106
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6108
# check trigger-2 success: 1
6110
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6111
f_int2 = CAST(f_char1 AS SIGNED INT),
6112
f_charbig = 'just inserted'
6113
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6115
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6116
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6117
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6118
'just inserted' FROM t0_template
6119
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6120
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6122
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6123
f_charbig = 'updated by trigger'
6124
WHERE f_int1 = new.f_int1;
6126
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6127
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6129
# check trigger-3 success: 1
6131
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6132
f_int2 = CAST(f_char1 AS SIGNED INT),
6133
f_charbig = 'just inserted'
6134
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6136
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6137
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6138
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6139
'just inserted' FROM t0_template
6140
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6141
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6143
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6144
f_charbig = 'updated by trigger'
6145
WHERE f_int1 = - old.f_int1;
6147
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6148
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6150
# check trigger-4 success: 1
6152
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6153
f_int2 = CAST(f_char1 AS SIGNED INT),
6154
f_charbig = 'just inserted'
6155
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6157
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6158
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6159
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6160
'just inserted' FROM t0_template
6161
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6162
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6164
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6165
f_charbig = 'updated by trigger'
6166
WHERE f_int1 = new.f_int1;
6168
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6169
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6171
# check trigger-5 success: 1
6173
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6174
f_int2 = CAST(f_char1 AS SIGNED INT),
6175
f_charbig = 'just inserted'
6176
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6178
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6179
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6180
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6181
'just inserted' FROM t0_template
6182
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6183
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6185
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6186
f_charbig = 'updated by trigger'
6187
WHERE f_int1 = - old.f_int1;
6189
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6190
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6192
# check trigger-6 success: 1
6194
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6195
f_int2 = CAST(f_char1 AS SIGNED INT),
6196
f_charbig = 'just inserted'
6197
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6199
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6200
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6201
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6202
'just inserted' FROM t0_template
6203
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6204
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6206
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6207
f_charbig = 'updated by trigger'
6208
WHERE f_int1 = - old.f_int1;
6211
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6213
# check trigger-7 success: 1
6215
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6216
f_int2 = CAST(f_char1 AS SIGNED INT),
6217
f_charbig = 'just inserted'
6218
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6220
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6221
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6222
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6223
'just inserted' FROM t0_template
6224
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6225
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6227
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6228
f_charbig = 'updated by trigger'
6229
WHERE f_int1 = - old.f_int1;
6232
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6234
# check trigger-8 success: 1
6236
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6237
f_int2 = CAST(f_char1 AS SIGNED INT),
6238
f_charbig = 'just inserted'
6239
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6241
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6243
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6244
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6246
SET new.f_int1 = old.f_int1 + @max_row,
6247
new.f_int2 = old.f_int2 - @max_row,
6248
new.f_charbig = '####updated per update trigger####';
6251
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6252
f_charbig = '####updated per update statement itself####';
6254
# check trigger-9 success: 1
6256
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6257
f_int2 = CAST(f_char1 AS SIGNED INT),
6258
f_charbig = CONCAT('===',f_char1,'===');
6259
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6261
SET new.f_int1 = new.f_int1 + @max_row,
6262
new.f_int2 = new.f_int2 - @max_row,
6263
new.f_charbig = '####updated per update trigger####';
6266
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6267
f_charbig = '####updated per update statement itself####';
6269
# check trigger-10 success: 1
6271
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6272
f_int2 = CAST(f_char1 AS SIGNED INT),
6273
f_charbig = CONCAT('===',f_char1,'===');
6274
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6276
SET new.f_int1 = @my_max1 + @counter,
6277
new.f_int2 = @my_min2 - @counter,
6278
new.f_charbig = '####updated per insert trigger####';
6279
SET @counter = @counter + 1;
6282
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6283
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6284
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6285
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6286
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6290
# check trigger-11 success: 1
6292
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6293
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6294
AND f_charbig = '####updated per insert trigger####';
6295
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6297
SET new.f_int1 = @my_max1 + @counter,
6298
new.f_int2 = @my_min2 - @counter,
6299
new.f_charbig = '####updated per insert trigger####';
6300
SET @counter = @counter + 1;
6303
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6304
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6305
SELECT CAST(f_int1 AS CHAR),
6306
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6307
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6311
# check trigger-12 success: 1
6313
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6314
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6315
AND f_charbig = '####updated per insert trigger####';
6317
Table Op Msg_type Msg_text
6318
test.t1 analyze status OK
6319
CHECK TABLE t1 EXTENDED;
6320
Table Op Msg_type Msg_text
6321
test.t1 check status OK
6322
CHECKSUM TABLE t1 EXTENDED;
6324
test.t1 <some_value>
6326
Table Op Msg_type Msg_text
6327
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
6328
test.t1 optimize status OK
6329
# check layout success: 1
6330
REPAIR TABLE t1 EXTENDED;
6331
Table Op Msg_type Msg_text
6332
test.t1 repair note The storage engine for the table doesn't support repair
6333
# check layout success: 1
6336
# check TRUNCATE success: 1
6337
# check layout success: 1
6338
# End usability test (inc/partition_check.inc)
6345
f_charbig VARCHAR(1000)
6346
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
6348
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
6349
(PARTITION part1 VALUES IN (0)
6350
(SUBPARTITION sp11, SUBPARTITION sp12),
6351
PARTITION part2 VALUES IN (1)
6352
(SUBPARTITION sp21, SUBPARTITION sp22),
6353
PARTITION part3 VALUES IN (2)
6354
(SUBPARTITION sp31, SUBPARTITION sp32),
6355
PARTITION part4 VALUES IN (NULL)
6356
(SUBPARTITION sp41, SUBPARTITION sp42));
6357
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6358
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6359
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6360
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
6361
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6362
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6363
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6364
# Start usability test (inc/partition_check.inc)
6366
SHOW CREATE TABLE t1;
6368
t1 CREATE TABLE `t1` (
6369
`f_int1` int(11) NOT NULL DEFAULT '0',
6370
`f_int2` int(11) NOT NULL DEFAULT '0',
6371
`f_char1` char(20) DEFAULT NULL,
6372
`f_char2` char(20) DEFAULT NULL,
6373
`f_charbig` varchar(1000) DEFAULT NULL
6374
) ENGINE=InnoDB DEFAULT CHARSET=latin1
6375
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
6376
SUBPARTITION BY HASH (f_int1 + 1)
6377
(PARTITION part1 VALUES IN (0)
6378
(SUBPARTITION sp11 ENGINE = InnoDB,
6379
SUBPARTITION sp12 ENGINE = InnoDB),
6380
PARTITION part2 VALUES IN (1)
6381
(SUBPARTITION sp21 ENGINE = InnoDB,
6382
SUBPARTITION sp22 ENGINE = InnoDB),
6383
PARTITION part3 VALUES IN (2)
6384
(SUBPARTITION sp31 ENGINE = InnoDB,
6385
SUBPARTITION sp32 ENGINE = InnoDB),
6386
PARTITION part4 VALUES IN (NULL)
6387
(SUBPARTITION sp41 ENGINE = InnoDB,
6388
SUBPARTITION sp42 ENGINE = InnoDB)) */
6390
# check prerequisites-1 success: 1
6391
# check COUNT(*) success: 1
6392
# check MIN/MAX(f_int1) success: 1
6393
# check MIN/MAX(f_int2) success: 1
6394
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6395
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6396
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6397
WHERE f_int1 IN (2,3);
6398
# check prerequisites-3 success: 1
6399
DELETE FROM t1 WHERE f_charbig = 'delete me';
6400
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6401
# check read via f_int1 success: 1
6402
# check read via f_int2 success: 1
6404
# check multiple-1 success: 1
6405
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6407
# check multiple-2 success: 1
6408
INSERT INTO t1 SELECT * FROM t0_template
6409
WHERE MOD(f_int1,3) = 0;
6411
# check multiple-3 success: 1
6412
UPDATE t1 SET f_int1 = f_int1 + @max_row
6413
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6414
AND @max_row_div2 + @max_row_div4;
6416
# check multiple-4 success: 1
6418
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6419
AND @max_row_div2 + @max_row_div4 + @max_row;
6421
# check multiple-5 success: 1
6422
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6424
SET f_int1 = @cur_value , f_int2 = @cur_value,
6425
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6426
f_charbig = '#SINGLE#';
6428
# check single-1 success: 1
6429
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6431
SET f_int1 = @cur_value , f_int2 = @cur_value,
6432
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6433
f_charbig = '#SINGLE#';
6435
# check single-2 success: 1
6436
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6437
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6438
UPDATE t1 SET f_int1 = @cur_value2
6439
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6441
# check single-3 success: 1
6442
SET @cur_value1= -1;
6443
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6444
UPDATE t1 SET f_int1 = @cur_value1
6445
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6447
# check single-4 success: 1
6448
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6449
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6451
# check single-5 success: 1
6452
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6454
# check single-6 success: 1
6455
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6457
# check single-7 success: 1
6458
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6459
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6460
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6461
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6462
f_charbig = '#NULL#';
6464
SET f_int1 = NULL , f_int2 = -@max_row,
6465
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6466
f_charbig = '#NULL#';
6467
ERROR 23000: Column 'f_int1' cannot be null
6468
# check null success: 1
6470
WHERE f_int1 = 0 AND f_int2 = 0
6471
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6472
AND f_charbig = '#NULL#';
6474
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6475
SELECT f_int1, f_int1, '', '', 'was inserted'
6476
FROM t0_template source_tab
6477
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6479
# check transactions-1 success: 1
6482
# check transactions-2 success: 1
6485
# check transactions-3 success: 1
6486
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6490
# check transactions-4 success: 1
6491
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6492
SELECT f_int1, f_int1, '', '', 'was inserted'
6493
FROM t0_template source_tab
6494
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6496
# check transactions-5 success: 1
6499
# check transactions-6 success: 1
6500
# INFO: Storage engine used for t1 seems to be transactional.
6503
# check transactions-7 success: 1
6504
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6506
SET @@session.sql_mode = 'traditional';
6507
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6508
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6509
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6510
'', '', 'was inserted' FROM t0_template
6511
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6512
ERROR 22012: Division by 0
6515
# check transactions-8 success: 1
6516
# INFO: Storage engine used for t1 seems to be able to revert
6517
# changes made by the failing statement.
6518
SET @@session.sql_mode = '';
6520
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6522
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6524
# check special-1 success: 1
6525
UPDATE t1 SET f_charbig = '';
6527
# check special-2 success: 1
6528
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6529
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6530
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6531
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6532
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6533
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6534
'just inserted' FROM t0_template
6535
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6536
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6538
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6539
f_charbig = 'updated by trigger'
6540
WHERE f_int1 = new.f_int1;
6542
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6543
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6544
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6546
# check trigger-1 success: 1
6548
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6549
f_int2 = CAST(f_char1 AS SIGNED INT),
6550
f_charbig = 'just inserted'
6551
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6553
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6554
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6555
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6556
'just inserted' FROM t0_template
6557
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6558
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
6560
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6561
f_charbig = 'updated by trigger'
6562
WHERE f_int1 = new.f_int1;
6564
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6565
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6566
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6568
# check trigger-2 success: 1
6570
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6571
f_int2 = CAST(f_char1 AS SIGNED INT),
6572
f_charbig = 'just inserted'
6573
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6575
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6576
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6577
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6578
'just inserted' FROM t0_template
6579
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6580
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6582
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6583
f_charbig = 'updated by trigger'
6584
WHERE f_int1 = new.f_int1;
6586
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6587
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6589
# check trigger-3 success: 1
6591
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6592
f_int2 = CAST(f_char1 AS SIGNED INT),
6593
f_charbig = 'just inserted'
6594
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6596
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6597
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6598
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6599
'just inserted' FROM t0_template
6600
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6601
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
6603
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6604
f_charbig = 'updated by trigger'
6605
WHERE f_int1 = - old.f_int1;
6607
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6608
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6610
# check trigger-4 success: 1
6612
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6613
f_int2 = CAST(f_char1 AS SIGNED INT),
6614
f_charbig = 'just inserted'
6615
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6617
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6618
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6619
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6620
'just inserted' FROM t0_template
6621
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6622
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6624
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6625
f_charbig = 'updated by trigger'
6626
WHERE f_int1 = new.f_int1;
6628
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6629
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6631
# check trigger-5 success: 1
6633
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6634
f_int2 = CAST(f_char1 AS SIGNED INT),
6635
f_charbig = 'just inserted'
6636
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6638
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6639
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6640
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6641
'just inserted' FROM t0_template
6642
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6643
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
6645
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6646
f_charbig = 'updated by trigger'
6647
WHERE f_int1 = - old.f_int1;
6649
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
6650
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6652
# check trigger-6 success: 1
6654
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6655
f_int2 = CAST(f_char1 AS SIGNED INT),
6656
f_charbig = 'just inserted'
6657
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6659
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6660
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6661
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6662
'just inserted' FROM t0_template
6663
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6664
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
6666
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6667
f_charbig = 'updated by trigger'
6668
WHERE f_int1 = - old.f_int1;
6671
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6673
# check trigger-7 success: 1
6675
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6676
f_int2 = CAST(f_char1 AS SIGNED INT),
6677
f_charbig = 'just inserted'
6678
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6680
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6681
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6682
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6683
'just inserted' FROM t0_template
6684
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6685
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
6687
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6688
f_charbig = 'updated by trigger'
6689
WHERE f_int1 = - old.f_int1;
6692
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
6694
# check trigger-8 success: 1
6696
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6697
f_int2 = CAST(f_char1 AS SIGNED INT),
6698
f_charbig = 'just inserted'
6699
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
6701
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6704
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6706
SET new.f_int1 = old.f_int1 + @max_row,
6707
new.f_int2 = old.f_int2 - @max_row,
6708
new.f_charbig = '####updated per update trigger####';
6711
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6712
f_charbig = '####updated per update statement itself####';
6714
# check trigger-9 success: 1
6716
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6717
f_int2 = CAST(f_char1 AS SIGNED INT),
6718
f_charbig = CONCAT('===',f_char1,'===');
6719
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
6721
SET new.f_int1 = new.f_int1 + @max_row,
6722
new.f_int2 = new.f_int2 - @max_row,
6723
new.f_charbig = '####updated per update trigger####';
6726
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
6727
f_charbig = '####updated per update statement itself####';
6729
# check trigger-10 success: 1
6731
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6732
f_int2 = CAST(f_char1 AS SIGNED INT),
6733
f_charbig = CONCAT('===',f_char1,'===');
6734
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6736
SET new.f_int1 = @my_max1 + @counter,
6737
new.f_int2 = @my_min2 - @counter,
6738
new.f_charbig = '####updated per insert trigger####';
6739
SET @counter = @counter + 1;
6742
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6743
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6744
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6745
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6746
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6750
# check trigger-11 success: 1
6752
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6753
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6754
AND f_charbig = '####updated per insert trigger####';
6755
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
6757
SET new.f_int1 = @my_max1 + @counter,
6758
new.f_int2 = @my_min2 - @counter,
6759
new.f_charbig = '####updated per insert trigger####';
6760
SET @counter = @counter + 1;
6763
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
6764
INSERT INTO t1 (f_char1, f_char2, f_charbig)
6765
SELECT CAST(f_int1 AS CHAR),
6766
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
6767
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
6771
# check trigger-12 success: 1
6773
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
6774
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
6775
AND f_charbig = '####updated per insert trigger####';
6777
Table Op Msg_type Msg_text
6778
test.t1 analyze status OK
6779
CHECK TABLE t1 EXTENDED;
6780
Table Op Msg_type Msg_text
6781
test.t1 check status OK
6782
CHECKSUM TABLE t1 EXTENDED;
6784
test.t1 <some_value>
6786
Table Op Msg_type Msg_text
6787
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
6788
test.t1 optimize status OK
6789
# check layout success: 1
6790
REPAIR TABLE t1 EXTENDED;
6791
Table Op Msg_type Msg_text
6792
test.t1 repair note The storage engine for the table doesn't support repair
6793
# check layout success: 1
6796
# check TRUNCATE success: 1
6797
# check layout success: 1
6798
# End usability test (inc/partition_check.inc)
6805
f_charbig VARCHAR(1000)
6806
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
6808
PARTITION BY LIST(ABS(MOD(f_int1,2)))
6809
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
6810
(PARTITION part1 VALUES IN (0),
6811
PARTITION part2 VALUES IN (1),
6812
PARTITION part3 VALUES IN (NULL));
6813
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6814
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6815
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
6816
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
6817
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6818
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
6819
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
6820
# Start usability test (inc/partition_check.inc)
6822
SHOW CREATE TABLE t1;
6824
t1 CREATE TABLE `t1` (
6825
`f_int1` int(11) NOT NULL DEFAULT '0',
6826
`f_int2` int(11) NOT NULL DEFAULT '0',
6827
`f_char1` char(20) DEFAULT NULL,
6828
`f_char2` char(20) DEFAULT NULL,
6829
`f_charbig` varchar(1000) DEFAULT NULL
6830
) ENGINE=InnoDB DEFAULT CHARSET=latin1
6831
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
6832
SUBPARTITION BY KEY (f_int1)
6834
(PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
6835
PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
6836
PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
6838
# check prerequisites-1 success: 1
6839
# check COUNT(*) success: 1
6840
# check MIN/MAX(f_int1) success: 1
6841
# check MIN/MAX(f_int2) success: 1
6842
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6843
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
6844
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
6845
WHERE f_int1 IN (2,3);
6846
# check prerequisites-3 success: 1
6847
DELETE FROM t1 WHERE f_charbig = 'delete me';
6848
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
6849
# check read via f_int1 success: 1
6850
# check read via f_int2 success: 1
6852
# check multiple-1 success: 1
6853
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
6855
# check multiple-2 success: 1
6856
INSERT INTO t1 SELECT * FROM t0_template
6857
WHERE MOD(f_int1,3) = 0;
6859
# check multiple-3 success: 1
6860
UPDATE t1 SET f_int1 = f_int1 + @max_row
6861
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
6862
AND @max_row_div2 + @max_row_div4;
6864
# check multiple-4 success: 1
6866
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
6867
AND @max_row_div2 + @max_row_div4 + @max_row;
6869
# check multiple-5 success: 1
6870
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
6872
SET f_int1 = @cur_value , f_int2 = @cur_value,
6873
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6874
f_charbig = '#SINGLE#';
6876
# check single-1 success: 1
6877
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
6879
SET f_int1 = @cur_value , f_int2 = @cur_value,
6880
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
6881
f_charbig = '#SINGLE#';
6883
# check single-2 success: 1
6884
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
6885
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
6886
UPDATE t1 SET f_int1 = @cur_value2
6887
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
6889
# check single-3 success: 1
6890
SET @cur_value1= -1;
6891
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
6892
UPDATE t1 SET f_int1 = @cur_value1
6893
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
6895
# check single-4 success: 1
6896
SELECT MAX(f_int1) INTO @cur_value FROM t1;
6897
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
6899
# check single-5 success: 1
6900
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
6902
# check single-6 success: 1
6903
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
6905
# check single-7 success: 1
6906
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
6907
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
6908
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
6909
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
6910
f_charbig = '#NULL#';
6912
SET f_int1 = NULL , f_int2 = -@max_row,
6913
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
6914
f_charbig = '#NULL#';
6915
ERROR 23000: Column 'f_int1' cannot be null
6916
# check null success: 1
6918
WHERE f_int1 = 0 AND f_int2 = 0
6919
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
6920
AND f_charbig = '#NULL#';
6922
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6923
SELECT f_int1, f_int1, '', '', 'was inserted'
6924
FROM t0_template source_tab
6925
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6927
# check transactions-1 success: 1
6930
# check transactions-2 success: 1
6933
# check transactions-3 success: 1
6934
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6938
# check transactions-4 success: 1
6939
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6940
SELECT f_int1, f_int1, '', '', 'was inserted'
6941
FROM t0_template source_tab
6942
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6944
# check transactions-5 success: 1
6947
# check transactions-6 success: 1
6948
# INFO: Storage engine used for t1 seems to be transactional.
6951
# check transactions-7 success: 1
6952
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6954
SET @@session.sql_mode = 'traditional';
6955
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
6956
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
6957
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
6958
'', '', 'was inserted' FROM t0_template
6959
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
6960
ERROR 22012: Division by 0
6963
# check transactions-8 success: 1
6964
# INFO: Storage engine used for t1 seems to be able to revert
6965
# changes made by the failing statement.
6966
SET @@session.sql_mode = '';
6968
DELETE FROM t1 WHERE f_charbig = 'was inserted';
6970
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
6972
# check special-1 success: 1
6973
UPDATE t1 SET f_charbig = '';
6975
# check special-2 success: 1
6976
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
6977
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
6978
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
6979
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6980
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6981
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
6982
'just inserted' FROM t0_template
6983
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6984
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
6986
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
6987
f_charbig = 'updated by trigger'
6988
WHERE f_int1 = new.f_int1;
6990
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
6991
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
6992
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
6994
# check trigger-1 success: 1
6996
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
6997
f_int2 = CAST(f_char1 AS SIGNED INT),
6998
f_charbig = 'just inserted'
6999
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7001
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7002
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7003
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7004
'just inserted' FROM t0_template
7005
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7006
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7008
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7009
f_charbig = 'updated by trigger'
7010
WHERE f_int1 = new.f_int1;
7012
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7013
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7014
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7016
# check trigger-2 success: 1
7018
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7019
f_int2 = CAST(f_char1 AS SIGNED INT),
7020
f_charbig = 'just inserted'
7021
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7023
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7024
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7025
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7026
'just inserted' FROM t0_template
7027
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7028
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7030
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7031
f_charbig = 'updated by trigger'
7032
WHERE f_int1 = new.f_int1;
7034
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7035
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7037
# check trigger-3 success: 1
7039
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7040
f_int2 = CAST(f_char1 AS SIGNED INT),
7041
f_charbig = 'just inserted'
7042
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7044
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7045
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7046
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7047
'just inserted' FROM t0_template
7048
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7049
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7051
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7052
f_charbig = 'updated by trigger'
7053
WHERE f_int1 = - old.f_int1;
7055
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7056
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7058
# check trigger-4 success: 1
7060
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7061
f_int2 = CAST(f_char1 AS SIGNED INT),
7062
f_charbig = 'just inserted'
7063
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7065
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7066
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7067
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7068
'just inserted' FROM t0_template
7069
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7070
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7072
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7073
f_charbig = 'updated by trigger'
7074
WHERE f_int1 = new.f_int1;
7076
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7077
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7079
# check trigger-5 success: 1
7081
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7082
f_int2 = CAST(f_char1 AS SIGNED INT),
7083
f_charbig = 'just inserted'
7084
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7086
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7087
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7088
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7089
'just inserted' FROM t0_template
7090
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7091
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7093
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7094
f_charbig = 'updated by trigger'
7095
WHERE f_int1 = - old.f_int1;
7097
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7098
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7100
# check trigger-6 success: 1
7102
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7103
f_int2 = CAST(f_char1 AS SIGNED INT),
7104
f_charbig = 'just inserted'
7105
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7107
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7108
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7109
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7110
'just inserted' FROM t0_template
7111
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7112
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7114
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7115
f_charbig = 'updated by trigger'
7116
WHERE f_int1 = - old.f_int1;
7119
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7121
# check trigger-7 success: 1
7123
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7124
f_int2 = CAST(f_char1 AS SIGNED INT),
7125
f_charbig = 'just inserted'
7126
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7128
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7129
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7130
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7131
'just inserted' FROM t0_template
7132
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7133
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
7135
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7136
f_charbig = 'updated by trigger'
7137
WHERE f_int1 = - old.f_int1;
7140
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7142
# check trigger-8 success: 1
7144
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7145
f_int2 = CAST(f_char1 AS SIGNED INT),
7146
f_charbig = 'just inserted'
7147
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7149
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7151
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7152
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7154
SET new.f_int1 = old.f_int1 + @max_row,
7155
new.f_int2 = old.f_int2 - @max_row,
7156
new.f_charbig = '####updated per update trigger####';
7159
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7160
f_charbig = '####updated per update statement itself####';
7162
# check trigger-9 success: 1
7164
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7165
f_int2 = CAST(f_char1 AS SIGNED INT),
7166
f_charbig = CONCAT('===',f_char1,'===');
7167
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7169
SET new.f_int1 = new.f_int1 + @max_row,
7170
new.f_int2 = new.f_int2 - @max_row,
7171
new.f_charbig = '####updated per update trigger####';
7174
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7175
f_charbig = '####updated per update statement itself####';
7177
# check trigger-10 success: 1
7179
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7180
f_int2 = CAST(f_char1 AS SIGNED INT),
7181
f_charbig = CONCAT('===',f_char1,'===');
7182
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7184
SET new.f_int1 = @my_max1 + @counter,
7185
new.f_int2 = @my_min2 - @counter,
7186
new.f_charbig = '####updated per insert trigger####';
7187
SET @counter = @counter + 1;
7190
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7191
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7192
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7193
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7198
# check trigger-11 success: 1
7200
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7201
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7202
AND f_charbig = '####updated per insert trigger####';
7203
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7205
SET new.f_int1 = @my_max1 + @counter,
7206
new.f_int2 = @my_min2 - @counter,
7207
new.f_charbig = '####updated per insert trigger####';
7208
SET @counter = @counter + 1;
7211
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7212
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7213
SELECT CAST(f_int1 AS CHAR),
7214
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7215
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7219
# check trigger-12 success: 1
7221
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7222
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7223
AND f_charbig = '####updated per insert trigger####';
7225
Table Op Msg_type Msg_text
7226
test.t1 analyze status OK
7227
CHECK TABLE t1 EXTENDED;
7228
Table Op Msg_type Msg_text
7229
test.t1 check status OK
7230
CHECKSUM TABLE t1 EXTENDED;
7232
test.t1 <some_value>
7234
Table Op Msg_type Msg_text
7235
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
7236
test.t1 optimize status OK
7237
# check layout success: 1
7238
REPAIR TABLE t1 EXTENDED;
7239
Table Op Msg_type Msg_text
7240
test.t1 repair note The storage engine for the table doesn't support repair
7241
# check layout success: 1
7244
# check TRUNCATE success: 1
7245
# check layout success: 1
7246
# End usability test (inc/partition_check.inc)
7248
DROP TABLE IF EXISTS t1;
7254
f_charbig VARCHAR(1000)
7255
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
7257
PARTITION BY HASH(f_int1) PARTITIONS 2;
7258
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7259
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7260
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7261
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
7262
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7263
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7264
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7265
# Start usability test (inc/partition_check.inc)
7267
SHOW CREATE TABLE t1;
7269
t1 CREATE TABLE `t1` (
7270
`f_int1` int(11) DEFAULT NULL,
7271
`f_int2` int(11) DEFAULT NULL,
7272
`f_char1` char(20) DEFAULT NULL,
7273
`f_char2` char(20) DEFAULT NULL,
7274
`f_charbig` varchar(1000) DEFAULT NULL
7275
) ENGINE=InnoDB DEFAULT CHARSET=latin1
7276
/*!50100 PARTITION BY HASH (f_int1)
7279
# check prerequisites-1 success: 1
7280
# check COUNT(*) success: 1
7281
# check MIN/MAX(f_int1) success: 1
7282
# check MIN/MAX(f_int2) success: 1
7283
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7284
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7285
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7286
WHERE f_int1 IN (2,3);
7287
# check prerequisites-3 success: 1
7288
DELETE FROM t1 WHERE f_charbig = 'delete me';
7289
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
7290
# check read via f_int1 success: 1
7291
# check read via f_int2 success: 1
7293
# check multiple-1 success: 1
7294
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7296
# check multiple-2 success: 1
7297
INSERT INTO t1 SELECT * FROM t0_template
7298
WHERE MOD(f_int1,3) = 0;
7300
# check multiple-3 success: 1
7301
UPDATE t1 SET f_int1 = f_int1 + @max_row
7302
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7303
AND @max_row_div2 + @max_row_div4;
7305
# check multiple-4 success: 1
7307
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7308
AND @max_row_div2 + @max_row_div4 + @max_row;
7310
# check multiple-5 success: 1
7311
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7313
SET f_int1 = @cur_value , f_int2 = @cur_value,
7314
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7315
f_charbig = '#SINGLE#';
7317
# check single-1 success: 1
7318
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7320
SET f_int1 = @cur_value , f_int2 = @cur_value,
7321
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7322
f_charbig = '#SINGLE#';
7324
# check single-2 success: 1
7325
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7326
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7327
UPDATE t1 SET f_int1 = @cur_value2
7328
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7330
# check single-3 success: 1
7331
SET @cur_value1= -1;
7332
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7333
UPDATE t1 SET f_int1 = @cur_value1
7334
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7336
# check single-4 success: 1
7337
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7338
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7340
# check single-5 success: 1
7341
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7343
# check single-6 success: 1
7344
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7346
# check single-7 success: 1
7347
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7348
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7349
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7350
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7351
f_charbig = '#NULL#';
7353
SET f_int1 = NULL , f_int2 = -@max_row,
7354
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7355
f_charbig = '#NULL#';
7356
# check null success: 1
7358
# check null-1 success: 1
7359
UPDATE t1 SET f_int1 = -@max_row
7360
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7361
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7363
# check null-2 success: 1
7364
UPDATE t1 SET f_int1 = NULL
7365
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7366
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7368
# check null-3 success: 1
7370
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7371
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7373
# check null-4 success: 1
7375
WHERE f_int1 = 0 AND f_int2 = 0
7376
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7377
AND f_charbig = '#NULL#';
7379
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7380
SELECT f_int1, f_int1, '', '', 'was inserted'
7381
FROM t0_template source_tab
7382
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7384
# check transactions-1 success: 1
7387
# check transactions-2 success: 1
7390
# check transactions-3 success: 1
7391
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7395
# check transactions-4 success: 1
7396
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7397
SELECT f_int1, f_int1, '', '', 'was inserted'
7398
FROM t0_template source_tab
7399
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7401
# check transactions-5 success: 1
7404
# check transactions-6 success: 1
7405
# INFO: Storage engine used for t1 seems to be transactional.
7408
# check transactions-7 success: 1
7409
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7411
SET @@session.sql_mode = 'traditional';
7412
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7413
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7414
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7415
'', '', 'was inserted' FROM t0_template
7416
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7417
ERROR 22012: Division by 0
7420
# check transactions-8 success: 1
7421
# INFO: Storage engine used for t1 seems to be able to revert
7422
# changes made by the failing statement.
7423
SET @@session.sql_mode = '';
7425
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7427
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7429
# check special-1 success: 1
7430
UPDATE t1 SET f_charbig = '';
7432
# check special-2 success: 1
7433
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7434
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7435
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7436
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7437
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7438
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7439
'just inserted' FROM t0_template
7440
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7441
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7443
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7444
f_charbig = 'updated by trigger'
7445
WHERE f_int1 = new.f_int1;
7447
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7448
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7449
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7451
# check trigger-1 success: 1
7453
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7454
f_int2 = CAST(f_char1 AS SIGNED INT),
7455
f_charbig = 'just inserted'
7456
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7458
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7459
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7460
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7461
'just inserted' FROM t0_template
7462
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7463
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7465
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7466
f_charbig = 'updated by trigger'
7467
WHERE f_int1 = new.f_int1;
7469
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7470
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7471
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7473
# check trigger-2 success: 1
7475
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7476
f_int2 = CAST(f_char1 AS SIGNED INT),
7477
f_charbig = 'just inserted'
7478
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7480
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7481
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7482
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7483
'just inserted' FROM t0_template
7484
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7485
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7487
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7488
f_charbig = 'updated by trigger'
7489
WHERE f_int1 = new.f_int1;
7491
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7492
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7494
# check trigger-3 success: 1
7496
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7497
f_int2 = CAST(f_char1 AS SIGNED INT),
7498
f_charbig = 'just inserted'
7499
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7501
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7502
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7503
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7504
'just inserted' FROM t0_template
7505
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7506
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7508
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7509
f_charbig = 'updated by trigger'
7510
WHERE f_int1 = - old.f_int1;
7512
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7513
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7515
# check trigger-4 success: 1
7517
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7518
f_int2 = CAST(f_char1 AS SIGNED INT),
7519
f_charbig = 'just inserted'
7520
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7522
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7523
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7524
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7525
'just inserted' FROM t0_template
7526
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7527
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7529
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7530
f_charbig = 'updated by trigger'
7531
WHERE f_int1 = new.f_int1;
7533
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7534
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7536
# check trigger-5 success: 1
7538
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7539
f_int2 = CAST(f_char1 AS SIGNED INT),
7540
f_charbig = 'just inserted'
7541
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7543
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7544
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7545
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7546
'just inserted' FROM t0_template
7547
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7548
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7550
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7551
f_charbig = 'updated by trigger'
7552
WHERE f_int1 = - old.f_int1;
7554
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7555
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7557
# check trigger-6 success: 1
7559
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7560
f_int2 = CAST(f_char1 AS SIGNED INT),
7561
f_charbig = 'just inserted'
7562
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7564
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7565
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7566
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7567
'just inserted' FROM t0_template
7568
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7569
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
7571
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7572
f_charbig = 'updated by trigger'
7573
WHERE f_int1 = - old.f_int1;
7576
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7578
# check trigger-7 success: 1
7580
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7581
f_int2 = CAST(f_char1 AS SIGNED INT),
7582
f_charbig = 'just inserted'
7583
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7585
WHERE ABS(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 AFTER DELETE 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 = - old.f_int1;
7597
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7599
# check trigger-8 success: 1
7601
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7602
f_int2 = CAST(f_char1 AS SIGNED INT),
7603
f_charbig = 'just inserted'
7604
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7606
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7608
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7609
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7611
SET new.f_int1 = old.f_int1 + @max_row,
7612
new.f_int2 = old.f_int2 - @max_row,
7613
new.f_charbig = '####updated per update trigger####';
7616
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7617
f_charbig = '####updated per update statement itself####';
7619
# check trigger-9 success: 1
7621
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7622
f_int2 = CAST(f_char1 AS SIGNED INT),
7623
f_charbig = CONCAT('===',f_char1,'===');
7624
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
7626
SET new.f_int1 = new.f_int1 + @max_row,
7627
new.f_int2 = new.f_int2 - @max_row,
7628
new.f_charbig = '####updated per update trigger####';
7631
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
7632
f_charbig = '####updated per update statement itself####';
7634
# check trigger-10 success: 1
7636
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7637
f_int2 = CAST(f_char1 AS SIGNED INT),
7638
f_charbig = CONCAT('===',f_char1,'===');
7639
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7641
SET new.f_int1 = @my_max1 + @counter,
7642
new.f_int2 = @my_min2 - @counter,
7643
new.f_charbig = '####updated per insert trigger####';
7644
SET @counter = @counter + 1;
7647
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7648
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7649
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7650
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7651
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7655
# check trigger-11 success: 1
7657
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7658
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7659
AND f_charbig = '####updated per insert trigger####';
7660
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
7662
SET new.f_int1 = @my_max1 + @counter,
7663
new.f_int2 = @my_min2 - @counter,
7664
new.f_charbig = '####updated per insert trigger####';
7665
SET @counter = @counter + 1;
7668
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
7669
INSERT INTO t1 (f_char1, f_char2, f_charbig)
7670
SELECT CAST(f_int1 AS CHAR),
7671
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
7672
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
7676
# check trigger-12 success: 1
7678
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
7679
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
7680
AND f_charbig = '####updated per insert trigger####';
7682
Table Op Msg_type Msg_text
7683
test.t1 analyze status OK
7684
CHECK TABLE t1 EXTENDED;
7685
Table Op Msg_type Msg_text
7686
test.t1 check status OK
7687
CHECKSUM TABLE t1 EXTENDED;
7689
test.t1 <some_value>
7691
Table Op Msg_type Msg_text
7692
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
7693
test.t1 optimize status OK
7694
# check layout success: 1
7695
REPAIR TABLE t1 EXTENDED;
7696
Table Op Msg_type Msg_text
7697
test.t1 repair note The storage engine for the table doesn't support repair
7698
# check layout success: 1
7701
# check TRUNCATE success: 1
7702
# check layout success: 1
7703
# End usability test (inc/partition_check.inc)
7710
f_charbig VARCHAR(1000)
7711
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
7713
PARTITION BY KEY(f_int1) PARTITIONS 5;
7714
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7715
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7716
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
7717
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
7718
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7719
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
7720
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
7721
# Start usability test (inc/partition_check.inc)
7723
SHOW CREATE TABLE t1;
7725
t1 CREATE TABLE `t1` (
7726
`f_int1` int(11) DEFAULT NULL,
7727
`f_int2` int(11) DEFAULT NULL,
7728
`f_char1` char(20) DEFAULT NULL,
7729
`f_char2` char(20) DEFAULT NULL,
7730
`f_charbig` varchar(1000) DEFAULT NULL
7731
) ENGINE=InnoDB DEFAULT CHARSET=latin1
7732
/*!50100 PARTITION BY KEY (f_int1)
7735
# check prerequisites-1 success: 1
7736
# check COUNT(*) success: 1
7737
# check MIN/MAX(f_int1) success: 1
7738
# check MIN/MAX(f_int2) success: 1
7739
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7740
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
7741
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
7742
WHERE f_int1 IN (2,3);
7743
# check prerequisites-3 success: 1
7744
DELETE FROM t1 WHERE f_charbig = 'delete me';
7745
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
7746
# check read via f_int1 success: 1
7747
# check read via f_int2 success: 1
7749
# check multiple-1 success: 1
7750
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
7752
# check multiple-2 success: 1
7753
INSERT INTO t1 SELECT * FROM t0_template
7754
WHERE MOD(f_int1,3) = 0;
7756
# check multiple-3 success: 1
7757
UPDATE t1 SET f_int1 = f_int1 + @max_row
7758
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
7759
AND @max_row_div2 + @max_row_div4;
7761
# check multiple-4 success: 1
7763
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
7764
AND @max_row_div2 + @max_row_div4 + @max_row;
7766
# check multiple-5 success: 1
7767
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
7769
SET f_int1 = @cur_value , f_int2 = @cur_value,
7770
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7771
f_charbig = '#SINGLE#';
7773
# check single-1 success: 1
7774
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
7776
SET f_int1 = @cur_value , f_int2 = @cur_value,
7777
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
7778
f_charbig = '#SINGLE#';
7780
# check single-2 success: 1
7781
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
7782
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
7783
UPDATE t1 SET f_int1 = @cur_value2
7784
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
7786
# check single-3 success: 1
7787
SET @cur_value1= -1;
7788
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
7789
UPDATE t1 SET f_int1 = @cur_value1
7790
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
7792
# check single-4 success: 1
7793
SELECT MAX(f_int1) INTO @cur_value FROM t1;
7794
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
7796
# check single-5 success: 1
7797
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
7799
# check single-6 success: 1
7800
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
7802
# check single-7 success: 1
7803
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
7804
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
7805
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
7806
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
7807
f_charbig = '#NULL#';
7809
SET f_int1 = NULL , f_int2 = -@max_row,
7810
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
7811
f_charbig = '#NULL#';
7812
# check null success: 1
7814
# check null-1 success: 1
7815
UPDATE t1 SET f_int1 = -@max_row
7816
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7817
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7819
# check null-2 success: 1
7820
UPDATE t1 SET f_int1 = NULL
7821
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7822
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7824
# check null-3 success: 1
7826
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
7827
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
7829
# check null-4 success: 1
7831
WHERE f_int1 = 0 AND f_int2 = 0
7832
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
7833
AND f_charbig = '#NULL#';
7835
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7836
SELECT f_int1, f_int1, '', '', 'was inserted'
7837
FROM t0_template source_tab
7838
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7840
# check transactions-1 success: 1
7843
# check transactions-2 success: 1
7846
# check transactions-3 success: 1
7847
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7851
# check transactions-4 success: 1
7852
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7853
SELECT f_int1, f_int1, '', '', 'was inserted'
7854
FROM t0_template source_tab
7855
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7857
# check transactions-5 success: 1
7860
# check transactions-6 success: 1
7861
# INFO: Storage engine used for t1 seems to be transactional.
7864
# check transactions-7 success: 1
7865
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7867
SET @@session.sql_mode = 'traditional';
7868
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
7869
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
7870
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
7871
'', '', 'was inserted' FROM t0_template
7872
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
7873
ERROR 22012: Division by 0
7876
# check transactions-8 success: 1
7877
# INFO: Storage engine used for t1 seems to be able to revert
7878
# changes made by the failing statement.
7879
SET @@session.sql_mode = '';
7881
DELETE FROM t1 WHERE f_charbig = 'was inserted';
7883
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
7885
# check special-1 success: 1
7886
UPDATE t1 SET f_charbig = '';
7888
# check special-2 success: 1
7889
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
7890
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
7891
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
7892
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7893
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7894
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7895
'just inserted' FROM t0_template
7896
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7897
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
7899
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7900
f_charbig = 'updated by trigger'
7901
WHERE f_int1 = new.f_int1;
7903
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7904
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7905
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7907
# check trigger-1 success: 1
7909
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7910
f_int2 = CAST(f_char1 AS SIGNED INT),
7911
f_charbig = 'just inserted'
7912
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7914
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7915
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7916
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7917
'just inserted' FROM t0_template
7918
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7919
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
7921
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7922
f_charbig = 'updated by trigger'
7923
WHERE f_int1 = new.f_int1;
7925
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7926
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
7927
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7929
# check trigger-2 success: 1
7931
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7932
f_int2 = CAST(f_char1 AS SIGNED INT),
7933
f_charbig = 'just inserted'
7934
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7936
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7937
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7938
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7939
'just inserted' FROM t0_template
7940
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7941
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7943
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7944
f_charbig = 'updated by trigger'
7945
WHERE f_int1 = new.f_int1;
7947
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7948
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7950
# check trigger-3 success: 1
7952
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7953
f_int2 = CAST(f_char1 AS SIGNED INT),
7954
f_charbig = 'just inserted'
7955
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7957
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7958
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7959
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7960
'just inserted' FROM t0_template
7961
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7962
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
7964
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7965
f_charbig = 'updated by trigger'
7966
WHERE f_int1 = - old.f_int1;
7968
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7969
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7971
# check trigger-4 success: 1
7973
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7974
f_int2 = CAST(f_char1 AS SIGNED INT),
7975
f_charbig = 'just inserted'
7976
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7978
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7979
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
7980
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
7981
'just inserted' FROM t0_template
7982
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
7983
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
7985
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
7986
f_charbig = 'updated by trigger'
7987
WHERE f_int1 = new.f_int1;
7989
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
7990
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
7992
# check trigger-5 success: 1
7994
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
7995
f_int2 = CAST(f_char1 AS SIGNED INT),
7996
f_charbig = 'just inserted'
7997
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
7999
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8000
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8001
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8002
'just inserted' FROM t0_template
8003
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8004
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8006
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8007
f_charbig = 'updated by trigger'
8008
WHERE f_int1 = - old.f_int1;
8010
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8011
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8013
# check trigger-6 success: 1
8015
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8016
f_int2 = CAST(f_char1 AS SIGNED INT),
8017
f_charbig = 'just inserted'
8018
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8020
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8021
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8022
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8023
'just inserted' FROM t0_template
8024
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8025
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8027
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8028
f_charbig = 'updated by trigger'
8029
WHERE f_int1 = - old.f_int1;
8032
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8034
# check trigger-7 success: 1
8036
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8037
f_int2 = CAST(f_char1 AS SIGNED INT),
8038
f_charbig = 'just inserted'
8039
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8041
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8042
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8043
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8044
'just inserted' FROM t0_template
8045
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8046
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8048
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8049
f_charbig = 'updated by trigger'
8050
WHERE f_int1 = - old.f_int1;
8053
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8055
# check trigger-8 success: 1
8057
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8058
f_int2 = CAST(f_char1 AS SIGNED INT),
8059
f_charbig = 'just inserted'
8060
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8062
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8064
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8065
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8067
SET new.f_int1 = old.f_int1 + @max_row,
8068
new.f_int2 = old.f_int2 - @max_row,
8069
new.f_charbig = '####updated per update trigger####';
8072
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8073
f_charbig = '####updated per update statement itself####';
8075
# check trigger-9 success: 1
8077
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8078
f_int2 = CAST(f_char1 AS SIGNED INT),
8079
f_charbig = CONCAT('===',f_char1,'===');
8080
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8082
SET new.f_int1 = new.f_int1 + @max_row,
8083
new.f_int2 = new.f_int2 - @max_row,
8084
new.f_charbig = '####updated per update trigger####';
8087
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8088
f_charbig = '####updated per update statement itself####';
8090
# check trigger-10 success: 1
8092
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8093
f_int2 = CAST(f_char1 AS SIGNED INT),
8094
f_charbig = CONCAT('===',f_char1,'===');
8095
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8097
SET new.f_int1 = @my_max1 + @counter,
8098
new.f_int2 = @my_min2 - @counter,
8099
new.f_charbig = '####updated per insert trigger####';
8100
SET @counter = @counter + 1;
8103
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8104
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8105
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8106
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8107
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8111
# check trigger-11 success: 1
8113
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8114
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8115
AND f_charbig = '####updated per insert trigger####';
8116
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8118
SET new.f_int1 = @my_max1 + @counter,
8119
new.f_int2 = @my_min2 - @counter,
8120
new.f_charbig = '####updated per insert trigger####';
8121
SET @counter = @counter + 1;
8124
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8125
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8126
SELECT CAST(f_int1 AS CHAR),
8127
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8128
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8132
# check trigger-12 success: 1
8134
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8135
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8136
AND f_charbig = '####updated per insert trigger####';
8138
Table Op Msg_type Msg_text
8139
test.t1 analyze status OK
8140
CHECK TABLE t1 EXTENDED;
8141
Table Op Msg_type Msg_text
8142
test.t1 check status OK
8143
CHECKSUM TABLE t1 EXTENDED;
8145
test.t1 <some_value>
8147
Table Op Msg_type Msg_text
8148
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
8149
test.t1 optimize status OK
8150
# check layout success: 1
8151
REPAIR TABLE t1 EXTENDED;
8152
Table Op Msg_type Msg_text
8153
test.t1 repair note The storage engine for the table doesn't support repair
8154
# check layout success: 1
8157
# check TRUNCATE success: 1
8158
# check layout success: 1
8159
# End usability test (inc/partition_check.inc)
8166
f_charbig VARCHAR(1000)
8167
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
8169
PARTITION BY LIST(MOD(f_int1,4))
8170
(PARTITION part_3 VALUES IN (-3),
8171
PARTITION part_2 VALUES IN (-2),
8172
PARTITION part_1 VALUES IN (-1),
8173
PARTITION part_N VALUES IN (NULL),
8174
PARTITION part0 VALUES IN (0),
8175
PARTITION part1 VALUES IN (1),
8176
PARTITION part2 VALUES IN (2),
8177
PARTITION part3 VALUES IN (3));
8178
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8179
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8180
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8181
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
8182
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8183
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8184
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8185
# Start usability test (inc/partition_check.inc)
8187
SHOW CREATE TABLE t1;
8189
t1 CREATE TABLE `t1` (
8190
`f_int1` int(11) DEFAULT NULL,
8191
`f_int2` int(11) DEFAULT NULL,
8192
`f_char1` char(20) DEFAULT NULL,
8193
`f_char2` char(20) DEFAULT NULL,
8194
`f_charbig` varchar(1000) DEFAULT NULL
8195
) ENGINE=InnoDB DEFAULT CHARSET=latin1
8196
/*!50100 PARTITION BY LIST (MOD(f_int1,4))
8197
(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
8198
PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
8199
PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
8200
PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
8201
PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
8202
PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
8203
PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
8204
PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
8206
# check prerequisites-1 success: 1
8207
# check COUNT(*) success: 1
8208
# check MIN/MAX(f_int1) success: 1
8209
# check MIN/MAX(f_int2) success: 1
8210
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8211
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8212
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8213
WHERE f_int1 IN (2,3);
8214
# check prerequisites-3 success: 1
8215
DELETE FROM t1 WHERE f_charbig = 'delete me';
8216
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
8217
# check read via f_int1 success: 1
8218
# check read via f_int2 success: 1
8220
# check multiple-1 success: 1
8221
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8223
# check multiple-2 success: 1
8224
INSERT INTO t1 SELECT * FROM t0_template
8225
WHERE MOD(f_int1,3) = 0;
8227
# check multiple-3 success: 1
8228
UPDATE t1 SET f_int1 = f_int1 + @max_row
8229
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8230
AND @max_row_div2 + @max_row_div4;
8232
# check multiple-4 success: 1
8234
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8235
AND @max_row_div2 + @max_row_div4 + @max_row;
8237
# check multiple-5 success: 1
8238
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8240
SET f_int1 = @cur_value , f_int2 = @cur_value,
8241
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8242
f_charbig = '#SINGLE#';
8244
# check single-1 success: 1
8245
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8247
SET f_int1 = @cur_value , f_int2 = @cur_value,
8248
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8249
f_charbig = '#SINGLE#';
8251
# check single-2 success: 1
8252
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8253
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8254
UPDATE t1 SET f_int1 = @cur_value2
8255
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8257
# check single-3 success: 1
8258
SET @cur_value1= -1;
8259
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8260
UPDATE t1 SET f_int1 = @cur_value1
8261
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8263
# check single-4 success: 1
8264
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8265
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8267
# check single-5 success: 1
8268
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8270
# check single-6 success: 1
8271
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8273
# check single-7 success: 1
8274
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
8275
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8276
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8277
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8278
f_charbig = '#NULL#';
8280
SET f_int1 = NULL , f_int2 = -@max_row,
8281
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8282
f_charbig = '#NULL#';
8283
# check null success: 1
8285
# check null-1 success: 1
8286
UPDATE t1 SET f_int1 = -@max_row
8287
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8288
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8290
# check null-2 success: 1
8291
UPDATE t1 SET f_int1 = NULL
8292
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8293
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8295
# check null-3 success: 1
8297
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8298
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8300
# check null-4 success: 1
8302
WHERE f_int1 = 0 AND f_int2 = 0
8303
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8304
AND f_charbig = '#NULL#';
8306
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8307
SELECT f_int1, f_int1, '', '', 'was inserted'
8308
FROM t0_template source_tab
8309
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8311
# check transactions-1 success: 1
8314
# check transactions-2 success: 1
8317
# check transactions-3 success: 1
8318
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8322
# check transactions-4 success: 1
8323
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8324
SELECT f_int1, f_int1, '', '', 'was inserted'
8325
FROM t0_template source_tab
8326
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8328
# check transactions-5 success: 1
8331
# check transactions-6 success: 1
8332
# INFO: Storage engine used for t1 seems to be transactional.
8335
# check transactions-7 success: 1
8336
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8338
SET @@session.sql_mode = 'traditional';
8339
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8340
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8341
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8342
'', '', 'was inserted' FROM t0_template
8343
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8344
ERROR 22012: Division by 0
8347
# check transactions-8 success: 1
8348
# INFO: Storage engine used for t1 seems to be able to revert
8349
# changes made by the failing statement.
8350
SET @@session.sql_mode = '';
8352
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8354
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8356
# check special-1 success: 1
8357
UPDATE t1 SET f_charbig = '';
8359
# check special-2 success: 1
8360
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8361
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8362
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8363
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8364
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8365
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8366
'just inserted' FROM t0_template
8367
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8368
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8370
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8371
f_charbig = 'updated by trigger'
8372
WHERE f_int1 = new.f_int1;
8374
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8375
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8376
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8378
# check trigger-1 success: 1
8380
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8381
f_int2 = CAST(f_char1 AS SIGNED INT),
8382
f_charbig = 'just inserted'
8383
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8385
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8386
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8387
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8388
'just inserted' FROM t0_template
8389
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8390
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8392
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8393
f_charbig = 'updated by trigger'
8394
WHERE f_int1 = new.f_int1;
8396
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8397
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8398
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8400
# check trigger-2 success: 1
8402
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8403
f_int2 = CAST(f_char1 AS SIGNED INT),
8404
f_charbig = 'just inserted'
8405
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8407
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8408
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8409
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8410
'just inserted' FROM t0_template
8411
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8412
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8414
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8415
f_charbig = 'updated by trigger'
8416
WHERE f_int1 = new.f_int1;
8418
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8419
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8421
# check trigger-3 success: 1
8423
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8424
f_int2 = CAST(f_char1 AS SIGNED INT),
8425
f_charbig = 'just inserted'
8426
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8428
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8429
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8430
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8431
'just inserted' FROM t0_template
8432
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8433
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8435
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8436
f_charbig = 'updated by trigger'
8437
WHERE f_int1 = - old.f_int1;
8439
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8440
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8442
# check trigger-4 success: 1
8444
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8445
f_int2 = CAST(f_char1 AS SIGNED INT),
8446
f_charbig = 'just inserted'
8447
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8449
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8450
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8451
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8452
'just inserted' FROM t0_template
8453
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8454
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8456
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8457
f_charbig = 'updated by trigger'
8458
WHERE f_int1 = new.f_int1;
8460
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8461
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8463
# check trigger-5 success: 1
8465
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8466
f_int2 = CAST(f_char1 AS SIGNED INT),
8467
f_charbig = 'just inserted'
8468
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8470
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8471
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8472
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8473
'just inserted' FROM t0_template
8474
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8475
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8477
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8478
f_charbig = 'updated by trigger'
8479
WHERE f_int1 = - old.f_int1;
8481
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8482
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8484
# check trigger-6 success: 1
8486
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8487
f_int2 = CAST(f_char1 AS SIGNED INT),
8488
f_charbig = 'just inserted'
8489
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8491
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8492
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8493
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8494
'just inserted' FROM t0_template
8495
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8496
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8498
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8499
f_charbig = 'updated by trigger'
8500
WHERE f_int1 = - old.f_int1;
8503
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8505
# check trigger-7 success: 1
8507
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8508
f_int2 = CAST(f_char1 AS SIGNED INT),
8509
f_charbig = 'just inserted'
8510
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8512
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8513
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8514
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8515
'just inserted' FROM t0_template
8516
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8517
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8519
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8520
f_charbig = 'updated by trigger'
8521
WHERE f_int1 = - old.f_int1;
8524
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8526
# check trigger-8 success: 1
8528
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8529
f_int2 = CAST(f_char1 AS SIGNED INT),
8530
f_charbig = 'just inserted'
8531
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8533
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8535
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8536
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8538
SET new.f_int1 = old.f_int1 + @max_row,
8539
new.f_int2 = old.f_int2 - @max_row,
8540
new.f_charbig = '####updated per update trigger####';
8543
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8544
f_charbig = '####updated per update statement itself####';
8546
# check trigger-9 success: 1
8548
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8549
f_int2 = CAST(f_char1 AS SIGNED INT),
8550
f_charbig = CONCAT('===',f_char1,'===');
8551
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
8553
SET new.f_int1 = new.f_int1 + @max_row,
8554
new.f_int2 = new.f_int2 - @max_row,
8555
new.f_charbig = '####updated per update trigger####';
8558
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
8559
f_charbig = '####updated per update statement itself####';
8561
# check trigger-10 success: 1
8563
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8564
f_int2 = CAST(f_char1 AS SIGNED INT),
8565
f_charbig = CONCAT('===',f_char1,'===');
8566
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8568
SET new.f_int1 = @my_max1 + @counter,
8569
new.f_int2 = @my_min2 - @counter,
8570
new.f_charbig = '####updated per insert trigger####';
8571
SET @counter = @counter + 1;
8574
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8575
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8576
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8577
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8578
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8582
# check trigger-11 success: 1
8584
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8585
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8586
AND f_charbig = '####updated per insert trigger####';
8587
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
8589
SET new.f_int1 = @my_max1 + @counter,
8590
new.f_int2 = @my_min2 - @counter,
8591
new.f_charbig = '####updated per insert trigger####';
8592
SET @counter = @counter + 1;
8595
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
8596
INSERT INTO t1 (f_char1, f_char2, f_charbig)
8597
SELECT CAST(f_int1 AS CHAR),
8598
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
8599
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
8603
# check trigger-12 success: 1
8605
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
8606
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
8607
AND f_charbig = '####updated per insert trigger####';
8609
Table Op Msg_type Msg_text
8610
test.t1 analyze status OK
8611
CHECK TABLE t1 EXTENDED;
8612
Table Op Msg_type Msg_text
8613
test.t1 check status OK
8614
CHECKSUM TABLE t1 EXTENDED;
8616
test.t1 <some_value>
8618
Table Op Msg_type Msg_text
8619
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
8620
test.t1 optimize status OK
8621
# check layout success: 1
8622
REPAIR TABLE t1 EXTENDED;
8623
Table Op Msg_type Msg_text
8624
test.t1 repair note The storage engine for the table doesn't support repair
8625
# check layout success: 1
8628
# check TRUNCATE success: 1
8629
# check layout success: 1
8630
# End usability test (inc/partition_check.inc)
8637
f_charbig VARCHAR(1000)
8638
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
8640
PARTITION BY RANGE(f_int1)
8641
(PARTITION parta VALUES LESS THAN (0),
8642
PARTITION partb VALUES LESS THAN (5),
8643
PARTITION partc VALUES LESS THAN (10),
8644
PARTITION partd VALUES LESS THAN (10 + 5),
8645
PARTITION parte VALUES LESS THAN (20),
8646
PARTITION partf VALUES LESS THAN (2147483646));
8647
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8648
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8649
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
8650
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
8651
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8652
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
8653
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
8654
# Start usability test (inc/partition_check.inc)
8656
SHOW CREATE TABLE t1;
8658
t1 CREATE TABLE `t1` (
8659
`f_int1` int(11) DEFAULT NULL,
8660
`f_int2` int(11) DEFAULT NULL,
8661
`f_char1` char(20) DEFAULT NULL,
8662
`f_char2` char(20) DEFAULT NULL,
8663
`f_charbig` varchar(1000) DEFAULT NULL
8664
) ENGINE=InnoDB DEFAULT CHARSET=latin1
8665
/*!50100 PARTITION BY RANGE (f_int1)
8666
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
8667
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
8668
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
8669
PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
8670
PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
8671
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
8673
# check prerequisites-1 success: 1
8674
# check COUNT(*) success: 1
8675
# check MIN/MAX(f_int1) success: 1
8676
# check MIN/MAX(f_int2) success: 1
8677
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8678
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
8679
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
8680
WHERE f_int1 IN (2,3);
8681
# check prerequisites-3 success: 1
8682
DELETE FROM t1 WHERE f_charbig = 'delete me';
8683
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
8684
# check read via f_int1 success: 1
8685
# check read via f_int2 success: 1
8687
# check multiple-1 success: 1
8688
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
8690
# check multiple-2 success: 1
8691
INSERT INTO t1 SELECT * FROM t0_template
8692
WHERE MOD(f_int1,3) = 0;
8694
# check multiple-3 success: 1
8695
UPDATE t1 SET f_int1 = f_int1 + @max_row
8696
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
8697
AND @max_row_div2 + @max_row_div4;
8699
# check multiple-4 success: 1
8701
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
8702
AND @max_row_div2 + @max_row_div4 + @max_row;
8704
# check multiple-5 success: 1
8705
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
8707
SET f_int1 = @cur_value , f_int2 = @cur_value,
8708
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8709
f_charbig = '#SINGLE#';
8711
# check single-1 success: 1
8712
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
8714
SET f_int1 = @cur_value , f_int2 = @cur_value,
8715
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
8716
f_charbig = '#SINGLE#';
8718
# check single-2 success: 1
8719
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
8720
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
8721
UPDATE t1 SET f_int1 = @cur_value2
8722
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
8724
# check single-3 success: 1
8725
SET @cur_value1= -1;
8726
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
8727
UPDATE t1 SET f_int1 = @cur_value1
8728
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
8730
# check single-4 success: 1
8731
SELECT MAX(f_int1) INTO @cur_value FROM t1;
8732
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
8734
# check single-5 success: 1
8735
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
8737
# check single-6 success: 1
8738
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
8739
ERROR HY000: Table has no partition for value 2147483647
8740
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
8741
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
8742
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
8743
f_charbig = '#NULL#';
8745
SET f_int1 = NULL , f_int2 = -@max_row,
8746
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
8747
f_charbig = '#NULL#';
8748
# check null success: 1
8750
# check null-1 success: 1
8751
UPDATE t1 SET f_int1 = -@max_row
8752
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8753
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8755
# check null-2 success: 1
8756
UPDATE t1 SET f_int1 = NULL
8757
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8758
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8760
# check null-3 success: 1
8762
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
8763
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
8765
# check null-4 success: 1
8767
WHERE f_int1 = 0 AND f_int2 = 0
8768
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
8769
AND f_charbig = '#NULL#';
8771
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8772
SELECT f_int1, f_int1, '', '', 'was inserted'
8773
FROM t0_template source_tab
8774
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8776
# check transactions-1 success: 1
8779
# check transactions-2 success: 1
8782
# check transactions-3 success: 1
8783
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8787
# check transactions-4 success: 1
8788
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8789
SELECT f_int1, f_int1, '', '', 'was inserted'
8790
FROM t0_template source_tab
8791
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8793
# check transactions-5 success: 1
8796
# check transactions-6 success: 1
8797
# INFO: Storage engine used for t1 seems to be transactional.
8800
# check transactions-7 success: 1
8801
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8803
SET @@session.sql_mode = 'traditional';
8804
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
8805
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
8806
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
8807
'', '', 'was inserted' FROM t0_template
8808
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
8809
ERROR 22012: Division by 0
8812
# check transactions-8 success: 1
8813
# INFO: Storage engine used for t1 seems to be able to revert
8814
# changes made by the failing statement.
8815
SET @@session.sql_mode = '';
8817
DELETE FROM t1 WHERE f_charbig = 'was inserted';
8819
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
8821
# check special-1 success: 1
8822
UPDATE t1 SET f_charbig = '';
8824
# check special-2 success: 1
8825
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
8826
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
8827
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
8828
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8829
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8830
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8831
'just inserted' FROM t0_template
8832
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8833
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
8835
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8836
f_charbig = 'updated by trigger'
8837
WHERE f_int1 = new.f_int1;
8839
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8840
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8841
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8843
# check trigger-1 success: 1
8845
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8846
f_int2 = CAST(f_char1 AS SIGNED INT),
8847
f_charbig = 'just inserted'
8848
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8850
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8851
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8852
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8853
'just inserted' FROM t0_template
8854
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8855
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
8857
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8858
f_charbig = 'updated by trigger'
8859
WHERE f_int1 = new.f_int1;
8861
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8862
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
8863
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8865
# check trigger-2 success: 1
8867
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8868
f_int2 = CAST(f_char1 AS SIGNED INT),
8869
f_charbig = 'just inserted'
8870
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8872
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8873
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8874
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8875
'just inserted' FROM t0_template
8876
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8877
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8879
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8880
f_charbig = 'updated by trigger'
8881
WHERE f_int1 = new.f_int1;
8883
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8884
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8886
# check trigger-3 success: 1
8888
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8889
f_int2 = CAST(f_char1 AS SIGNED INT),
8890
f_charbig = 'just inserted'
8891
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8893
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8894
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8895
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8896
'just inserted' FROM t0_template
8897
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8898
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
8900
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8901
f_charbig = 'updated by trigger'
8902
WHERE f_int1 = - old.f_int1;
8904
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8905
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8907
# check trigger-4 success: 1
8909
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8910
f_int2 = CAST(f_char1 AS SIGNED INT),
8911
f_charbig = 'just inserted'
8912
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8914
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8915
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8916
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8917
'just inserted' FROM t0_template
8918
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8919
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8921
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8922
f_charbig = 'updated by trigger'
8923
WHERE f_int1 = new.f_int1;
8925
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8926
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8928
# check trigger-5 success: 1
8930
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8931
f_int2 = CAST(f_char1 AS SIGNED INT),
8932
f_charbig = 'just inserted'
8933
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8935
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8936
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8937
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8938
'just inserted' FROM t0_template
8939
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8940
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
8942
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8943
f_charbig = 'updated by trigger'
8944
WHERE f_int1 = - old.f_int1;
8946
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
8947
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8949
# check trigger-6 success: 1
8951
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8952
f_int2 = CAST(f_char1 AS SIGNED INT),
8953
f_charbig = 'just inserted'
8954
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8956
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8957
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8958
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8959
'just inserted' FROM t0_template
8960
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8961
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
8963
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8964
f_charbig = 'updated by trigger'
8965
WHERE f_int1 = - old.f_int1;
8968
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8970
# check trigger-7 success: 1
8972
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8973
f_int2 = CAST(f_char1 AS SIGNED INT),
8974
f_charbig = 'just inserted'
8975
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8977
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8978
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
8979
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
8980
'just inserted' FROM t0_template
8981
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
8982
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
8984
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
8985
f_charbig = 'updated by trigger'
8986
WHERE f_int1 = - old.f_int1;
8989
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
8991
# check trigger-8 success: 1
8993
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
8994
f_int2 = CAST(f_char1 AS SIGNED INT),
8995
f_charbig = 'just inserted'
8996
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
8998
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9000
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9001
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9003
SET new.f_int1 = old.f_int1 + @max_row,
9004
new.f_int2 = old.f_int2 - @max_row,
9005
new.f_charbig = '####updated per update trigger####';
9008
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9009
f_charbig = '####updated per update statement itself####';
9011
# check trigger-9 success: 1
9013
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9014
f_int2 = CAST(f_char1 AS SIGNED INT),
9015
f_charbig = CONCAT('===',f_char1,'===');
9016
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9018
SET new.f_int1 = new.f_int1 + @max_row,
9019
new.f_int2 = new.f_int2 - @max_row,
9020
new.f_charbig = '####updated per update trigger####';
9023
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9024
f_charbig = '####updated per update statement itself####';
9026
# check trigger-10 success: 1
9028
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9029
f_int2 = CAST(f_char1 AS SIGNED INT),
9030
f_charbig = CONCAT('===',f_char1,'===');
9031
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9033
SET new.f_int1 = @my_max1 + @counter,
9034
new.f_int2 = @my_min2 - @counter,
9035
new.f_charbig = '####updated per insert trigger####';
9036
SET @counter = @counter + 1;
9039
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9040
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9041
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9042
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9043
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9047
# check trigger-11 success: 1
9049
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9050
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9051
AND f_charbig = '####updated per insert trigger####';
9052
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9054
SET new.f_int1 = @my_max1 + @counter,
9055
new.f_int2 = @my_min2 - @counter,
9056
new.f_charbig = '####updated per insert trigger####';
9057
SET @counter = @counter + 1;
9060
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9061
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9062
SELECT CAST(f_int1 AS CHAR),
9063
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9064
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9068
# check trigger-12 success: 1
9070
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9071
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9072
AND f_charbig = '####updated per insert trigger####';
9074
Table Op Msg_type Msg_text
9075
test.t1 analyze status OK
9076
CHECK TABLE t1 EXTENDED;
9077
Table Op Msg_type Msg_text
9078
test.t1 check status OK
9079
CHECKSUM TABLE t1 EXTENDED;
9081
test.t1 <some_value>
9083
Table Op Msg_type Msg_text
9084
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
9085
test.t1 optimize status OK
9086
# check layout success: 1
9087
REPAIR TABLE t1 EXTENDED;
9088
Table Op Msg_type Msg_text
9089
test.t1 repair note The storage engine for the table doesn't support repair
9090
# check layout success: 1
9093
# check TRUNCATE success: 1
9094
# check layout success: 1
9095
# End usability test (inc/partition_check.inc)
9102
f_charbig VARCHAR(1000)
9103
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
9105
PARTITION BY RANGE(f_int1 DIV 2) SUBPARTITION BY HASH(f_int1) SUBPARTITIONS 2
9106
(PARTITION parta VALUES LESS THAN (0),
9107
PARTITION partb VALUES LESS THAN (5),
9108
PARTITION partc VALUES LESS THAN (10),
9109
PARTITION partd VALUES LESS THAN (2147483646));
9110
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9111
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9112
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9113
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
9114
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9115
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9116
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9117
# Start usability test (inc/partition_check.inc)
9119
SHOW CREATE TABLE t1;
9121
t1 CREATE TABLE `t1` (
9122
`f_int1` int(11) DEFAULT NULL,
9123
`f_int2` int(11) DEFAULT NULL,
9124
`f_char1` char(20) DEFAULT NULL,
9125
`f_char2` char(20) DEFAULT NULL,
9126
`f_charbig` varchar(1000) DEFAULT NULL
9127
) ENGINE=InnoDB DEFAULT CHARSET=latin1
9128
/*!50100 PARTITION BY RANGE (f_int1 DIV 2)
9129
SUBPARTITION BY HASH (f_int1)
9131
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
9132
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
9133
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
9134
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
9136
# check prerequisites-1 success: 1
9137
# check COUNT(*) success: 1
9138
# check MIN/MAX(f_int1) success: 1
9139
# check MIN/MAX(f_int2) success: 1
9140
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9141
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9142
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9143
WHERE f_int1 IN (2,3);
9144
# check prerequisites-3 success: 1
9145
DELETE FROM t1 WHERE f_charbig = 'delete me';
9146
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
9147
# check read via f_int1 success: 1
9148
# check read via f_int2 success: 1
9150
# check multiple-1 success: 1
9151
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9153
# check multiple-2 success: 1
9154
INSERT INTO t1 SELECT * FROM t0_template
9155
WHERE MOD(f_int1,3) = 0;
9157
# check multiple-3 success: 1
9158
UPDATE t1 SET f_int1 = f_int1 + @max_row
9159
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9160
AND @max_row_div2 + @max_row_div4;
9162
# check multiple-4 success: 1
9164
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9165
AND @max_row_div2 + @max_row_div4 + @max_row;
9167
# check multiple-5 success: 1
9168
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9170
SET f_int1 = @cur_value , f_int2 = @cur_value,
9171
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9172
f_charbig = '#SINGLE#';
9174
# check single-1 success: 1
9175
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9177
SET f_int1 = @cur_value , f_int2 = @cur_value,
9178
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9179
f_charbig = '#SINGLE#';
9181
# check single-2 success: 1
9182
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9183
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9184
UPDATE t1 SET f_int1 = @cur_value2
9185
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9187
# check single-3 success: 1
9188
SET @cur_value1= -1;
9189
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9190
UPDATE t1 SET f_int1 = @cur_value1
9191
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9193
# check single-4 success: 1
9194
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9195
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9197
# check single-5 success: 1
9198
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9200
# check single-6 success: 1
9201
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9203
# check single-7 success: 1
9204
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
9205
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9206
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9207
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9208
f_charbig = '#NULL#';
9210
SET f_int1 = NULL , f_int2 = -@max_row,
9211
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9212
f_charbig = '#NULL#';
9213
# check null success: 1
9215
# check null-1 success: 1
9216
UPDATE t1 SET f_int1 = -@max_row
9217
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9218
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9220
# check null-2 success: 1
9221
UPDATE t1 SET f_int1 = NULL
9222
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9223
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9225
# check null-3 success: 1
9227
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9228
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9230
# check null-4 success: 1
9232
WHERE f_int1 = 0 AND f_int2 = 0
9233
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9234
AND f_charbig = '#NULL#';
9236
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9237
SELECT f_int1, f_int1, '', '', 'was inserted'
9238
FROM t0_template source_tab
9239
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9241
# check transactions-1 success: 1
9244
# check transactions-2 success: 1
9247
# check transactions-3 success: 1
9248
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9252
# check transactions-4 success: 1
9253
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9254
SELECT f_int1, f_int1, '', '', 'was inserted'
9255
FROM t0_template source_tab
9256
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9258
# check transactions-5 success: 1
9261
# check transactions-6 success: 1
9262
# INFO: Storage engine used for t1 seems to be transactional.
9265
# check transactions-7 success: 1
9266
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9268
SET @@session.sql_mode = 'traditional';
9269
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9270
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9271
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9272
'', '', 'was inserted' FROM t0_template
9273
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9274
ERROR 22012: Division by 0
9277
# check transactions-8 success: 1
9278
# INFO: Storage engine used for t1 seems to be able to revert
9279
# changes made by the failing statement.
9280
SET @@session.sql_mode = '';
9282
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9284
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9286
# check special-1 success: 1
9287
UPDATE t1 SET f_charbig = '';
9289
# check special-2 success: 1
9290
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9291
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9292
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9293
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9294
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9295
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9296
'just inserted' FROM t0_template
9297
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9298
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9300
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9301
f_charbig = 'updated by trigger'
9302
WHERE f_int1 = new.f_int1;
9304
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9305
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9306
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9308
# check trigger-1 success: 1
9310
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9311
f_int2 = CAST(f_char1 AS SIGNED INT),
9312
f_charbig = 'just inserted'
9313
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9315
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9316
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9317
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9318
'just inserted' FROM t0_template
9319
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9320
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9322
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9323
f_charbig = 'updated by trigger'
9324
WHERE f_int1 = new.f_int1;
9326
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9327
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9328
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9330
# check trigger-2 success: 1
9332
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9333
f_int2 = CAST(f_char1 AS SIGNED INT),
9334
f_charbig = 'just inserted'
9335
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9337
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9338
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9339
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9340
'just inserted' FROM t0_template
9341
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9342
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9344
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9345
f_charbig = 'updated by trigger'
9346
WHERE f_int1 = new.f_int1;
9348
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9349
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9351
# check trigger-3 success: 1
9353
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9354
f_int2 = CAST(f_char1 AS SIGNED INT),
9355
f_charbig = 'just inserted'
9356
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9358
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9359
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9360
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9361
'just inserted' FROM t0_template
9362
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9363
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9365
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9366
f_charbig = 'updated by trigger'
9367
WHERE f_int1 = - old.f_int1;
9369
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9370
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9372
# check trigger-4 success: 1
9374
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9375
f_int2 = CAST(f_char1 AS SIGNED INT),
9376
f_charbig = 'just inserted'
9377
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9379
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9380
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9381
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9382
'just inserted' FROM t0_template
9383
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9384
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9386
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9387
f_charbig = 'updated by trigger'
9388
WHERE f_int1 = new.f_int1;
9390
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9391
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9393
# check trigger-5 success: 1
9395
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9396
f_int2 = CAST(f_char1 AS SIGNED INT),
9397
f_charbig = 'just inserted'
9398
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9400
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9401
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9402
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9403
'just inserted' FROM t0_template
9404
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9405
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9407
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9408
f_charbig = 'updated by trigger'
9409
WHERE f_int1 = - old.f_int1;
9411
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9412
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9414
# check trigger-6 success: 1
9416
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9417
f_int2 = CAST(f_char1 AS SIGNED INT),
9418
f_charbig = 'just inserted'
9419
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9421
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9422
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9423
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9424
'just inserted' FROM t0_template
9425
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9426
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9428
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9429
f_charbig = 'updated by trigger'
9430
WHERE f_int1 = - old.f_int1;
9433
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9435
# check trigger-7 success: 1
9437
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9438
f_int2 = CAST(f_char1 AS SIGNED INT),
9439
f_charbig = 'just inserted'
9440
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9442
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9443
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9444
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9445
'just inserted' FROM t0_template
9446
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9447
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9449
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9450
f_charbig = 'updated by trigger'
9451
WHERE f_int1 = - old.f_int1;
9454
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9456
# check trigger-8 success: 1
9458
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9459
f_int2 = CAST(f_char1 AS SIGNED INT),
9460
f_charbig = 'just inserted'
9461
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9463
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9465
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9466
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9468
SET new.f_int1 = old.f_int1 + @max_row,
9469
new.f_int2 = old.f_int2 - @max_row,
9470
new.f_charbig = '####updated per update trigger####';
9473
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9474
f_charbig = '####updated per update statement itself####';
9476
# check trigger-9 success: 1
9478
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9479
f_int2 = CAST(f_char1 AS SIGNED INT),
9480
f_charbig = CONCAT('===',f_char1,'===');
9481
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9483
SET new.f_int1 = new.f_int1 + @max_row,
9484
new.f_int2 = new.f_int2 - @max_row,
9485
new.f_charbig = '####updated per update trigger####';
9488
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9489
f_charbig = '####updated per update statement itself####';
9491
# check trigger-10 success: 1
9493
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9494
f_int2 = CAST(f_char1 AS SIGNED INT),
9495
f_charbig = CONCAT('===',f_char1,'===');
9496
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9498
SET new.f_int1 = @my_max1 + @counter,
9499
new.f_int2 = @my_min2 - @counter,
9500
new.f_charbig = '####updated per insert trigger####';
9501
SET @counter = @counter + 1;
9504
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9505
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9506
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9507
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9508
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9512
# check trigger-11 success: 1
9514
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9515
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9516
AND f_charbig = '####updated per insert trigger####';
9517
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9519
SET new.f_int1 = @my_max1 + @counter,
9520
new.f_int2 = @my_min2 - @counter,
9521
new.f_charbig = '####updated per insert trigger####';
9522
SET @counter = @counter + 1;
9525
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9526
INSERT INTO t1 (f_char1, f_char2, f_charbig)
9527
SELECT CAST(f_int1 AS CHAR),
9528
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9529
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9533
# check trigger-12 success: 1
9535
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9536
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9537
AND f_charbig = '####updated per insert trigger####';
9539
Table Op Msg_type Msg_text
9540
test.t1 analyze status OK
9541
CHECK TABLE t1 EXTENDED;
9542
Table Op Msg_type Msg_text
9543
test.t1 check status OK
9544
CHECKSUM TABLE t1 EXTENDED;
9546
test.t1 <some_value>
9548
Table Op Msg_type Msg_text
9549
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
9550
test.t1 optimize status OK
9551
# check layout success: 1
9552
REPAIR TABLE t1 EXTENDED;
9553
Table Op Msg_type Msg_text
9554
test.t1 repair note The storage engine for the table doesn't support repair
9555
# check layout success: 1
9558
# check TRUNCATE success: 1
9559
# check layout success: 1
9560
# End usability test (inc/partition_check.inc)
9567
f_charbig VARCHAR(1000)
9568
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
9570
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int1)
9571
(PARTITION part1 VALUES LESS THAN (0)
9572
(SUBPARTITION subpart11, SUBPARTITION subpart12),
9573
PARTITION part2 VALUES LESS THAN (5)
9574
(SUBPARTITION subpart21, SUBPARTITION subpart22),
9575
PARTITION part3 VALUES LESS THAN (10)
9576
(SUBPARTITION subpart31, SUBPARTITION subpart32),
9577
PARTITION part4 VALUES LESS THAN (2147483646)
9578
(SUBPARTITION subpart41, SUBPARTITION subpart42));
9579
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9580
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9581
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
9582
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
9583
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9584
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
9585
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
9586
# Start usability test (inc/partition_check.inc)
9588
SHOW CREATE TABLE t1;
9590
t1 CREATE TABLE `t1` (
9591
`f_int1` int(11) DEFAULT NULL,
9592
`f_int2` int(11) DEFAULT NULL,
9593
`f_char1` char(20) DEFAULT NULL,
9594
`f_char2` char(20) DEFAULT NULL,
9595
`f_charbig` varchar(1000) DEFAULT NULL
9596
) ENGINE=InnoDB DEFAULT CHARSET=latin1
9597
/*!50100 PARTITION BY RANGE (f_int1)
9598
SUBPARTITION BY KEY (f_int1)
9599
(PARTITION part1 VALUES LESS THAN (0)
9600
(SUBPARTITION subpart11 ENGINE = InnoDB,
9601
SUBPARTITION subpart12 ENGINE = InnoDB),
9602
PARTITION part2 VALUES LESS THAN (5)
9603
(SUBPARTITION subpart21 ENGINE = InnoDB,
9604
SUBPARTITION subpart22 ENGINE = InnoDB),
9605
PARTITION part3 VALUES LESS THAN (10)
9606
(SUBPARTITION subpart31 ENGINE = InnoDB,
9607
SUBPARTITION subpart32 ENGINE = InnoDB),
9608
PARTITION part4 VALUES LESS THAN (2147483646)
9609
(SUBPARTITION subpart41 ENGINE = InnoDB,
9610
SUBPARTITION subpart42 ENGINE = InnoDB)) */
9612
# check prerequisites-1 success: 1
9613
# check COUNT(*) success: 1
9614
# check MIN/MAX(f_int1) success: 1
9615
# check MIN/MAX(f_int2) success: 1
9616
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9617
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9618
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
9619
WHERE f_int1 IN (2,3);
9620
# check prerequisites-3 success: 1
9621
DELETE FROM t1 WHERE f_charbig = 'delete me';
9622
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
9623
# check read via f_int1 success: 1
9624
# check read via f_int2 success: 1
9626
# check multiple-1 success: 1
9627
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
9629
# check multiple-2 success: 1
9630
INSERT INTO t1 SELECT * FROM t0_template
9631
WHERE MOD(f_int1,3) = 0;
9633
# check multiple-3 success: 1
9634
UPDATE t1 SET f_int1 = f_int1 + @max_row
9635
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
9636
AND @max_row_div2 + @max_row_div4;
9638
# check multiple-4 success: 1
9640
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
9641
AND @max_row_div2 + @max_row_div4 + @max_row;
9643
# check multiple-5 success: 1
9644
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
9646
SET f_int1 = @cur_value , f_int2 = @cur_value,
9647
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9648
f_charbig = '#SINGLE#';
9650
# check single-1 success: 1
9651
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
9653
SET f_int1 = @cur_value , f_int2 = @cur_value,
9654
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
9655
f_charbig = '#SINGLE#';
9657
# check single-2 success: 1
9658
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
9659
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
9660
UPDATE t1 SET f_int1 = @cur_value2
9661
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
9663
# check single-3 success: 1
9664
SET @cur_value1= -1;
9665
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
9666
UPDATE t1 SET f_int1 = @cur_value1
9667
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
9669
# check single-4 success: 1
9670
SELECT MAX(f_int1) INTO @cur_value FROM t1;
9671
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
9673
# check single-5 success: 1
9674
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
9676
# check single-6 success: 1
9677
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
9678
ERROR HY000: Table has no partition for value 2147483647
9679
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
9680
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
9681
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
9682
f_charbig = '#NULL#';
9684
SET f_int1 = NULL , f_int2 = -@max_row,
9685
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
9686
f_charbig = '#NULL#';
9687
# check null success: 1
9689
# check null-1 success: 1
9690
UPDATE t1 SET f_int1 = -@max_row
9691
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9692
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9694
# check null-2 success: 1
9695
UPDATE t1 SET f_int1 = NULL
9696
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9697
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9699
# check null-3 success: 1
9701
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
9702
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
9704
# check null-4 success: 1
9706
WHERE f_int1 = 0 AND f_int2 = 0
9707
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
9708
AND f_charbig = '#NULL#';
9710
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9711
SELECT f_int1, f_int1, '', '', 'was inserted'
9712
FROM t0_template source_tab
9713
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9715
# check transactions-1 success: 1
9718
# check transactions-2 success: 1
9721
# check transactions-3 success: 1
9722
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9726
# check transactions-4 success: 1
9727
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9728
SELECT f_int1, f_int1, '', '', 'was inserted'
9729
FROM t0_template source_tab
9730
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9732
# check transactions-5 success: 1
9735
# check transactions-6 success: 1
9736
# INFO: Storage engine used for t1 seems to be transactional.
9739
# check transactions-7 success: 1
9740
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9742
SET @@session.sql_mode = 'traditional';
9743
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
9744
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9745
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
9746
'', '', 'was inserted' FROM t0_template
9747
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
9748
ERROR 22012: Division by 0
9751
# check transactions-8 success: 1
9752
# INFO: Storage engine used for t1 seems to be able to revert
9753
# changes made by the failing statement.
9754
SET @@session.sql_mode = '';
9756
DELETE FROM t1 WHERE f_charbig = 'was inserted';
9758
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
9760
# check special-1 success: 1
9761
UPDATE t1 SET f_charbig = '';
9763
# check special-2 success: 1
9764
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
9765
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
9766
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
9767
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9768
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9769
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9770
'just inserted' FROM t0_template
9771
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9772
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
9774
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9775
f_charbig = 'updated by trigger'
9776
WHERE f_int1 = new.f_int1;
9778
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9779
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9780
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9782
# check trigger-1 success: 1
9784
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9785
f_int2 = CAST(f_char1 AS SIGNED INT),
9786
f_charbig = 'just inserted'
9787
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9789
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9790
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9791
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9792
'just inserted' FROM t0_template
9793
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9794
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
9796
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9797
f_charbig = 'updated by trigger'
9798
WHERE f_int1 = new.f_int1;
9800
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9801
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
9802
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9804
# check trigger-2 success: 1
9806
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9807
f_int2 = CAST(f_char1 AS SIGNED INT),
9808
f_charbig = 'just inserted'
9809
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9811
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9812
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9813
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9814
'just inserted' FROM t0_template
9815
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9816
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9818
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9819
f_charbig = 'updated by trigger'
9820
WHERE f_int1 = new.f_int1;
9822
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9823
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9825
# check trigger-3 success: 1
9827
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9828
f_int2 = CAST(f_char1 AS SIGNED INT),
9829
f_charbig = 'just inserted'
9830
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9832
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9833
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9834
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9835
'just inserted' FROM t0_template
9836
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9837
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
9839
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9840
f_charbig = 'updated by trigger'
9841
WHERE f_int1 = - old.f_int1;
9843
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9844
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9846
# check trigger-4 success: 1
9848
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9849
f_int2 = CAST(f_char1 AS SIGNED INT),
9850
f_charbig = 'just inserted'
9851
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9853
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9854
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9855
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9856
'just inserted' FROM t0_template
9857
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9858
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9860
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9861
f_charbig = 'updated by trigger'
9862
WHERE f_int1 = new.f_int1;
9864
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9865
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9867
# check trigger-5 success: 1
9869
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9870
f_int2 = CAST(f_char1 AS SIGNED INT),
9871
f_charbig = 'just inserted'
9872
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9874
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9875
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9876
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9877
'just inserted' FROM t0_template
9878
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9879
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
9881
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9882
f_charbig = 'updated by trigger'
9883
WHERE f_int1 = - old.f_int1;
9885
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
9886
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9888
# check trigger-6 success: 1
9890
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9891
f_int2 = CAST(f_char1 AS SIGNED INT),
9892
f_charbig = 'just inserted'
9893
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9895
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9896
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9897
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9898
'just inserted' FROM t0_template
9899
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9900
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
9902
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9903
f_charbig = 'updated by trigger'
9904
WHERE f_int1 = - old.f_int1;
9907
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9909
# check trigger-7 success: 1
9911
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9912
f_int2 = CAST(f_char1 AS SIGNED INT),
9913
f_charbig = 'just inserted'
9914
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9916
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9917
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
9918
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
9919
'just inserted' FROM t0_template
9920
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9921
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
9923
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
9924
f_charbig = 'updated by trigger'
9925
WHERE f_int1 = - old.f_int1;
9928
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
9930
# check trigger-8 success: 1
9932
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9933
f_int2 = CAST(f_char1 AS SIGNED INT),
9934
f_charbig = 'just inserted'
9935
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
9937
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9939
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
9940
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9942
SET new.f_int1 = old.f_int1 + @max_row,
9943
new.f_int2 = old.f_int2 - @max_row,
9944
new.f_charbig = '####updated per update trigger####';
9947
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9948
f_charbig = '####updated per update statement itself####';
9950
# check trigger-9 success: 1
9952
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9953
f_int2 = CAST(f_char1 AS SIGNED INT),
9954
f_charbig = CONCAT('===',f_char1,'===');
9955
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
9957
SET new.f_int1 = new.f_int1 + @max_row,
9958
new.f_int2 = new.f_int2 - @max_row,
9959
new.f_charbig = '####updated per update trigger####';
9962
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
9963
f_charbig = '####updated per update statement itself####';
9965
# check trigger-10 success: 1
9967
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
9968
f_int2 = CAST(f_char1 AS SIGNED INT),
9969
f_charbig = CONCAT('===',f_char1,'===');
9970
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9972
SET new.f_int1 = @my_max1 + @counter,
9973
new.f_int2 = @my_min2 - @counter,
9974
new.f_charbig = '####updated per insert trigger####';
9975
SET @counter = @counter + 1;
9978
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
9979
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
9980
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
9981
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
9982
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
9986
# check trigger-11 success: 1
9988
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
9989
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
9990
AND f_charbig = '####updated per insert trigger####';
9991
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
9993
SET new.f_int1 = @my_max1 + @counter,
9994
new.f_int2 = @my_min2 - @counter,
9995
new.f_charbig = '####updated per insert trigger####';
9996
SET @counter = @counter + 1;
9999
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10000
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10001
SELECT CAST(f_int1 AS CHAR),
10002
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10003
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10005
DROP TRIGGER trg_3;
10007
# check trigger-12 success: 1
10009
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10010
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10011
AND f_charbig = '####updated per insert trigger####';
10013
Table Op Msg_type Msg_text
10014
test.t1 analyze status OK
10015
CHECK TABLE t1 EXTENDED;
10016
Table Op Msg_type Msg_text
10017
test.t1 check status OK
10018
CHECKSUM TABLE t1 EXTENDED;
10020
test.t1 <some_value>
10022
Table Op Msg_type Msg_text
10023
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
10024
test.t1 optimize status OK
10025
# check layout success: 1
10026
REPAIR TABLE t1 EXTENDED;
10027
Table Op Msg_type Msg_text
10028
test.t1 repair note The storage engine for the table doesn't support repair
10029
# check layout success: 1
10032
# check TRUNCATE success: 1
10033
# check layout success: 1
10034
# End usability test (inc/partition_check.inc)
10041
f_charbig VARCHAR(1000)
10042
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
10044
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int1 + 1)
10045
(PARTITION part1 VALUES IN (0)
10046
(SUBPARTITION sp11, SUBPARTITION sp12),
10047
PARTITION part2 VALUES IN (1)
10048
(SUBPARTITION sp21, SUBPARTITION sp22),
10049
PARTITION part3 VALUES IN (2)
10050
(SUBPARTITION sp31, SUBPARTITION sp32),
10051
PARTITION part4 VALUES IN (NULL)
10052
(SUBPARTITION sp41, SUBPARTITION sp42));
10053
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10054
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10055
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10056
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
10057
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10058
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10059
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10060
# Start usability test (inc/partition_check.inc)
10062
SHOW CREATE TABLE t1;
10064
t1 CREATE TABLE `t1` (
10065
`f_int1` int(11) DEFAULT NULL,
10066
`f_int2` int(11) DEFAULT NULL,
10067
`f_char1` char(20) DEFAULT NULL,
10068
`f_char2` char(20) DEFAULT NULL,
10069
`f_charbig` varchar(1000) DEFAULT NULL
10070
) ENGINE=InnoDB DEFAULT CHARSET=latin1
10071
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
10072
SUBPARTITION BY HASH (f_int1 + 1)
10073
(PARTITION part1 VALUES IN (0)
10074
(SUBPARTITION sp11 ENGINE = InnoDB,
10075
SUBPARTITION sp12 ENGINE = InnoDB),
10076
PARTITION part2 VALUES IN (1)
10077
(SUBPARTITION sp21 ENGINE = InnoDB,
10078
SUBPARTITION sp22 ENGINE = InnoDB),
10079
PARTITION part3 VALUES IN (2)
10080
(SUBPARTITION sp31 ENGINE = InnoDB,
10081
SUBPARTITION sp32 ENGINE = InnoDB),
10082
PARTITION part4 VALUES IN (NULL)
10083
(SUBPARTITION sp41 ENGINE = InnoDB,
10084
SUBPARTITION sp42 ENGINE = InnoDB)) */
10086
# check prerequisites-1 success: 1
10087
# check COUNT(*) success: 1
10088
# check MIN/MAX(f_int1) success: 1
10089
# check MIN/MAX(f_int2) success: 1
10090
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10091
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10092
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10093
WHERE f_int1 IN (2,3);
10094
# check prerequisites-3 success: 1
10095
DELETE FROM t1 WHERE f_charbig = 'delete me';
10096
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
10097
# check read via f_int1 success: 1
10098
# check read via f_int2 success: 1
10100
# check multiple-1 success: 1
10101
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10103
# check multiple-2 success: 1
10104
INSERT INTO t1 SELECT * FROM t0_template
10105
WHERE MOD(f_int1,3) = 0;
10107
# check multiple-3 success: 1
10108
UPDATE t1 SET f_int1 = f_int1 + @max_row
10109
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10110
AND @max_row_div2 + @max_row_div4;
10112
# check multiple-4 success: 1
10114
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10115
AND @max_row_div2 + @max_row_div4 + @max_row;
10117
# check multiple-5 success: 1
10118
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10120
SET f_int1 = @cur_value , f_int2 = @cur_value,
10121
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10122
f_charbig = '#SINGLE#';
10124
# check single-1 success: 1
10125
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10127
SET f_int1 = @cur_value , f_int2 = @cur_value,
10128
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10129
f_charbig = '#SINGLE#';
10131
# check single-2 success: 1
10132
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10133
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10134
UPDATE t1 SET f_int1 = @cur_value2
10135
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10137
# check single-3 success: 1
10138
SET @cur_value1= -1;
10139
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10140
UPDATE t1 SET f_int1 = @cur_value1
10141
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10143
# check single-4 success: 1
10144
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10145
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10147
# check single-5 success: 1
10148
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10150
# check single-6 success: 1
10151
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10153
# check single-7 success: 1
10154
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10155
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10156
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10157
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10158
f_charbig = '#NULL#';
10160
SET f_int1 = NULL , f_int2 = -@max_row,
10161
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10162
f_charbig = '#NULL#';
10163
# check null success: 1
10165
# check null-1 success: 1
10166
UPDATE t1 SET f_int1 = -@max_row
10167
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10168
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10170
# check null-2 success: 1
10171
UPDATE t1 SET f_int1 = NULL
10172
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10173
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10175
# check null-3 success: 1
10177
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10178
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10180
# check null-4 success: 1
10182
WHERE f_int1 = 0 AND f_int2 = 0
10183
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10184
AND f_charbig = '#NULL#';
10186
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10187
SELECT f_int1, f_int1, '', '', 'was inserted'
10188
FROM t0_template source_tab
10189
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10191
# check transactions-1 success: 1
10194
# check transactions-2 success: 1
10197
# check transactions-3 success: 1
10198
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10202
# check transactions-4 success: 1
10203
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10204
SELECT f_int1, f_int1, '', '', 'was inserted'
10205
FROM t0_template source_tab
10206
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10208
# check transactions-5 success: 1
10211
# check transactions-6 success: 1
10212
# INFO: Storage engine used for t1 seems to be transactional.
10215
# check transactions-7 success: 1
10216
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10218
SET @@session.sql_mode = 'traditional';
10219
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10220
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10221
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10222
'', '', 'was inserted' FROM t0_template
10223
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10224
ERROR 22012: Division by 0
10227
# check transactions-8 success: 1
10228
# INFO: Storage engine used for t1 seems to be able to revert
10229
# changes made by the failing statement.
10230
SET @@session.sql_mode = '';
10232
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10234
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10236
# check special-1 success: 1
10237
UPDATE t1 SET f_charbig = '';
10239
# check special-2 success: 1
10240
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10241
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10242
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10243
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10244
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10245
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10246
'just inserted' FROM t0_template
10247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10248
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10250
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10251
f_charbig = 'updated by trigger'
10252
WHERE f_int1 = new.f_int1;
10254
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10255
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10256
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10258
# check trigger-1 success: 1
10259
DROP TRIGGER trg_1;
10260
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10261
f_int2 = CAST(f_char1 AS SIGNED INT),
10262
f_charbig = 'just inserted'
10263
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10265
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10266
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10267
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10268
'just inserted' FROM t0_template
10269
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10270
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10272
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10273
f_charbig = 'updated by trigger'
10274
WHERE f_int1 = new.f_int1;
10276
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10277
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10278
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10280
# check trigger-2 success: 1
10281
DROP TRIGGER trg_1;
10282
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10283
f_int2 = CAST(f_char1 AS SIGNED INT),
10284
f_charbig = 'just inserted'
10285
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10287
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10288
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10289
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10290
'just inserted' FROM t0_template
10291
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10292
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10294
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10295
f_charbig = 'updated by trigger'
10296
WHERE f_int1 = new.f_int1;
10298
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10299
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10301
# check trigger-3 success: 1
10302
DROP TRIGGER trg_1;
10303
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10304
f_int2 = CAST(f_char1 AS SIGNED INT),
10305
f_charbig = 'just inserted'
10306
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10308
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10309
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10310
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10311
'just inserted' FROM t0_template
10312
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10313
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10315
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10316
f_charbig = 'updated by trigger'
10317
WHERE f_int1 = - old.f_int1;
10319
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10320
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10322
# check trigger-4 success: 1
10323
DROP TRIGGER trg_1;
10324
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10325
f_int2 = CAST(f_char1 AS SIGNED INT),
10326
f_charbig = 'just inserted'
10327
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10329
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10330
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10331
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10332
'just inserted' FROM t0_template
10333
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10334
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10336
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10337
f_charbig = 'updated by trigger'
10338
WHERE f_int1 = new.f_int1;
10340
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10341
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10343
# check trigger-5 success: 1
10344
DROP TRIGGER trg_1;
10345
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10346
f_int2 = CAST(f_char1 AS SIGNED INT),
10347
f_charbig = 'just inserted'
10348
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10350
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10351
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10352
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10353
'just inserted' FROM t0_template
10354
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10355
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10357
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10358
f_charbig = 'updated by trigger'
10359
WHERE f_int1 = - old.f_int1;
10361
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10362
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10364
# check trigger-6 success: 1
10365
DROP TRIGGER trg_1;
10366
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10367
f_int2 = CAST(f_char1 AS SIGNED INT),
10368
f_charbig = 'just inserted'
10369
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10371
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10372
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10373
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10374
'just inserted' FROM t0_template
10375
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10376
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10378
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10379
f_charbig = 'updated by trigger'
10380
WHERE f_int1 = - old.f_int1;
10383
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10385
# check trigger-7 success: 1
10386
DROP TRIGGER trg_1;
10387
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10388
f_int2 = CAST(f_char1 AS SIGNED INT),
10389
f_charbig = 'just inserted'
10390
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10392
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10393
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10394
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10395
'just inserted' FROM t0_template
10396
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10397
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10399
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10400
f_charbig = 'updated by trigger'
10401
WHERE f_int1 = - old.f_int1;
10404
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10406
# check trigger-8 success: 1
10407
DROP TRIGGER trg_1;
10408
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10409
f_int2 = CAST(f_char1 AS SIGNED INT),
10410
f_charbig = 'just inserted'
10411
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10413
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10415
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10416
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10418
SET new.f_int1 = old.f_int1 + @max_row,
10419
new.f_int2 = old.f_int2 - @max_row,
10420
new.f_charbig = '####updated per update trigger####';
10423
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10424
f_charbig = '####updated per update statement itself####';
10426
# check trigger-9 success: 1
10427
DROP TRIGGER trg_2;
10428
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10429
f_int2 = CAST(f_char1 AS SIGNED INT),
10430
f_charbig = CONCAT('===',f_char1,'===');
10431
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10433
SET new.f_int1 = new.f_int1 + @max_row,
10434
new.f_int2 = new.f_int2 - @max_row,
10435
new.f_charbig = '####updated per update trigger####';
10438
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10439
f_charbig = '####updated per update statement itself####';
10441
# check trigger-10 success: 1
10442
DROP TRIGGER trg_2;
10443
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10444
f_int2 = CAST(f_char1 AS SIGNED INT),
10445
f_charbig = CONCAT('===',f_char1,'===');
10446
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10448
SET new.f_int1 = @my_max1 + @counter,
10449
new.f_int2 = @my_min2 - @counter,
10450
new.f_charbig = '####updated per insert trigger####';
10451
SET @counter = @counter + 1;
10454
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10455
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10456
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10457
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10458
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10460
DROP TRIGGER trg_3;
10462
# check trigger-11 success: 1
10464
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10465
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10466
AND f_charbig = '####updated per insert trigger####';
10467
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10469
SET new.f_int1 = @my_max1 + @counter,
10470
new.f_int2 = @my_min2 - @counter,
10471
new.f_charbig = '####updated per insert trigger####';
10472
SET @counter = @counter + 1;
10475
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10476
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10477
SELECT CAST(f_int1 AS CHAR),
10478
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10479
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10481
DROP TRIGGER trg_3;
10483
# check trigger-12 success: 1
10485
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10486
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10487
AND f_charbig = '####updated per insert trigger####';
10489
Table Op Msg_type Msg_text
10490
test.t1 analyze status OK
10491
CHECK TABLE t1 EXTENDED;
10492
Table Op Msg_type Msg_text
10493
test.t1 check status OK
10494
CHECKSUM TABLE t1 EXTENDED;
10496
test.t1 <some_value>
10498
Table Op Msg_type Msg_text
10499
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
10500
test.t1 optimize status OK
10501
# check layout success: 1
10502
REPAIR TABLE t1 EXTENDED;
10503
Table Op Msg_type Msg_text
10504
test.t1 repair note The storage engine for the table doesn't support repair
10505
# check layout success: 1
10508
# check TRUNCATE success: 1
10509
# check layout success: 1
10510
# End usability test (inc/partition_check.inc)
10517
f_charbig VARCHAR(1000)
10518
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
10520
PARTITION BY LIST(ABS(MOD(f_int1,2)))
10521
SUBPARTITION BY KEY(f_int1) SUBPARTITIONS 3
10522
(PARTITION part1 VALUES IN (0),
10523
PARTITION part2 VALUES IN (1),
10524
PARTITION part3 VALUES IN (NULL));
10525
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10526
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10527
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10528
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
10529
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10530
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10531
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10532
# Start usability test (inc/partition_check.inc)
10534
SHOW CREATE TABLE t1;
10536
t1 CREATE TABLE `t1` (
10537
`f_int1` int(11) DEFAULT NULL,
10538
`f_int2` int(11) DEFAULT NULL,
10539
`f_char1` char(20) DEFAULT NULL,
10540
`f_char2` char(20) DEFAULT NULL,
10541
`f_charbig` varchar(1000) DEFAULT NULL
10542
) ENGINE=InnoDB DEFAULT CHARSET=latin1
10543
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
10544
SUBPARTITION BY KEY (f_int1)
10546
(PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
10547
PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
10548
PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
10550
# check prerequisites-1 success: 1
10551
# check COUNT(*) success: 1
10552
# check MIN/MAX(f_int1) success: 1
10553
# check MIN/MAX(f_int2) success: 1
10554
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10555
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10556
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
10557
WHERE f_int1 IN (2,3);
10558
# check prerequisites-3 success: 1
10559
DELETE FROM t1 WHERE f_charbig = 'delete me';
10560
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
10561
# check read via f_int1 success: 1
10562
# check read via f_int2 success: 1
10564
# check multiple-1 success: 1
10565
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
10567
# check multiple-2 success: 1
10568
INSERT INTO t1 SELECT * FROM t0_template
10569
WHERE MOD(f_int1,3) = 0;
10571
# check multiple-3 success: 1
10572
UPDATE t1 SET f_int1 = f_int1 + @max_row
10573
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
10574
AND @max_row_div2 + @max_row_div4;
10576
# check multiple-4 success: 1
10578
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
10579
AND @max_row_div2 + @max_row_div4 + @max_row;
10581
# check multiple-5 success: 1
10582
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
10584
SET f_int1 = @cur_value , f_int2 = @cur_value,
10585
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10586
f_charbig = '#SINGLE#';
10588
# check single-1 success: 1
10589
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
10591
SET f_int1 = @cur_value , f_int2 = @cur_value,
10592
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
10593
f_charbig = '#SINGLE#';
10595
# check single-2 success: 1
10596
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
10597
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
10598
UPDATE t1 SET f_int1 = @cur_value2
10599
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
10601
# check single-3 success: 1
10602
SET @cur_value1= -1;
10603
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
10604
UPDATE t1 SET f_int1 = @cur_value1
10605
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
10607
# check single-4 success: 1
10608
SELECT MAX(f_int1) INTO @cur_value FROM t1;
10609
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
10611
# check single-5 success: 1
10612
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
10614
# check single-6 success: 1
10615
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
10617
# check single-7 success: 1
10618
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
10619
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
10620
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
10621
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
10622
f_charbig = '#NULL#';
10624
SET f_int1 = NULL , f_int2 = -@max_row,
10625
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
10626
f_charbig = '#NULL#';
10627
# check null success: 1
10629
# check null-1 success: 1
10630
UPDATE t1 SET f_int1 = -@max_row
10631
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10632
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10634
# check null-2 success: 1
10635
UPDATE t1 SET f_int1 = NULL
10636
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10637
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10639
# check null-3 success: 1
10641
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
10642
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
10644
# check null-4 success: 1
10646
WHERE f_int1 = 0 AND f_int2 = 0
10647
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
10648
AND f_charbig = '#NULL#';
10650
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10651
SELECT f_int1, f_int1, '', '', 'was inserted'
10652
FROM t0_template source_tab
10653
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10655
# check transactions-1 success: 1
10658
# check transactions-2 success: 1
10661
# check transactions-3 success: 1
10662
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10666
# check transactions-4 success: 1
10667
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10668
SELECT f_int1, f_int1, '', '', 'was inserted'
10669
FROM t0_template source_tab
10670
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10672
# check transactions-5 success: 1
10675
# check transactions-6 success: 1
10676
# INFO: Storage engine used for t1 seems to be transactional.
10679
# check transactions-7 success: 1
10680
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10682
SET @@session.sql_mode = 'traditional';
10683
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
10684
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10685
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
10686
'', '', 'was inserted' FROM t0_template
10687
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
10688
ERROR 22012: Division by 0
10691
# check transactions-8 success: 1
10692
# INFO: Storage engine used for t1 seems to be able to revert
10693
# changes made by the failing statement.
10694
SET @@session.sql_mode = '';
10696
DELETE FROM t1 WHERE f_charbig = 'was inserted';
10698
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
10700
# check special-1 success: 1
10701
UPDATE t1 SET f_charbig = '';
10703
# check special-2 success: 1
10704
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
10705
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10706
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
10707
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10708
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10709
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10710
'just inserted' FROM t0_template
10711
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10712
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
10714
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10715
f_charbig = 'updated by trigger'
10716
WHERE f_int1 = new.f_int1;
10718
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10719
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10720
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10722
# check trigger-1 success: 1
10723
DROP TRIGGER trg_1;
10724
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10725
f_int2 = CAST(f_char1 AS SIGNED INT),
10726
f_charbig = 'just inserted'
10727
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10729
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10730
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10731
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10732
'just inserted' FROM t0_template
10733
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10734
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
10736
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10737
f_charbig = 'updated by trigger'
10738
WHERE f_int1 = new.f_int1;
10740
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10741
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
10742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10744
# check trigger-2 success: 1
10745
DROP TRIGGER trg_1;
10746
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10747
f_int2 = CAST(f_char1 AS SIGNED INT),
10748
f_charbig = 'just inserted'
10749
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10751
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10752
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10753
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10754
'just inserted' FROM t0_template
10755
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10756
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10758
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10759
f_charbig = 'updated by trigger'
10760
WHERE f_int1 = new.f_int1;
10762
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10763
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10765
# check trigger-3 success: 1
10766
DROP TRIGGER trg_1;
10767
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10768
f_int2 = CAST(f_char1 AS SIGNED INT),
10769
f_charbig = 'just inserted'
10770
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10772
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10773
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10774
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10775
'just inserted' FROM t0_template
10776
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10777
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
10779
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10780
f_charbig = 'updated by trigger'
10781
WHERE f_int1 = - old.f_int1;
10783
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10784
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10786
# check trigger-4 success: 1
10787
DROP TRIGGER trg_1;
10788
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10789
f_int2 = CAST(f_char1 AS SIGNED INT),
10790
f_charbig = 'just inserted'
10791
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10793
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10794
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10795
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10796
'just inserted' FROM t0_template
10797
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10798
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10800
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10801
f_charbig = 'updated by trigger'
10802
WHERE f_int1 = new.f_int1;
10804
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10805
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10807
# check trigger-5 success: 1
10808
DROP TRIGGER trg_1;
10809
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10810
f_int2 = CAST(f_char1 AS SIGNED INT),
10811
f_charbig = 'just inserted'
10812
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10814
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10815
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10816
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10817
'just inserted' FROM t0_template
10818
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10819
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
10821
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10822
f_charbig = 'updated by trigger'
10823
WHERE f_int1 = - old.f_int1;
10825
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
10826
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10828
# check trigger-6 success: 1
10829
DROP TRIGGER trg_1;
10830
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10831
f_int2 = CAST(f_char1 AS SIGNED INT),
10832
f_charbig = 'just inserted'
10833
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10835
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10836
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10837
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10838
'just inserted' FROM t0_template
10839
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10840
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
10842
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10843
f_charbig = 'updated by trigger'
10844
WHERE f_int1 = - old.f_int1;
10847
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10849
# check trigger-7 success: 1
10850
DROP TRIGGER trg_1;
10851
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10852
f_int2 = CAST(f_char1 AS SIGNED INT),
10853
f_charbig = 'just inserted'
10854
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10856
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10857
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
10858
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
10859
'just inserted' FROM t0_template
10860
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10861
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
10863
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
10864
f_charbig = 'updated by trigger'
10865
WHERE f_int1 = - old.f_int1;
10868
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
10870
# check trigger-8 success: 1
10871
DROP TRIGGER trg_1;
10872
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10873
f_int2 = CAST(f_char1 AS SIGNED INT),
10874
f_charbig = 'just inserted'
10875
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
10877
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10879
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
10880
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10882
SET new.f_int1 = old.f_int1 + @max_row,
10883
new.f_int2 = old.f_int2 - @max_row,
10884
new.f_charbig = '####updated per update trigger####';
10887
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10888
f_charbig = '####updated per update statement itself####';
10890
# check trigger-9 success: 1
10891
DROP TRIGGER trg_2;
10892
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10893
f_int2 = CAST(f_char1 AS SIGNED INT),
10894
f_charbig = CONCAT('===',f_char1,'===');
10895
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
10897
SET new.f_int1 = new.f_int1 + @max_row,
10898
new.f_int2 = new.f_int2 - @max_row,
10899
new.f_charbig = '####updated per update trigger####';
10902
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
10903
f_charbig = '####updated per update statement itself####';
10905
# check trigger-10 success: 1
10906
DROP TRIGGER trg_2;
10907
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
10908
f_int2 = CAST(f_char1 AS SIGNED INT),
10909
f_charbig = CONCAT('===',f_char1,'===');
10910
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10912
SET new.f_int1 = @my_max1 + @counter,
10913
new.f_int2 = @my_min2 - @counter,
10914
new.f_charbig = '####updated per insert trigger####';
10915
SET @counter = @counter + 1;
10918
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10919
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
10920
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
10921
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10922
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10924
DROP TRIGGER trg_3;
10926
# check trigger-11 success: 1
10928
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10929
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10930
AND f_charbig = '####updated per insert trigger####';
10931
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
10933
SET new.f_int1 = @my_max1 + @counter,
10934
new.f_int2 = @my_min2 - @counter,
10935
new.f_charbig = '####updated per insert trigger####';
10936
SET @counter = @counter + 1;
10939
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
10940
INSERT INTO t1 (f_char1, f_char2, f_charbig)
10941
SELECT CAST(f_int1 AS CHAR),
10942
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
10943
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
10945
DROP TRIGGER trg_3;
10947
# check trigger-12 success: 1
10949
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
10950
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
10951
AND f_charbig = '####updated per insert trigger####';
10953
Table Op Msg_type Msg_text
10954
test.t1 analyze status OK
10955
CHECK TABLE t1 EXTENDED;
10956
Table Op Msg_type Msg_text
10957
test.t1 check status OK
10958
CHECKSUM TABLE t1 EXTENDED;
10960
test.t1 <some_value>
10962
Table Op Msg_type Msg_text
10963
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
10964
test.t1 optimize status OK
10965
# check layout success: 1
10966
REPAIR TABLE t1 EXTENDED;
10967
Table Op Msg_type Msg_text
10968
test.t1 repair note The storage engine for the table doesn't support repair
10969
# check layout success: 1
10972
# check TRUNCATE success: 1
10973
# check layout success: 1
10974
# End usability test (inc/partition_check.inc)
10976
#------------------------------------------------------------------------
10977
# 2.2 Partitioning function contains two columns (f_int1,f_int2)
10978
#------------------------------------------------------------------------
10979
# 2.2.1 DROP PRIMARY KEY consisting of two columns
10980
DROP TABLE IF EXISTS t1;
10986
f_charbig VARCHAR(1000)
10987
, PRIMARY KEY(f_int1,f_int2)
10989
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
10990
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10991
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10992
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
10993
ALTER TABLE t1 DROP PRIMARY KEY;
10994
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
10995
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
10996
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
10997
# Start usability test (inc/partition_check.inc)
10999
SHOW CREATE TABLE t1;
11001
t1 CREATE TABLE `t1` (
11002
`f_int1` int(11) NOT NULL DEFAULT '0',
11003
`f_int2` int(11) NOT NULL DEFAULT '0',
11004
`f_char1` char(20) DEFAULT NULL,
11005
`f_char2` char(20) DEFAULT NULL,
11006
`f_charbig` varchar(1000) DEFAULT NULL
11007
) ENGINE=InnoDB DEFAULT CHARSET=latin1
11008
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
11011
# check prerequisites-1 success: 1
11012
# check COUNT(*) success: 1
11013
# check MIN/MAX(f_int1) success: 1
11014
# check MIN/MAX(f_int2) success: 1
11015
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11016
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11017
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11018
WHERE f_int1 IN (2,3);
11019
# check prerequisites-3 success: 1
11020
DELETE FROM t1 WHERE f_charbig = 'delete me';
11021
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
11022
# check read via f_int1 success: 1
11023
# check read via f_int2 success: 1
11025
# check multiple-1 success: 1
11026
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11028
# check multiple-2 success: 1
11029
INSERT INTO t1 SELECT * FROM t0_template
11030
WHERE MOD(f_int1,3) = 0;
11032
# check multiple-3 success: 1
11033
UPDATE t1 SET f_int1 = f_int1 + @max_row
11034
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11035
AND @max_row_div2 + @max_row_div4;
11037
# check multiple-4 success: 1
11039
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11040
AND @max_row_div2 + @max_row_div4 + @max_row;
11042
# check multiple-5 success: 1
11043
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11045
SET f_int1 = @cur_value , f_int2 = @cur_value,
11046
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11047
f_charbig = '#SINGLE#';
11049
# check single-1 success: 1
11050
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11052
SET f_int1 = @cur_value , f_int2 = @cur_value,
11053
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11054
f_charbig = '#SINGLE#';
11056
# check single-2 success: 1
11057
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11058
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11059
UPDATE t1 SET f_int1 = @cur_value2
11060
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11062
# check single-3 success: 1
11063
SET @cur_value1= -1;
11064
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11065
UPDATE t1 SET f_int1 = @cur_value1
11066
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11068
# check single-4 success: 1
11069
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11070
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11072
# check single-5 success: 1
11073
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11075
# check single-6 success: 1
11076
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11078
# check single-7 success: 1
11079
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11080
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11081
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11082
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11083
f_charbig = '#NULL#';
11085
SET f_int1 = NULL , f_int2 = -@max_row,
11086
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11087
f_charbig = '#NULL#';
11088
ERROR 23000: Column 'f_int1' cannot be null
11089
# check null success: 1
11091
WHERE f_int1 = 0 AND f_int2 = 0
11092
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11093
AND f_charbig = '#NULL#';
11095
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11096
SELECT f_int1, f_int1, '', '', 'was inserted'
11097
FROM t0_template source_tab
11098
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11100
# check transactions-1 success: 1
11103
# check transactions-2 success: 1
11106
# check transactions-3 success: 1
11107
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11111
# check transactions-4 success: 1
11112
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11113
SELECT f_int1, f_int1, '', '', 'was inserted'
11114
FROM t0_template source_tab
11115
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11117
# check transactions-5 success: 1
11120
# check transactions-6 success: 1
11121
# INFO: Storage engine used for t1 seems to be transactional.
11124
# check transactions-7 success: 1
11125
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11127
SET @@session.sql_mode = 'traditional';
11128
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11129
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11130
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11131
'', '', 'was inserted' FROM t0_template
11132
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11133
ERROR 22012: Division by 0
11136
# check transactions-8 success: 1
11137
# INFO: Storage engine used for t1 seems to be able to revert
11138
# changes made by the failing statement.
11139
SET @@session.sql_mode = '';
11141
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11143
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11145
# check special-1 success: 1
11146
UPDATE t1 SET f_charbig = '';
11148
# check special-2 success: 1
11149
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11150
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11151
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11152
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11153
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11154
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11155
'just inserted' FROM t0_template
11156
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11157
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11159
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11160
f_charbig = 'updated by trigger'
11161
WHERE f_int1 = new.f_int1;
11163
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11164
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11165
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11167
# check trigger-1 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 AFTER INSERT 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 = new.f_int1;
11185
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11186
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11187
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11189
# check trigger-2 success: 1
11190
DROP TRIGGER trg_1;
11191
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11192
f_int2 = CAST(f_char1 AS SIGNED INT),
11193
f_charbig = 'just inserted'
11194
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11196
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11197
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11198
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11199
'just inserted' FROM t0_template
11200
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11201
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11203
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11204
f_charbig = 'updated by trigger'
11205
WHERE f_int1 = new.f_int1;
11207
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11208
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11210
# check trigger-3 success: 1
11211
DROP TRIGGER trg_1;
11212
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11213
f_int2 = CAST(f_char1 AS SIGNED INT),
11214
f_charbig = 'just inserted'
11215
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11217
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11218
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11219
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11220
'just inserted' FROM t0_template
11221
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11222
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11224
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11225
f_charbig = 'updated by trigger'
11226
WHERE f_int1 = - old.f_int1;
11228
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11229
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11231
# check trigger-4 success: 1
11232
DROP TRIGGER trg_1;
11233
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11234
f_int2 = CAST(f_char1 AS SIGNED INT),
11235
f_charbig = 'just inserted'
11236
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11238
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11239
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11240
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11241
'just inserted' FROM t0_template
11242
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11243
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11245
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11246
f_charbig = 'updated by trigger'
11247
WHERE f_int1 = new.f_int1;
11249
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11250
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11252
# check trigger-5 success: 1
11253
DROP TRIGGER trg_1;
11254
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11255
f_int2 = CAST(f_char1 AS SIGNED INT),
11256
f_charbig = 'just inserted'
11257
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11259
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11260
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11261
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11262
'just inserted' FROM t0_template
11263
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11264
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11266
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11267
f_charbig = 'updated by trigger'
11268
WHERE f_int1 = - old.f_int1;
11270
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11271
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11273
# check trigger-6 success: 1
11274
DROP TRIGGER trg_1;
11275
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11276
f_int2 = CAST(f_char1 AS SIGNED INT),
11277
f_charbig = 'just inserted'
11278
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11280
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11281
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11282
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11283
'just inserted' FROM t0_template
11284
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11285
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11287
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11288
f_charbig = 'updated by trigger'
11289
WHERE f_int1 = - old.f_int1;
11292
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11294
# check trigger-7 success: 1
11295
DROP TRIGGER trg_1;
11296
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11297
f_int2 = CAST(f_char1 AS SIGNED INT),
11298
f_charbig = 'just inserted'
11299
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11301
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11302
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11303
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11304
'just inserted' FROM t0_template
11305
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11306
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11308
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11309
f_charbig = 'updated by trigger'
11310
WHERE f_int1 = - old.f_int1;
11313
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11315
# check trigger-8 success: 1
11316
DROP TRIGGER trg_1;
11317
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11318
f_int2 = CAST(f_char1 AS SIGNED INT),
11319
f_charbig = 'just inserted'
11320
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11322
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11324
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11325
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11327
SET new.f_int1 = old.f_int1 + @max_row,
11328
new.f_int2 = old.f_int2 - @max_row,
11329
new.f_charbig = '####updated per update trigger####';
11332
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11333
f_charbig = '####updated per update statement itself####';
11335
# check trigger-9 success: 1
11336
DROP TRIGGER trg_2;
11337
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11338
f_int2 = CAST(f_char1 AS SIGNED INT),
11339
f_charbig = CONCAT('===',f_char1,'===');
11340
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11342
SET new.f_int1 = new.f_int1 + @max_row,
11343
new.f_int2 = new.f_int2 - @max_row,
11344
new.f_charbig = '####updated per update trigger####';
11347
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11348
f_charbig = '####updated per update statement itself####';
11350
# check trigger-10 success: 1
11351
DROP TRIGGER trg_2;
11352
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11353
f_int2 = CAST(f_char1 AS SIGNED INT),
11354
f_charbig = CONCAT('===',f_char1,'===');
11355
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11357
SET new.f_int1 = @my_max1 + @counter,
11358
new.f_int2 = @my_min2 - @counter,
11359
new.f_charbig = '####updated per insert trigger####';
11360
SET @counter = @counter + 1;
11363
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11364
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11365
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11366
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11367
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11369
DROP TRIGGER trg_3;
11371
# check trigger-11 success: 1
11373
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11374
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11375
AND f_charbig = '####updated per insert trigger####';
11376
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11378
SET new.f_int1 = @my_max1 + @counter,
11379
new.f_int2 = @my_min2 - @counter,
11380
new.f_charbig = '####updated per insert trigger####';
11381
SET @counter = @counter + 1;
11384
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11385
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11386
SELECT CAST(f_int1 AS CHAR),
11387
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11388
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11390
DROP TRIGGER trg_3;
11392
# check trigger-12 success: 1
11394
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11395
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11396
AND f_charbig = '####updated per insert trigger####';
11398
Table Op Msg_type Msg_text
11399
test.t1 analyze status OK
11400
CHECK TABLE t1 EXTENDED;
11401
Table Op Msg_type Msg_text
11402
test.t1 check status OK
11403
CHECKSUM TABLE t1 EXTENDED;
11405
test.t1 <some_value>
11407
Table Op Msg_type Msg_text
11408
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
11409
test.t1 optimize status OK
11410
# check layout success: 1
11411
REPAIR TABLE t1 EXTENDED;
11412
Table Op Msg_type Msg_text
11413
test.t1 repair note The storage engine for the table doesn't support repair
11414
# check layout success: 1
11417
# check TRUNCATE success: 1
11418
# check layout success: 1
11419
# End usability test (inc/partition_check.inc)
11426
f_charbig VARCHAR(1000)
11427
, PRIMARY KEY(f_int1,f_int2)
11429
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
11430
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11431
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11432
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11433
ALTER TABLE t1 DROP PRIMARY KEY;
11434
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11435
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11436
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11437
# Start usability test (inc/partition_check.inc)
11439
SHOW CREATE TABLE t1;
11441
t1 CREATE TABLE `t1` (
11442
`f_int1` int(11) NOT NULL DEFAULT '0',
11443
`f_int2` int(11) NOT NULL DEFAULT '0',
11444
`f_char1` char(20) DEFAULT NULL,
11445
`f_char2` char(20) DEFAULT NULL,
11446
`f_charbig` varchar(1000) DEFAULT NULL
11447
) ENGINE=InnoDB DEFAULT CHARSET=latin1
11448
/*!50100 PARTITION BY KEY (f_int1,f_int2)
11451
# check prerequisites-1 success: 1
11452
# check COUNT(*) success: 1
11453
# check MIN/MAX(f_int1) success: 1
11454
# check MIN/MAX(f_int2) success: 1
11455
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11456
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11457
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11458
WHERE f_int1 IN (2,3);
11459
# check prerequisites-3 success: 1
11460
DELETE FROM t1 WHERE f_charbig = 'delete me';
11461
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
11462
# check read via f_int1 success: 1
11463
# check read via f_int2 success: 1
11465
# check multiple-1 success: 1
11466
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11468
# check multiple-2 success: 1
11469
INSERT INTO t1 SELECT * FROM t0_template
11470
WHERE MOD(f_int1,3) = 0;
11472
# check multiple-3 success: 1
11473
UPDATE t1 SET f_int1 = f_int1 + @max_row
11474
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11475
AND @max_row_div2 + @max_row_div4;
11477
# check multiple-4 success: 1
11479
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11480
AND @max_row_div2 + @max_row_div4 + @max_row;
11482
# check multiple-5 success: 1
11483
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11485
SET f_int1 = @cur_value , f_int2 = @cur_value,
11486
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11487
f_charbig = '#SINGLE#';
11489
# check single-1 success: 1
11490
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11492
SET f_int1 = @cur_value , f_int2 = @cur_value,
11493
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11494
f_charbig = '#SINGLE#';
11496
# check single-2 success: 1
11497
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11498
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11499
UPDATE t1 SET f_int1 = @cur_value2
11500
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11502
# check single-3 success: 1
11503
SET @cur_value1= -1;
11504
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11505
UPDATE t1 SET f_int1 = @cur_value1
11506
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11508
# check single-4 success: 1
11509
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11510
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11512
# check single-5 success: 1
11513
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11515
# check single-6 success: 1
11516
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11518
# check single-7 success: 1
11519
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11520
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11521
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11522
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11523
f_charbig = '#NULL#';
11525
SET f_int1 = NULL , f_int2 = -@max_row,
11526
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11527
f_charbig = '#NULL#';
11528
ERROR 23000: Column 'f_int1' cannot be null
11529
# check null success: 1
11531
WHERE f_int1 = 0 AND f_int2 = 0
11532
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11533
AND f_charbig = '#NULL#';
11535
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11536
SELECT f_int1, f_int1, '', '', 'was inserted'
11537
FROM t0_template source_tab
11538
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11540
# check transactions-1 success: 1
11543
# check transactions-2 success: 1
11546
# check transactions-3 success: 1
11547
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11551
# check transactions-4 success: 1
11552
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11553
SELECT f_int1, f_int1, '', '', 'was inserted'
11554
FROM t0_template source_tab
11555
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11557
# check transactions-5 success: 1
11560
# check transactions-6 success: 1
11561
# INFO: Storage engine used for t1 seems to be transactional.
11564
# check transactions-7 success: 1
11565
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11567
SET @@session.sql_mode = 'traditional';
11568
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
11569
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11570
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
11571
'', '', 'was inserted' FROM t0_template
11572
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11573
ERROR 22012: Division by 0
11576
# check transactions-8 success: 1
11577
# INFO: Storage engine used for t1 seems to be able to revert
11578
# changes made by the failing statement.
11579
SET @@session.sql_mode = '';
11581
DELETE FROM t1 WHERE f_charbig = 'was inserted';
11583
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
11585
# check special-1 success: 1
11586
UPDATE t1 SET f_charbig = '';
11588
# check special-2 success: 1
11589
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
11590
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11591
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
11592
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11593
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11594
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11595
'just inserted' FROM t0_template
11596
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11597
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
11599
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11600
f_charbig = 'updated by trigger'
11601
WHERE f_int1 = new.f_int1;
11603
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11604
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11605
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11607
# check trigger-1 success: 1
11608
DROP TRIGGER trg_1;
11609
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11610
f_int2 = CAST(f_char1 AS SIGNED INT),
11611
f_charbig = 'just inserted'
11612
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11614
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11615
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11616
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11617
'just inserted' FROM t0_template
11618
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11619
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
11621
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11622
f_charbig = 'updated by trigger'
11623
WHERE f_int1 = new.f_int1;
11625
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11626
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
11627
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11629
# check trigger-2 success: 1
11630
DROP TRIGGER trg_1;
11631
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11632
f_int2 = CAST(f_char1 AS SIGNED INT),
11633
f_charbig = 'just inserted'
11634
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11636
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11637
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11638
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11639
'just inserted' FROM t0_template
11640
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11641
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11643
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11644
f_charbig = 'updated by trigger'
11645
WHERE f_int1 = new.f_int1;
11647
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11648
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11650
# check trigger-3 success: 1
11651
DROP TRIGGER trg_1;
11652
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11653
f_int2 = CAST(f_char1 AS SIGNED INT),
11654
f_charbig = 'just inserted'
11655
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11657
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11658
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11659
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11660
'just inserted' FROM t0_template
11661
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11662
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
11664
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11665
f_charbig = 'updated by trigger'
11666
WHERE f_int1 = - old.f_int1;
11668
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11669
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11671
# check trigger-4 success: 1
11672
DROP TRIGGER trg_1;
11673
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11674
f_int2 = CAST(f_char1 AS SIGNED INT),
11675
f_charbig = 'just inserted'
11676
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11678
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11679
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11680
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11681
'just inserted' FROM t0_template
11682
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11683
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11685
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11686
f_charbig = 'updated by trigger'
11687
WHERE f_int1 = new.f_int1;
11689
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11690
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11692
# check trigger-5 success: 1
11693
DROP TRIGGER trg_1;
11694
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11695
f_int2 = CAST(f_char1 AS SIGNED INT),
11696
f_charbig = 'just inserted'
11697
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11699
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11702
'just inserted' FROM t0_template
11703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11704
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
11706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11707
f_charbig = 'updated by trigger'
11708
WHERE f_int1 = - old.f_int1;
11710
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
11711
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11713
# check trigger-6 success: 1
11714
DROP TRIGGER trg_1;
11715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11716
f_int2 = CAST(f_char1 AS SIGNED INT),
11717
f_charbig = 'just inserted'
11718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11723
'just inserted' FROM t0_template
11724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11725
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
11727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11728
f_charbig = 'updated by trigger'
11729
WHERE f_int1 = - old.f_int1;
11732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11734
# check trigger-7 success: 1
11735
DROP TRIGGER trg_1;
11736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11737
f_int2 = CAST(f_char1 AS SIGNED INT),
11738
f_charbig = 'just inserted'
11739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11742
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
11743
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
11744
'just inserted' FROM t0_template
11745
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11746
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
11748
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
11749
f_charbig = 'updated by trigger'
11750
WHERE f_int1 = - old.f_int1;
11753
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
11755
# check trigger-8 success: 1
11756
DROP TRIGGER trg_1;
11757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11758
f_int2 = CAST(f_char1 AS SIGNED INT),
11759
f_charbig = 'just inserted'
11760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
11762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11764
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
11765
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11767
SET new.f_int1 = old.f_int1 + @max_row,
11768
new.f_int2 = old.f_int2 - @max_row,
11769
new.f_charbig = '####updated per update trigger####';
11772
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11773
f_charbig = '####updated per update statement itself####';
11775
# check trigger-9 success: 1
11776
DROP TRIGGER trg_2;
11777
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11778
f_int2 = CAST(f_char1 AS SIGNED INT),
11779
f_charbig = CONCAT('===',f_char1,'===');
11780
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
11782
SET new.f_int1 = new.f_int1 + @max_row,
11783
new.f_int2 = new.f_int2 - @max_row,
11784
new.f_charbig = '####updated per update trigger####';
11787
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
11788
f_charbig = '####updated per update statement itself####';
11790
# check trigger-10 success: 1
11791
DROP TRIGGER trg_2;
11792
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
11793
f_int2 = CAST(f_char1 AS SIGNED INT),
11794
f_charbig = CONCAT('===',f_char1,'===');
11795
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11797
SET new.f_int1 = @my_max1 + @counter,
11798
new.f_int2 = @my_min2 - @counter,
11799
new.f_charbig = '####updated per insert trigger####';
11800
SET @counter = @counter + 1;
11803
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11804
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11805
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11806
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11807
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11809
DROP TRIGGER trg_3;
11811
# check trigger-11 success: 1
11813
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11814
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11815
AND f_charbig = '####updated per insert trigger####';
11816
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
11818
SET new.f_int1 = @my_max1 + @counter,
11819
new.f_int2 = @my_min2 - @counter,
11820
new.f_charbig = '####updated per insert trigger####';
11821
SET @counter = @counter + 1;
11824
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
11825
INSERT INTO t1 (f_char1, f_char2, f_charbig)
11826
SELECT CAST(f_int1 AS CHAR),
11827
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
11828
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
11830
DROP TRIGGER trg_3;
11832
# check trigger-12 success: 1
11834
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
11835
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
11836
AND f_charbig = '####updated per insert trigger####';
11838
Table Op Msg_type Msg_text
11839
test.t1 analyze status OK
11840
CHECK TABLE t1 EXTENDED;
11841
Table Op Msg_type Msg_text
11842
test.t1 check status OK
11843
CHECKSUM TABLE t1 EXTENDED;
11845
test.t1 <some_value>
11847
Table Op Msg_type Msg_text
11848
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
11849
test.t1 optimize status OK
11850
# check layout success: 1
11851
REPAIR TABLE t1 EXTENDED;
11852
Table Op Msg_type Msg_text
11853
test.t1 repair note The storage engine for the table doesn't support repair
11854
# check layout success: 1
11857
# check TRUNCATE success: 1
11858
# check layout success: 1
11859
# End usability test (inc/partition_check.inc)
11866
f_charbig VARCHAR(1000)
11867
, PRIMARY KEY(f_int1,f_int2)
11869
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
11870
(PARTITION part_3 VALUES IN (-3),
11871
PARTITION part_2 VALUES IN (-2),
11872
PARTITION part_1 VALUES IN (-1),
11873
PARTITION part_N VALUES IN (NULL),
11874
PARTITION part0 VALUES IN (0),
11875
PARTITION part1 VALUES IN (1),
11876
PARTITION part2 VALUES IN (2),
11877
PARTITION part3 VALUES IN (3));
11878
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11879
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11880
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
11881
ALTER TABLE t1 DROP PRIMARY KEY;
11882
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
11883
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
11884
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
11885
# Start usability test (inc/partition_check.inc)
11887
SHOW CREATE TABLE t1;
11889
t1 CREATE TABLE `t1` (
11890
`f_int1` int(11) NOT NULL DEFAULT '0',
11891
`f_int2` int(11) NOT NULL DEFAULT '0',
11892
`f_char1` char(20) DEFAULT NULL,
11893
`f_char2` char(20) DEFAULT NULL,
11894
`f_charbig` varchar(1000) DEFAULT NULL
11895
) ENGINE=InnoDB DEFAULT CHARSET=latin1
11896
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
11897
(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
11898
PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
11899
PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
11900
PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
11901
PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
11902
PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
11903
PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
11904
PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
11906
# check prerequisites-1 success: 1
11907
# check COUNT(*) success: 1
11908
# check MIN/MAX(f_int1) success: 1
11909
# check MIN/MAX(f_int2) success: 1
11910
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11911
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
11912
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
11913
WHERE f_int1 IN (2,3);
11914
# check prerequisites-3 success: 1
11915
DELETE FROM t1 WHERE f_charbig = 'delete me';
11916
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
11917
# check read via f_int1 success: 1
11918
# check read via f_int2 success: 1
11920
# check multiple-1 success: 1
11921
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
11923
# check multiple-2 success: 1
11924
INSERT INTO t1 SELECT * FROM t0_template
11925
WHERE MOD(f_int1,3) = 0;
11927
# check multiple-3 success: 1
11928
UPDATE t1 SET f_int1 = f_int1 + @max_row
11929
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
11930
AND @max_row_div2 + @max_row_div4;
11932
# check multiple-4 success: 1
11934
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
11935
AND @max_row_div2 + @max_row_div4 + @max_row;
11937
# check multiple-5 success: 1
11938
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
11940
SET f_int1 = @cur_value , f_int2 = @cur_value,
11941
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11942
f_charbig = '#SINGLE#';
11944
# check single-1 success: 1
11945
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
11947
SET f_int1 = @cur_value , f_int2 = @cur_value,
11948
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
11949
f_charbig = '#SINGLE#';
11951
# check single-2 success: 1
11952
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
11953
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
11954
UPDATE t1 SET f_int1 = @cur_value2
11955
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
11957
# check single-3 success: 1
11958
SET @cur_value1= -1;
11959
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
11960
UPDATE t1 SET f_int1 = @cur_value1
11961
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
11963
# check single-4 success: 1
11964
SELECT MAX(f_int1) INTO @cur_value FROM t1;
11965
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
11967
# check single-5 success: 1
11968
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
11970
# check single-6 success: 1
11971
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
11973
# check single-7 success: 1
11974
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
11975
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
11976
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
11977
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
11978
f_charbig = '#NULL#';
11980
SET f_int1 = NULL , f_int2 = -@max_row,
11981
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
11982
f_charbig = '#NULL#';
11983
ERROR 23000: Column 'f_int1' cannot be null
11984
# check null success: 1
11986
WHERE f_int1 = 0 AND f_int2 = 0
11987
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
11988
AND f_charbig = '#NULL#';
11990
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
11991
SELECT f_int1, f_int1, '', '', 'was inserted'
11992
FROM t0_template source_tab
11993
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
11995
# check transactions-1 success: 1
11998
# check transactions-2 success: 1
12001
# check transactions-3 success: 1
12002
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12006
# check transactions-4 success: 1
12007
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12008
SELECT f_int1, f_int1, '', '', 'was inserted'
12009
FROM t0_template source_tab
12010
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12012
# check transactions-5 success: 1
12015
# check transactions-6 success: 1
12016
# INFO: Storage engine used for t1 seems to be transactional.
12019
# check transactions-7 success: 1
12020
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12022
SET @@session.sql_mode = 'traditional';
12023
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12024
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12025
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12026
'', '', 'was inserted' FROM t0_template
12027
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12028
ERROR 22012: Division by 0
12031
# check transactions-8 success: 1
12032
# INFO: Storage engine used for t1 seems to be able to revert
12033
# changes made by the failing statement.
12034
SET @@session.sql_mode = '';
12036
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12038
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12040
# check special-1 success: 1
12041
UPDATE t1 SET f_charbig = '';
12043
# check special-2 success: 1
12044
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12045
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12046
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12047
WHERE 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 BEFORE 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-1 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 AFTER INSERT 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
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12081
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12082
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12084
# check trigger-2 success: 1
12085
DROP TRIGGER trg_1;
12086
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12087
f_int2 = CAST(f_char1 AS SIGNED INT),
12088
f_charbig = 'just inserted'
12089
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12091
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12092
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12093
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12094
'just inserted' FROM t0_template
12095
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12096
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12098
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12099
f_charbig = 'updated by trigger'
12100
WHERE f_int1 = new.f_int1;
12102
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12103
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12105
# check trigger-3 success: 1
12106
DROP TRIGGER trg_1;
12107
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12108
f_int2 = CAST(f_char1 AS SIGNED INT),
12109
f_charbig = 'just inserted'
12110
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12112
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12113
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12114
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12115
'just inserted' FROM t0_template
12116
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12117
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12119
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12120
f_charbig = 'updated by trigger'
12121
WHERE f_int1 = - old.f_int1;
12123
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12124
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12126
# check trigger-4 success: 1
12127
DROP TRIGGER trg_1;
12128
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12129
f_int2 = CAST(f_char1 AS SIGNED INT),
12130
f_charbig = 'just inserted'
12131
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12133
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12134
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12135
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12136
'just inserted' FROM t0_template
12137
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12138
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12140
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12141
f_charbig = 'updated by trigger'
12142
WHERE f_int1 = new.f_int1;
12144
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12145
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12147
# check trigger-5 success: 1
12148
DROP TRIGGER trg_1;
12149
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12150
f_int2 = CAST(f_char1 AS SIGNED INT),
12151
f_charbig = 'just inserted'
12152
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12154
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12155
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12156
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12157
'just inserted' FROM t0_template
12158
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12159
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12161
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12162
f_charbig = 'updated by trigger'
12163
WHERE f_int1 = - old.f_int1;
12165
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12166
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12168
# check trigger-6 success: 1
12169
DROP TRIGGER trg_1;
12170
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12171
f_int2 = CAST(f_char1 AS SIGNED INT),
12172
f_charbig = 'just inserted'
12173
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12175
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12176
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12177
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12178
'just inserted' FROM t0_template
12179
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12180
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12182
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12183
f_charbig = 'updated by trigger'
12184
WHERE f_int1 = - old.f_int1;
12187
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12189
# check trigger-7 success: 1
12190
DROP TRIGGER trg_1;
12191
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12192
f_int2 = CAST(f_char1 AS SIGNED INT),
12193
f_charbig = 'just inserted'
12194
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12196
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12197
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12198
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12199
'just inserted' FROM t0_template
12200
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12201
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12203
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12204
f_charbig = 'updated by trigger'
12205
WHERE f_int1 = - old.f_int1;
12208
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12210
# check trigger-8 success: 1
12211
DROP TRIGGER trg_1;
12212
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12213
f_int2 = CAST(f_char1 AS SIGNED INT),
12214
f_charbig = 'just inserted'
12215
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12217
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12219
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12220
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12222
SET new.f_int1 = old.f_int1 + @max_row,
12223
new.f_int2 = old.f_int2 - @max_row,
12224
new.f_charbig = '####updated per update trigger####';
12227
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12228
f_charbig = '####updated per update statement itself####';
12230
# check trigger-9 success: 1
12231
DROP TRIGGER trg_2;
12232
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12233
f_int2 = CAST(f_char1 AS SIGNED INT),
12234
f_charbig = CONCAT('===',f_char1,'===');
12235
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12237
SET new.f_int1 = new.f_int1 + @max_row,
12238
new.f_int2 = new.f_int2 - @max_row,
12239
new.f_charbig = '####updated per update trigger####';
12242
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12243
f_charbig = '####updated per update statement itself####';
12245
# check trigger-10 success: 1
12246
DROP TRIGGER trg_2;
12247
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12248
f_int2 = CAST(f_char1 AS SIGNED INT),
12249
f_charbig = CONCAT('===',f_char1,'===');
12250
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12252
SET new.f_int1 = @my_max1 + @counter,
12253
new.f_int2 = @my_min2 - @counter,
12254
new.f_charbig = '####updated per insert trigger####';
12255
SET @counter = @counter + 1;
12258
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12259
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12260
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12261
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12262
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12264
DROP TRIGGER trg_3;
12266
# check trigger-11 success: 1
12268
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12269
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12270
AND f_charbig = '####updated per insert trigger####';
12271
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12273
SET new.f_int1 = @my_max1 + @counter,
12274
new.f_int2 = @my_min2 - @counter,
12275
new.f_charbig = '####updated per insert trigger####';
12276
SET @counter = @counter + 1;
12279
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12280
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12281
SELECT CAST(f_int1 AS CHAR),
12282
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12283
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12285
DROP TRIGGER trg_3;
12287
# check trigger-12 success: 1
12289
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12290
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12291
AND f_charbig = '####updated per insert trigger####';
12293
Table Op Msg_type Msg_text
12294
test.t1 analyze status OK
12295
CHECK TABLE t1 EXTENDED;
12296
Table Op Msg_type Msg_text
12297
test.t1 check status OK
12298
CHECKSUM TABLE t1 EXTENDED;
12300
test.t1 <some_value>
12302
Table Op Msg_type Msg_text
12303
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
12304
test.t1 optimize status OK
12305
# check layout success: 1
12306
REPAIR TABLE t1 EXTENDED;
12307
Table Op Msg_type Msg_text
12308
test.t1 repair note The storage engine for the table doesn't support repair
12309
# check layout success: 1
12312
# check TRUNCATE success: 1
12313
# check layout success: 1
12314
# End usability test (inc/partition_check.inc)
12321
f_charbig VARCHAR(1000)
12322
, PRIMARY KEY(f_int1,f_int2)
12324
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
12325
(PARTITION parta VALUES LESS THAN (0),
12326
PARTITION partb VALUES LESS THAN (5),
12327
PARTITION partc VALUES LESS THAN (10),
12328
PARTITION partd VALUES LESS THAN (10 + 5),
12329
PARTITION parte VALUES LESS THAN (20),
12330
PARTITION partf VALUES LESS THAN (2147483646));
12331
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12332
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12333
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12334
ALTER TABLE t1 DROP PRIMARY KEY;
12335
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12336
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12337
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12338
# Start usability test (inc/partition_check.inc)
12340
SHOW CREATE TABLE t1;
12342
t1 CREATE TABLE `t1` (
12343
`f_int1` int(11) NOT NULL DEFAULT '0',
12344
`f_int2` int(11) NOT NULL DEFAULT '0',
12345
`f_char1` char(20) DEFAULT NULL,
12346
`f_char2` char(20) DEFAULT NULL,
12347
`f_charbig` varchar(1000) DEFAULT NULL
12348
) ENGINE=InnoDB DEFAULT CHARSET=latin1
12349
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
12350
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
12351
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
12352
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
12353
PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
12354
PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
12355
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
12357
# check prerequisites-1 success: 1
12358
# check COUNT(*) success: 1
12359
# check MIN/MAX(f_int1) success: 1
12360
# check MIN/MAX(f_int2) success: 1
12361
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12362
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12363
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12364
WHERE f_int1 IN (2,3);
12365
# check prerequisites-3 success: 1
12366
DELETE FROM t1 WHERE f_charbig = 'delete me';
12367
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
12368
# check read via f_int1 success: 1
12369
# check read via f_int2 success: 1
12371
# check multiple-1 success: 1
12372
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12374
# check multiple-2 success: 1
12375
INSERT INTO t1 SELECT * FROM t0_template
12376
WHERE MOD(f_int1,3) = 0;
12378
# check multiple-3 success: 1
12379
UPDATE t1 SET f_int1 = f_int1 + @max_row
12380
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12381
AND @max_row_div2 + @max_row_div4;
12383
# check multiple-4 success: 1
12385
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12386
AND @max_row_div2 + @max_row_div4 + @max_row;
12388
# check multiple-5 success: 1
12389
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12391
SET f_int1 = @cur_value , f_int2 = @cur_value,
12392
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12393
f_charbig = '#SINGLE#';
12395
# check single-1 success: 1
12396
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12398
SET f_int1 = @cur_value , f_int2 = @cur_value,
12399
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12400
f_charbig = '#SINGLE#';
12402
# check single-2 success: 1
12403
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12404
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12405
UPDATE t1 SET f_int1 = @cur_value2
12406
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12408
# check single-3 success: 1
12409
SET @cur_value1= -1;
12410
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12411
UPDATE t1 SET f_int1 = @cur_value1
12412
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12414
# check single-4 success: 1
12415
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12416
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12418
# check single-5 success: 1
12419
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12421
# check single-6 success: 1
12422
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12423
ERROR HY000: Table has no partition for value 2147483647
12424
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12425
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12426
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12427
f_charbig = '#NULL#';
12429
SET f_int1 = NULL , f_int2 = -@max_row,
12430
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12431
f_charbig = '#NULL#';
12432
ERROR 23000: Column 'f_int1' cannot be null
12433
# check null success: 1
12435
WHERE f_int1 = 0 AND f_int2 = 0
12436
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12437
AND f_charbig = '#NULL#';
12439
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12440
SELECT f_int1, f_int1, '', '', 'was inserted'
12441
FROM t0_template source_tab
12442
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12444
# check transactions-1 success: 1
12447
# check transactions-2 success: 1
12450
# check transactions-3 success: 1
12451
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12455
# check transactions-4 success: 1
12456
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12457
SELECT f_int1, f_int1, '', '', 'was inserted'
12458
FROM t0_template source_tab
12459
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12461
# check transactions-5 success: 1
12464
# check transactions-6 success: 1
12465
# INFO: Storage engine used for t1 seems to be transactional.
12468
# check transactions-7 success: 1
12469
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12471
SET @@session.sql_mode = 'traditional';
12472
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12473
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12474
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12475
'', '', 'was inserted' FROM t0_template
12476
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12477
ERROR 22012: Division by 0
12480
# check transactions-8 success: 1
12481
# INFO: Storage engine used for t1 seems to be able to revert
12482
# changes made by the failing statement.
12483
SET @@session.sql_mode = '';
12485
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12487
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12489
# check special-1 success: 1
12490
UPDATE t1 SET f_charbig = '';
12492
# check special-2 success: 1
12493
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12494
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12495
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12496
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12497
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12498
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12499
'just inserted' FROM t0_template
12500
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12501
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12503
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12504
f_charbig = 'updated by trigger'
12505
WHERE f_int1 = new.f_int1;
12507
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12508
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12509
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12511
# check trigger-1 success: 1
12512
DROP TRIGGER trg_1;
12513
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12514
f_int2 = CAST(f_char1 AS SIGNED INT),
12515
f_charbig = 'just inserted'
12516
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12518
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12519
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12520
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12521
'just inserted' FROM t0_template
12522
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12523
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12525
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12526
f_charbig = 'updated by trigger'
12527
WHERE f_int1 = new.f_int1;
12529
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12530
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12531
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12533
# check trigger-2 success: 1
12534
DROP TRIGGER trg_1;
12535
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12536
f_int2 = CAST(f_char1 AS SIGNED INT),
12537
f_charbig = 'just inserted'
12538
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12540
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12541
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12542
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12543
'just inserted' FROM t0_template
12544
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12545
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12547
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12548
f_charbig = 'updated by trigger'
12549
WHERE f_int1 = new.f_int1;
12551
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12552
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12554
# check trigger-3 success: 1
12555
DROP TRIGGER trg_1;
12556
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12557
f_int2 = CAST(f_char1 AS SIGNED INT),
12558
f_charbig = 'just inserted'
12559
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12561
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12562
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12563
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12564
'just inserted' FROM t0_template
12565
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12566
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12568
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12569
f_charbig = 'updated by trigger'
12570
WHERE f_int1 = - old.f_int1;
12572
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12573
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12575
# check trigger-4 success: 1
12576
DROP TRIGGER trg_1;
12577
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12578
f_int2 = CAST(f_char1 AS SIGNED INT),
12579
f_charbig = 'just inserted'
12580
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12582
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12583
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12584
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12585
'just inserted' FROM t0_template
12586
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12587
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12589
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12590
f_charbig = 'updated by trigger'
12591
WHERE f_int1 = new.f_int1;
12593
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12594
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12596
# check trigger-5 success: 1
12597
DROP TRIGGER trg_1;
12598
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12599
f_int2 = CAST(f_char1 AS SIGNED INT),
12600
f_charbig = 'just inserted'
12601
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12603
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12604
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12605
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12606
'just inserted' FROM t0_template
12607
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12608
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
12610
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12611
f_charbig = 'updated by trigger'
12612
WHERE f_int1 = - old.f_int1;
12614
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12615
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12617
# check trigger-6 success: 1
12618
DROP TRIGGER trg_1;
12619
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12620
f_int2 = CAST(f_char1 AS SIGNED INT),
12621
f_charbig = 'just inserted'
12622
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12624
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12625
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12626
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12627
'just inserted' FROM t0_template
12628
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12629
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
12631
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12632
f_charbig = 'updated by trigger'
12633
WHERE f_int1 = - old.f_int1;
12636
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12638
# check trigger-7 success: 1
12639
DROP TRIGGER trg_1;
12640
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12641
f_int2 = CAST(f_char1 AS SIGNED INT),
12642
f_charbig = 'just inserted'
12643
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12645
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12646
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12647
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12648
'just inserted' FROM t0_template
12649
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12650
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
12652
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12653
f_charbig = 'updated by trigger'
12654
WHERE f_int1 = - old.f_int1;
12657
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
12659
# check trigger-8 success: 1
12660
DROP TRIGGER trg_1;
12661
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12662
f_int2 = CAST(f_char1 AS SIGNED INT),
12663
f_charbig = 'just inserted'
12664
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12666
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12668
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12669
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12671
SET new.f_int1 = old.f_int1 + @max_row,
12672
new.f_int2 = old.f_int2 - @max_row,
12673
new.f_charbig = '####updated per update trigger####';
12676
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12677
f_charbig = '####updated per update statement itself####';
12679
# check trigger-9 success: 1
12680
DROP TRIGGER trg_2;
12681
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12682
f_int2 = CAST(f_char1 AS SIGNED INT),
12683
f_charbig = CONCAT('===',f_char1,'===');
12684
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
12686
SET new.f_int1 = new.f_int1 + @max_row,
12687
new.f_int2 = new.f_int2 - @max_row,
12688
new.f_charbig = '####updated per update trigger####';
12691
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
12692
f_charbig = '####updated per update statement itself####';
12694
# check trigger-10 success: 1
12695
DROP TRIGGER trg_2;
12696
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12697
f_int2 = CAST(f_char1 AS SIGNED INT),
12698
f_charbig = CONCAT('===',f_char1,'===');
12699
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12701
SET new.f_int1 = @my_max1 + @counter,
12702
new.f_int2 = @my_min2 - @counter,
12703
new.f_charbig = '####updated per insert trigger####';
12704
SET @counter = @counter + 1;
12707
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12708
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12709
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12710
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12711
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12713
DROP TRIGGER trg_3;
12715
# check trigger-11 success: 1
12717
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12718
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12719
AND f_charbig = '####updated per insert trigger####';
12720
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
12722
SET new.f_int1 = @my_max1 + @counter,
12723
new.f_int2 = @my_min2 - @counter,
12724
new.f_charbig = '####updated per insert trigger####';
12725
SET @counter = @counter + 1;
12728
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
12729
INSERT INTO t1 (f_char1, f_char2, f_charbig)
12730
SELECT CAST(f_int1 AS CHAR),
12731
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
12732
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
12734
DROP TRIGGER trg_3;
12736
# check trigger-12 success: 1
12738
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
12739
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
12740
AND f_charbig = '####updated per insert trigger####';
12742
Table Op Msg_type Msg_text
12743
test.t1 analyze status OK
12744
CHECK TABLE t1 EXTENDED;
12745
Table Op Msg_type Msg_text
12746
test.t1 check status OK
12747
CHECKSUM TABLE t1 EXTENDED;
12749
test.t1 <some_value>
12751
Table Op Msg_type Msg_text
12752
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
12753
test.t1 optimize status OK
12754
# check layout success: 1
12755
REPAIR TABLE t1 EXTENDED;
12756
Table Op Msg_type Msg_text
12757
test.t1 repair note The storage engine for the table doesn't support repair
12758
# check layout success: 1
12761
# check TRUNCATE success: 1
12762
# check layout success: 1
12763
# End usability test (inc/partition_check.inc)
12770
f_charbig VARCHAR(1000)
12771
, PRIMARY KEY(f_int1,f_int2)
12773
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
12774
(PARTITION parta VALUES LESS THAN (0),
12775
PARTITION partb VALUES LESS THAN (5),
12776
PARTITION partc VALUES LESS THAN (10),
12777
PARTITION partd VALUES LESS THAN (2147483646));
12778
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12779
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12780
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
12781
ALTER TABLE t1 DROP PRIMARY KEY;
12782
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12783
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
12784
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
12785
# Start usability test (inc/partition_check.inc)
12787
SHOW CREATE TABLE t1;
12789
t1 CREATE TABLE `t1` (
12790
`f_int1` int(11) NOT NULL DEFAULT '0',
12791
`f_int2` int(11) NOT NULL DEFAULT '0',
12792
`f_char1` char(20) DEFAULT NULL,
12793
`f_char2` char(20) DEFAULT NULL,
12794
`f_charbig` varchar(1000) DEFAULT NULL
12795
) ENGINE=InnoDB DEFAULT CHARSET=latin1
12796
/*!50100 PARTITION BY RANGE (f_int1)
12797
SUBPARTITION BY HASH (f_int2)
12799
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
12800
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
12801
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
12802
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
12804
# check prerequisites-1 success: 1
12805
# check COUNT(*) success: 1
12806
# check MIN/MAX(f_int1) success: 1
12807
# check MIN/MAX(f_int2) success: 1
12808
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12809
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
12810
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
12811
WHERE f_int1 IN (2,3);
12812
# check prerequisites-3 success: 1
12813
DELETE FROM t1 WHERE f_charbig = 'delete me';
12814
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
12815
# check read via f_int1 success: 1
12816
# check read via f_int2 success: 1
12818
# check multiple-1 success: 1
12819
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
12821
# check multiple-2 success: 1
12822
INSERT INTO t1 SELECT * FROM t0_template
12823
WHERE MOD(f_int1,3) = 0;
12825
# check multiple-3 success: 1
12826
UPDATE t1 SET f_int1 = f_int1 + @max_row
12827
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
12828
AND @max_row_div2 + @max_row_div4;
12830
# check multiple-4 success: 1
12832
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
12833
AND @max_row_div2 + @max_row_div4 + @max_row;
12835
# check multiple-5 success: 1
12836
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
12838
SET f_int1 = @cur_value , f_int2 = @cur_value,
12839
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12840
f_charbig = '#SINGLE#';
12842
# check single-1 success: 1
12843
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
12845
SET f_int1 = @cur_value , f_int2 = @cur_value,
12846
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
12847
f_charbig = '#SINGLE#';
12849
# check single-2 success: 1
12850
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
12851
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
12852
UPDATE t1 SET f_int1 = @cur_value2
12853
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
12855
# check single-3 success: 1
12856
SET @cur_value1= -1;
12857
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
12858
UPDATE t1 SET f_int1 = @cur_value1
12859
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
12861
# check single-4 success: 1
12862
SELECT MAX(f_int1) INTO @cur_value FROM t1;
12863
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
12865
# check single-5 success: 1
12866
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
12868
# check single-6 success: 1
12869
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
12870
ERROR HY000: Table has no partition for value 2147483647
12871
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
12872
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
12873
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
12874
f_charbig = '#NULL#';
12876
SET f_int1 = NULL , f_int2 = -@max_row,
12877
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
12878
f_charbig = '#NULL#';
12879
ERROR 23000: Column 'f_int1' cannot be null
12880
# check null success: 1
12882
WHERE f_int1 = 0 AND f_int2 = 0
12883
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
12884
AND f_charbig = '#NULL#';
12886
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12887
SELECT f_int1, f_int1, '', '', 'was inserted'
12888
FROM t0_template source_tab
12889
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12891
# check transactions-1 success: 1
12894
# check transactions-2 success: 1
12897
# check transactions-3 success: 1
12898
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12902
# check transactions-4 success: 1
12903
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12904
SELECT f_int1, f_int1, '', '', 'was inserted'
12905
FROM t0_template source_tab
12906
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12908
# check transactions-5 success: 1
12911
# check transactions-6 success: 1
12912
# INFO: Storage engine used for t1 seems to be transactional.
12915
# check transactions-7 success: 1
12916
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12918
SET @@session.sql_mode = 'traditional';
12919
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
12920
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
12921
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
12922
'', '', 'was inserted' FROM t0_template
12923
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
12924
ERROR 22012: Division by 0
12927
# check transactions-8 success: 1
12928
# INFO: Storage engine used for t1 seems to be able to revert
12929
# changes made by the failing statement.
12930
SET @@session.sql_mode = '';
12932
DELETE FROM t1 WHERE f_charbig = 'was inserted';
12934
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
12936
# check special-1 success: 1
12937
UPDATE t1 SET f_charbig = '';
12939
# check special-2 success: 1
12940
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
12941
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
12942
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
12943
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12944
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12945
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12946
'just inserted' FROM t0_template
12947
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12948
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
12950
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12951
f_charbig = 'updated by trigger'
12952
WHERE f_int1 = new.f_int1;
12954
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12955
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12956
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12958
# check trigger-1 success: 1
12959
DROP TRIGGER trg_1;
12960
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12961
f_int2 = CAST(f_char1 AS SIGNED INT),
12962
f_charbig = 'just inserted'
12963
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12965
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12966
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12967
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12968
'just inserted' FROM t0_template
12969
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12970
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
12972
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12973
f_charbig = 'updated by trigger'
12974
WHERE f_int1 = new.f_int1;
12976
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12977
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
12978
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12980
# check trigger-2 success: 1
12981
DROP TRIGGER trg_1;
12982
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
12983
f_int2 = CAST(f_char1 AS SIGNED INT),
12984
f_charbig = 'just inserted'
12985
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
12987
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12988
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
12989
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
12990
'just inserted' FROM t0_template
12991
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
12992
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
12994
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
12995
f_charbig = 'updated by trigger'
12996
WHERE f_int1 = new.f_int1;
12998
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
12999
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13001
# check trigger-3 success: 1
13002
DROP TRIGGER trg_1;
13003
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13004
f_int2 = CAST(f_char1 AS SIGNED INT),
13005
f_charbig = 'just inserted'
13006
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13008
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13009
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13010
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13011
'just inserted' FROM t0_template
13012
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13013
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13015
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13016
f_charbig = 'updated by trigger'
13017
WHERE f_int1 = - old.f_int1;
13019
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13020
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13022
# check trigger-4 success: 1
13023
DROP TRIGGER trg_1;
13024
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13025
f_int2 = CAST(f_char1 AS SIGNED INT),
13026
f_charbig = 'just inserted'
13027
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13029
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13030
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13031
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13032
'just inserted' FROM t0_template
13033
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13034
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13036
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13037
f_charbig = 'updated by trigger'
13038
WHERE f_int1 = new.f_int1;
13040
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13041
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13043
# check trigger-5 success: 1
13044
DROP TRIGGER trg_1;
13045
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13046
f_int2 = CAST(f_char1 AS SIGNED INT),
13047
f_charbig = 'just inserted'
13048
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13050
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13051
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13052
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13053
'just inserted' FROM t0_template
13054
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13055
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13057
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13058
f_charbig = 'updated by trigger'
13059
WHERE f_int1 = - old.f_int1;
13061
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13062
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13064
# check trigger-6 success: 1
13065
DROP TRIGGER trg_1;
13066
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13067
f_int2 = CAST(f_char1 AS SIGNED INT),
13068
f_charbig = 'just inserted'
13069
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13071
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13072
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13073
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13074
'just inserted' FROM t0_template
13075
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13076
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13078
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13079
f_charbig = 'updated by trigger'
13080
WHERE f_int1 = - old.f_int1;
13083
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13085
# check trigger-7 success: 1
13086
DROP TRIGGER trg_1;
13087
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13088
f_int2 = CAST(f_char1 AS SIGNED INT),
13089
f_charbig = 'just inserted'
13090
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13092
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13093
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13094
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13095
'just inserted' FROM t0_template
13096
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13097
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13099
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13100
f_charbig = 'updated by trigger'
13101
WHERE f_int1 = - old.f_int1;
13104
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13106
# check trigger-8 success: 1
13107
DROP TRIGGER trg_1;
13108
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13109
f_int2 = CAST(f_char1 AS SIGNED INT),
13110
f_charbig = 'just inserted'
13111
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13113
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13115
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13116
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13118
SET new.f_int1 = old.f_int1 + @max_row,
13119
new.f_int2 = old.f_int2 - @max_row,
13120
new.f_charbig = '####updated per update trigger####';
13123
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13124
f_charbig = '####updated per update statement itself####';
13126
# check trigger-9 success: 1
13127
DROP TRIGGER trg_2;
13128
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13129
f_int2 = CAST(f_char1 AS SIGNED INT),
13130
f_charbig = CONCAT('===',f_char1,'===');
13131
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13133
SET new.f_int1 = new.f_int1 + @max_row,
13134
new.f_int2 = new.f_int2 - @max_row,
13135
new.f_charbig = '####updated per update trigger####';
13138
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13139
f_charbig = '####updated per update statement itself####';
13141
# check trigger-10 success: 1
13142
DROP TRIGGER trg_2;
13143
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13144
f_int2 = CAST(f_char1 AS SIGNED INT),
13145
f_charbig = CONCAT('===',f_char1,'===');
13146
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13148
SET new.f_int1 = @my_max1 + @counter,
13149
new.f_int2 = @my_min2 - @counter,
13150
new.f_charbig = '####updated per insert trigger####';
13151
SET @counter = @counter + 1;
13154
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13155
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13156
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13157
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13158
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13160
DROP TRIGGER trg_3;
13162
# check trigger-11 success: 1
13164
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13165
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13166
AND f_charbig = '####updated per insert trigger####';
13167
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13169
SET new.f_int1 = @my_max1 + @counter,
13170
new.f_int2 = @my_min2 - @counter,
13171
new.f_charbig = '####updated per insert trigger####';
13172
SET @counter = @counter + 1;
13175
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13176
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13177
SELECT CAST(f_int1 AS CHAR),
13178
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13179
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13181
DROP TRIGGER trg_3;
13183
# check trigger-12 success: 1
13185
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13186
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13187
AND f_charbig = '####updated per insert trigger####';
13189
Table Op Msg_type Msg_text
13190
test.t1 analyze status OK
13191
CHECK TABLE t1 EXTENDED;
13192
Table Op Msg_type Msg_text
13193
test.t1 check status OK
13194
CHECKSUM TABLE t1 EXTENDED;
13196
test.t1 <some_value>
13198
Table Op Msg_type Msg_text
13199
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
13200
test.t1 optimize status OK
13201
# check layout success: 1
13202
REPAIR TABLE t1 EXTENDED;
13203
Table Op Msg_type Msg_text
13204
test.t1 repair note The storage engine for the table doesn't support repair
13205
# check layout success: 1
13208
# check TRUNCATE success: 1
13209
# check layout success: 1
13210
# End usability test (inc/partition_check.inc)
13217
f_charbig VARCHAR(1000)
13218
, PRIMARY KEY(f_int1,f_int2)
13220
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
13221
(PARTITION part1 VALUES LESS THAN (0)
13222
(SUBPARTITION subpart11, SUBPARTITION subpart12),
13223
PARTITION part2 VALUES LESS THAN (5)
13224
(SUBPARTITION subpart21, SUBPARTITION subpart22),
13225
PARTITION part3 VALUES LESS THAN (10)
13226
(SUBPARTITION subpart31, SUBPARTITION subpart32),
13227
PARTITION part4 VALUES LESS THAN (2147483646)
13228
(SUBPARTITION subpart41, SUBPARTITION subpart42));
13229
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13230
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13231
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13232
ALTER TABLE t1 DROP PRIMARY KEY;
13233
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13234
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13235
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13236
# Start usability test (inc/partition_check.inc)
13238
SHOW CREATE TABLE t1;
13240
t1 CREATE TABLE `t1` (
13241
`f_int1` int(11) NOT NULL DEFAULT '0',
13242
`f_int2` int(11) NOT NULL DEFAULT '0',
13243
`f_char1` char(20) DEFAULT NULL,
13244
`f_char2` char(20) DEFAULT NULL,
13245
`f_charbig` varchar(1000) DEFAULT NULL
13246
) ENGINE=InnoDB DEFAULT CHARSET=latin1
13247
/*!50100 PARTITION BY RANGE (f_int1)
13248
SUBPARTITION BY KEY (f_int2)
13249
(PARTITION part1 VALUES LESS THAN (0)
13250
(SUBPARTITION subpart11 ENGINE = InnoDB,
13251
SUBPARTITION subpart12 ENGINE = InnoDB),
13252
PARTITION part2 VALUES LESS THAN (5)
13253
(SUBPARTITION subpart21 ENGINE = InnoDB,
13254
SUBPARTITION subpart22 ENGINE = InnoDB),
13255
PARTITION part3 VALUES LESS THAN (10)
13256
(SUBPARTITION subpart31 ENGINE = InnoDB,
13257
SUBPARTITION subpart32 ENGINE = InnoDB),
13258
PARTITION part4 VALUES LESS THAN (2147483646)
13259
(SUBPARTITION subpart41 ENGINE = InnoDB,
13260
SUBPARTITION subpart42 ENGINE = InnoDB)) */
13262
# check prerequisites-1 success: 1
13263
# check COUNT(*) success: 1
13264
# check MIN/MAX(f_int1) success: 1
13265
# check MIN/MAX(f_int2) success: 1
13266
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13267
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13268
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13269
WHERE f_int1 IN (2,3);
13270
# check prerequisites-3 success: 1
13271
DELETE FROM t1 WHERE f_charbig = 'delete me';
13272
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13273
# check read via f_int1 success: 1
13274
# check read via f_int2 success: 1
13276
# check multiple-1 success: 1
13277
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13279
# check multiple-2 success: 1
13280
INSERT INTO t1 SELECT * FROM t0_template
13281
WHERE MOD(f_int1,3) = 0;
13283
# check multiple-3 success: 1
13284
UPDATE t1 SET f_int1 = f_int1 + @max_row
13285
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13286
AND @max_row_div2 + @max_row_div4;
13288
# check multiple-4 success: 1
13290
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13291
AND @max_row_div2 + @max_row_div4 + @max_row;
13293
# check multiple-5 success: 1
13294
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13296
SET f_int1 = @cur_value , f_int2 = @cur_value,
13297
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13298
f_charbig = '#SINGLE#';
13300
# check single-1 success: 1
13301
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13303
SET f_int1 = @cur_value , f_int2 = @cur_value,
13304
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13305
f_charbig = '#SINGLE#';
13307
# check single-2 success: 1
13308
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13309
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13310
UPDATE t1 SET f_int1 = @cur_value2
13311
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13313
# check single-3 success: 1
13314
SET @cur_value1= -1;
13315
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13316
UPDATE t1 SET f_int1 = @cur_value1
13317
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13319
# check single-4 success: 1
13320
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13321
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13323
# check single-5 success: 1
13324
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13326
# check single-6 success: 1
13327
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13328
ERROR HY000: Table has no partition for value 2147483647
13329
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13330
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13331
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13332
f_charbig = '#NULL#';
13334
SET f_int1 = NULL , f_int2 = -@max_row,
13335
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13336
f_charbig = '#NULL#';
13337
ERROR 23000: Column 'f_int1' cannot be null
13338
# check null success: 1
13340
WHERE f_int1 = 0 AND f_int2 = 0
13341
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13342
AND f_charbig = '#NULL#';
13344
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13345
SELECT f_int1, f_int1, '', '', 'was inserted'
13346
FROM t0_template source_tab
13347
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13349
# check transactions-1 success: 1
13352
# check transactions-2 success: 1
13355
# check transactions-3 success: 1
13356
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13360
# check transactions-4 success: 1
13361
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13362
SELECT f_int1, f_int1, '', '', 'was inserted'
13363
FROM t0_template source_tab
13364
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13366
# check transactions-5 success: 1
13369
# check transactions-6 success: 1
13370
# INFO: Storage engine used for t1 seems to be transactional.
13373
# check transactions-7 success: 1
13374
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13376
SET @@session.sql_mode = 'traditional';
13377
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13378
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13379
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13380
'', '', 'was inserted' FROM t0_template
13381
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13382
ERROR 22012: Division by 0
13385
# check transactions-8 success: 1
13386
# INFO: Storage engine used for t1 seems to be able to revert
13387
# changes made by the failing statement.
13388
SET @@session.sql_mode = '';
13390
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13392
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13394
# check special-1 success: 1
13395
UPDATE t1 SET f_charbig = '';
13397
# check special-2 success: 1
13398
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13399
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13400
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13401
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13402
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13403
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13404
'just inserted' FROM t0_template
13405
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13406
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13408
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13409
f_charbig = 'updated by trigger'
13410
WHERE f_int1 = new.f_int1;
13412
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13413
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13414
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13416
# check trigger-1 success: 1
13417
DROP TRIGGER trg_1;
13418
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13419
f_int2 = CAST(f_char1 AS SIGNED INT),
13420
f_charbig = 'just inserted'
13421
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13423
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13424
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13425
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13426
'just inserted' FROM t0_template
13427
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13428
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13430
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13431
f_charbig = 'updated by trigger'
13432
WHERE f_int1 = new.f_int1;
13434
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13435
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13436
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13438
# check trigger-2 success: 1
13439
DROP TRIGGER trg_1;
13440
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13441
f_int2 = CAST(f_char1 AS SIGNED INT),
13442
f_charbig = 'just inserted'
13443
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13445
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13446
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13447
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13448
'just inserted' FROM t0_template
13449
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13450
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13452
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13453
f_charbig = 'updated by trigger'
13454
WHERE f_int1 = new.f_int1;
13456
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13457
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13459
# check trigger-3 success: 1
13460
DROP TRIGGER trg_1;
13461
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13462
f_int2 = CAST(f_char1 AS SIGNED INT),
13463
f_charbig = 'just inserted'
13464
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13466
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13467
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13468
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13469
'just inserted' FROM t0_template
13470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13471
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13473
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13474
f_charbig = 'updated by trigger'
13475
WHERE f_int1 = - old.f_int1;
13477
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13478
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13480
# check trigger-4 success: 1
13481
DROP TRIGGER trg_1;
13482
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13483
f_int2 = CAST(f_char1 AS SIGNED INT),
13484
f_charbig = 'just inserted'
13485
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13487
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13488
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13489
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13490
'just inserted' FROM t0_template
13491
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13492
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13494
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13495
f_charbig = 'updated by trigger'
13496
WHERE f_int1 = new.f_int1;
13498
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13499
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13501
# check trigger-5 success: 1
13502
DROP TRIGGER trg_1;
13503
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13504
f_int2 = CAST(f_char1 AS SIGNED INT),
13505
f_charbig = 'just inserted'
13506
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13508
WHERE ABS(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 AFTER UPDATE 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 = - old.f_int1;
13519
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13520
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13522
# check trigger-6 success: 1
13523
DROP TRIGGER trg_1;
13524
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13525
f_int2 = CAST(f_char1 AS SIGNED INT),
13526
f_charbig = 'just inserted'
13527
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13529
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13530
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13531
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13532
'just inserted' FROM t0_template
13533
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13534
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13536
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13537
f_charbig = 'updated by trigger'
13538
WHERE f_int1 = - old.f_int1;
13541
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13543
# check trigger-7 success: 1
13544
DROP TRIGGER trg_1;
13545
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13546
f_int2 = CAST(f_char1 AS SIGNED INT),
13547
f_charbig = 'just inserted'
13548
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13550
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13551
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13552
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13553
'just inserted' FROM t0_template
13554
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13555
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
13557
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13558
f_charbig = 'updated by trigger'
13559
WHERE f_int1 = - old.f_int1;
13562
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13564
# check trigger-8 success: 1
13565
DROP TRIGGER trg_1;
13566
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13567
f_int2 = CAST(f_char1 AS SIGNED INT),
13568
f_charbig = 'just inserted'
13569
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13571
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13573
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13574
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13576
SET new.f_int1 = old.f_int1 + @max_row,
13577
new.f_int2 = old.f_int2 - @max_row,
13578
new.f_charbig = '####updated per update trigger####';
13581
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13582
f_charbig = '####updated per update statement itself####';
13584
# check trigger-9 success: 1
13585
DROP TRIGGER trg_2;
13586
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13587
f_int2 = CAST(f_char1 AS SIGNED INT),
13588
f_charbig = CONCAT('===',f_char1,'===');
13589
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
13591
SET new.f_int1 = new.f_int1 + @max_row,
13592
new.f_int2 = new.f_int2 - @max_row,
13593
new.f_charbig = '####updated per update trigger####';
13596
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
13597
f_charbig = '####updated per update statement itself####';
13599
# check trigger-10 success: 1
13600
DROP TRIGGER trg_2;
13601
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13602
f_int2 = CAST(f_char1 AS SIGNED INT),
13603
f_charbig = CONCAT('===',f_char1,'===');
13604
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13606
SET new.f_int1 = @my_max1 + @counter,
13607
new.f_int2 = @my_min2 - @counter,
13608
new.f_charbig = '####updated per insert trigger####';
13609
SET @counter = @counter + 1;
13612
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13613
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13614
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13615
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13616
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13618
DROP TRIGGER trg_3;
13620
# check trigger-11 success: 1
13622
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13623
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13624
AND f_charbig = '####updated per insert trigger####';
13625
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
13627
SET new.f_int1 = @my_max1 + @counter,
13628
new.f_int2 = @my_min2 - @counter,
13629
new.f_charbig = '####updated per insert trigger####';
13630
SET @counter = @counter + 1;
13633
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
13634
INSERT INTO t1 (f_char1, f_char2, f_charbig)
13635
SELECT CAST(f_int1 AS CHAR),
13636
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
13637
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
13639
DROP TRIGGER trg_3;
13641
# check trigger-12 success: 1
13643
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
13644
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
13645
AND f_charbig = '####updated per insert trigger####';
13647
Table Op Msg_type Msg_text
13648
test.t1 analyze status OK
13649
CHECK TABLE t1 EXTENDED;
13650
Table Op Msg_type Msg_text
13651
test.t1 check status OK
13652
CHECKSUM TABLE t1 EXTENDED;
13654
test.t1 <some_value>
13656
Table Op Msg_type Msg_text
13657
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
13658
test.t1 optimize status OK
13659
# check layout success: 1
13660
REPAIR TABLE t1 EXTENDED;
13661
Table Op Msg_type Msg_text
13662
test.t1 repair note The storage engine for the table doesn't support repair
13663
# check layout success: 1
13666
# check TRUNCATE success: 1
13667
# check layout success: 1
13668
# End usability test (inc/partition_check.inc)
13675
f_charbig VARCHAR(1000)
13676
, PRIMARY KEY(f_int1,f_int2)
13678
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
13679
(PARTITION part1 VALUES IN (0)
13680
(SUBPARTITION sp11, SUBPARTITION sp12),
13681
PARTITION part2 VALUES IN (1)
13682
(SUBPARTITION sp21, SUBPARTITION sp22),
13683
PARTITION part3 VALUES IN (2)
13684
(SUBPARTITION sp31, SUBPARTITION sp32),
13685
PARTITION part4 VALUES IN (NULL)
13686
(SUBPARTITION sp41, SUBPARTITION sp42));
13687
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13688
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13689
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
13690
ALTER TABLE t1 DROP PRIMARY KEY;
13691
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13692
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
13693
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
13694
# Start usability test (inc/partition_check.inc)
13696
SHOW CREATE TABLE t1;
13698
t1 CREATE TABLE `t1` (
13699
`f_int1` int(11) NOT NULL DEFAULT '0',
13700
`f_int2` int(11) NOT NULL DEFAULT '0',
13701
`f_char1` char(20) DEFAULT NULL,
13702
`f_char2` char(20) DEFAULT NULL,
13703
`f_charbig` varchar(1000) DEFAULT NULL
13704
) ENGINE=InnoDB DEFAULT CHARSET=latin1
13705
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
13706
SUBPARTITION BY HASH (f_int2 + 1)
13707
(PARTITION part1 VALUES IN (0)
13708
(SUBPARTITION sp11 ENGINE = InnoDB,
13709
SUBPARTITION sp12 ENGINE = InnoDB),
13710
PARTITION part2 VALUES IN (1)
13711
(SUBPARTITION sp21 ENGINE = InnoDB,
13712
SUBPARTITION sp22 ENGINE = InnoDB),
13713
PARTITION part3 VALUES IN (2)
13714
(SUBPARTITION sp31 ENGINE = InnoDB,
13715
SUBPARTITION sp32 ENGINE = InnoDB),
13716
PARTITION part4 VALUES IN (NULL)
13717
(SUBPARTITION sp41 ENGINE = InnoDB,
13718
SUBPARTITION sp42 ENGINE = InnoDB)) */
13720
# check prerequisites-1 success: 1
13721
# check COUNT(*) success: 1
13722
# check MIN/MAX(f_int1) success: 1
13723
# check MIN/MAX(f_int2) success: 1
13724
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13725
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
13726
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
13727
WHERE f_int1 IN (2,3);
13728
# check prerequisites-3 success: 1
13729
DELETE FROM t1 WHERE f_charbig = 'delete me';
13730
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
13731
# check read via f_int1 success: 1
13732
# check read via f_int2 success: 1
13734
# check multiple-1 success: 1
13735
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
13737
# check multiple-2 success: 1
13738
INSERT INTO t1 SELECT * FROM t0_template
13739
WHERE MOD(f_int1,3) = 0;
13741
# check multiple-3 success: 1
13742
UPDATE t1 SET f_int1 = f_int1 + @max_row
13743
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
13744
AND @max_row_div2 + @max_row_div4;
13746
# check multiple-4 success: 1
13748
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
13749
AND @max_row_div2 + @max_row_div4 + @max_row;
13751
# check multiple-5 success: 1
13752
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
13754
SET f_int1 = @cur_value , f_int2 = @cur_value,
13755
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13756
f_charbig = '#SINGLE#';
13758
# check single-1 success: 1
13759
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
13761
SET f_int1 = @cur_value , f_int2 = @cur_value,
13762
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
13763
f_charbig = '#SINGLE#';
13765
# check single-2 success: 1
13766
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
13767
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
13768
UPDATE t1 SET f_int1 = @cur_value2
13769
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
13771
# check single-3 success: 1
13772
SET @cur_value1= -1;
13773
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
13774
UPDATE t1 SET f_int1 = @cur_value1
13775
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
13777
# check single-4 success: 1
13778
SELECT MAX(f_int1) INTO @cur_value FROM t1;
13779
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
13781
# check single-5 success: 1
13782
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
13784
# check single-6 success: 1
13785
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
13787
# check single-7 success: 1
13788
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
13789
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
13790
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
13791
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
13792
f_charbig = '#NULL#';
13794
SET f_int1 = NULL , f_int2 = -@max_row,
13795
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
13796
f_charbig = '#NULL#';
13797
ERROR 23000: Column 'f_int1' cannot be null
13798
# check null success: 1
13800
WHERE f_int1 = 0 AND f_int2 = 0
13801
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
13802
AND f_charbig = '#NULL#';
13804
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13805
SELECT f_int1, f_int1, '', '', 'was inserted'
13806
FROM t0_template source_tab
13807
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13809
# check transactions-1 success: 1
13812
# check transactions-2 success: 1
13815
# check transactions-3 success: 1
13816
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13820
# check transactions-4 success: 1
13821
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13822
SELECT f_int1, f_int1, '', '', 'was inserted'
13823
FROM t0_template source_tab
13824
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13826
# check transactions-5 success: 1
13829
# check transactions-6 success: 1
13830
# INFO: Storage engine used for t1 seems to be transactional.
13833
# check transactions-7 success: 1
13834
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13836
SET @@session.sql_mode = 'traditional';
13837
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
13838
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
13839
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
13840
'', '', 'was inserted' FROM t0_template
13841
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
13842
ERROR 22012: Division by 0
13845
# check transactions-8 success: 1
13846
# INFO: Storage engine used for t1 seems to be able to revert
13847
# changes made by the failing statement.
13848
SET @@session.sql_mode = '';
13850
DELETE FROM t1 WHERE f_charbig = 'was inserted';
13852
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
13854
# check special-1 success: 1
13855
UPDATE t1 SET f_charbig = '';
13857
# check special-2 success: 1
13858
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
13859
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
13860
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
13861
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13862
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13863
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13864
'just inserted' FROM t0_template
13865
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13866
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
13868
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13869
f_charbig = 'updated by trigger'
13870
WHERE f_int1 = new.f_int1;
13872
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13873
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13874
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13876
# check trigger-1 success: 1
13877
DROP TRIGGER trg_1;
13878
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13879
f_int2 = CAST(f_char1 AS SIGNED INT),
13880
f_charbig = 'just inserted'
13881
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13883
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13884
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13885
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13886
'just inserted' FROM t0_template
13887
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13888
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
13890
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13891
f_charbig = 'updated by trigger'
13892
WHERE f_int1 = new.f_int1;
13894
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13895
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
13896
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13898
# check trigger-2 success: 1
13899
DROP TRIGGER trg_1;
13900
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13901
f_int2 = CAST(f_char1 AS SIGNED INT),
13902
f_charbig = 'just inserted'
13903
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13905
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13906
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13907
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13908
'just inserted' FROM t0_template
13909
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13910
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13912
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13913
f_charbig = 'updated by trigger'
13914
WHERE f_int1 = new.f_int1;
13916
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13917
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13919
# check trigger-3 success: 1
13920
DROP TRIGGER trg_1;
13921
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13922
f_int2 = CAST(f_char1 AS SIGNED INT),
13923
f_charbig = 'just inserted'
13924
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13926
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13927
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13928
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13929
'just inserted' FROM t0_template
13930
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13931
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
13933
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13934
f_charbig = 'updated by trigger'
13935
WHERE f_int1 = - old.f_int1;
13937
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13938
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13940
# check trigger-4 success: 1
13941
DROP TRIGGER trg_1;
13942
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13943
f_int2 = CAST(f_char1 AS SIGNED INT),
13944
f_charbig = 'just inserted'
13945
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13947
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13948
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13949
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13950
'just inserted' FROM t0_template
13951
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13952
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13954
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13955
f_charbig = 'updated by trigger'
13956
WHERE f_int1 = new.f_int1;
13958
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13959
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13961
# check trigger-5 success: 1
13962
DROP TRIGGER trg_1;
13963
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13964
f_int2 = CAST(f_char1 AS SIGNED INT),
13965
f_charbig = 'just inserted'
13966
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13968
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13969
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13970
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13971
'just inserted' FROM t0_template
13972
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13973
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
13975
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13976
f_charbig = 'updated by trigger'
13977
WHERE f_int1 = - old.f_int1;
13979
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
13980
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
13982
# check trigger-6 success: 1
13983
DROP TRIGGER trg_1;
13984
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
13985
f_int2 = CAST(f_char1 AS SIGNED INT),
13986
f_charbig = 'just inserted'
13987
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
13989
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13990
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
13991
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
13992
'just inserted' FROM t0_template
13993
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
13994
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
13996
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
13997
f_charbig = 'updated by trigger'
13998
WHERE f_int1 = - old.f_int1;
14001
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14003
# check trigger-7 success: 1
14004
DROP TRIGGER trg_1;
14005
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14006
f_int2 = CAST(f_char1 AS SIGNED INT),
14007
f_charbig = 'just inserted'
14008
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14010
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14011
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14012
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14013
'just inserted' FROM t0_template
14014
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14015
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14017
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14018
f_charbig = 'updated by trigger'
14019
WHERE f_int1 = - old.f_int1;
14022
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14024
# check trigger-8 success: 1
14025
DROP TRIGGER trg_1;
14026
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14027
f_int2 = CAST(f_char1 AS SIGNED INT),
14028
f_charbig = 'just inserted'
14029
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14031
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14033
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14034
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14036
SET new.f_int1 = old.f_int1 + @max_row,
14037
new.f_int2 = old.f_int2 - @max_row,
14038
new.f_charbig = '####updated per update trigger####';
14041
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14042
f_charbig = '####updated per update statement itself####';
14044
# check trigger-9 success: 1
14045
DROP TRIGGER trg_2;
14046
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14047
f_int2 = CAST(f_char1 AS SIGNED INT),
14048
f_charbig = CONCAT('===',f_char1,'===');
14049
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14051
SET new.f_int1 = new.f_int1 + @max_row,
14052
new.f_int2 = new.f_int2 - @max_row,
14053
new.f_charbig = '####updated per update trigger####';
14056
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14057
f_charbig = '####updated per update statement itself####';
14059
# check trigger-10 success: 1
14060
DROP TRIGGER trg_2;
14061
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14062
f_int2 = CAST(f_char1 AS SIGNED INT),
14063
f_charbig = CONCAT('===',f_char1,'===');
14064
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14066
SET new.f_int1 = @my_max1 + @counter,
14067
new.f_int2 = @my_min2 - @counter,
14068
new.f_charbig = '####updated per insert trigger####';
14069
SET @counter = @counter + 1;
14072
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14073
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14074
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14075
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14076
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14078
DROP TRIGGER trg_3;
14080
# check trigger-11 success: 1
14082
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14083
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14084
AND f_charbig = '####updated per insert trigger####';
14085
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14087
SET new.f_int1 = @my_max1 + @counter,
14088
new.f_int2 = @my_min2 - @counter,
14089
new.f_charbig = '####updated per insert trigger####';
14090
SET @counter = @counter + 1;
14093
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14094
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14095
SELECT CAST(f_int1 AS CHAR),
14096
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14097
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14099
DROP TRIGGER trg_3;
14101
# check trigger-12 success: 1
14103
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14104
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14105
AND f_charbig = '####updated per insert trigger####';
14107
Table Op Msg_type Msg_text
14108
test.t1 analyze status OK
14109
CHECK TABLE t1 EXTENDED;
14110
Table Op Msg_type Msg_text
14111
test.t1 check status OK
14112
CHECKSUM TABLE t1 EXTENDED;
14114
test.t1 <some_value>
14116
Table Op Msg_type Msg_text
14117
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
14118
test.t1 optimize status OK
14119
# check layout success: 1
14120
REPAIR TABLE t1 EXTENDED;
14121
Table Op Msg_type Msg_text
14122
test.t1 repair note The storage engine for the table doesn't support repair
14123
# check layout success: 1
14126
# check TRUNCATE success: 1
14127
# check layout success: 1
14128
# End usability test (inc/partition_check.inc)
14135
f_charbig VARCHAR(1000)
14136
, PRIMARY KEY(f_int1,f_int2)
14138
PARTITION BY LIST(ABS(MOD(f_int1,2)))
14139
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
14140
(PARTITION part1 VALUES IN (0),
14141
PARTITION part2 VALUES IN (1),
14142
PARTITION part3 VALUES IN (NULL));
14143
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14144
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14145
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14146
ALTER TABLE t1 DROP PRIMARY KEY;
14147
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14148
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14149
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14150
# Start usability test (inc/partition_check.inc)
14152
SHOW CREATE TABLE t1;
14154
t1 CREATE TABLE `t1` (
14155
`f_int1` int(11) NOT NULL DEFAULT '0',
14156
`f_int2` int(11) NOT NULL DEFAULT '0',
14157
`f_char1` char(20) DEFAULT NULL,
14158
`f_char2` char(20) DEFAULT NULL,
14159
`f_charbig` varchar(1000) DEFAULT NULL
14160
) ENGINE=InnoDB DEFAULT CHARSET=latin1
14161
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
14162
SUBPARTITION BY KEY (f_int2)
14164
(PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
14165
PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
14166
PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
14168
# check prerequisites-1 success: 1
14169
# check COUNT(*) success: 1
14170
# check MIN/MAX(f_int1) success: 1
14171
# check MIN/MAX(f_int2) success: 1
14172
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14173
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14174
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14175
WHERE f_int1 IN (2,3);
14176
# check prerequisites-3 success: 1
14177
DELETE FROM t1 WHERE f_charbig = 'delete me';
14178
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14179
# check read via f_int1 success: 1
14180
# check read via f_int2 success: 1
14182
# check multiple-1 success: 1
14183
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14185
# check multiple-2 success: 1
14186
INSERT INTO t1 SELECT * FROM t0_template
14187
WHERE MOD(f_int1,3) = 0;
14189
# check multiple-3 success: 1
14190
UPDATE t1 SET f_int1 = f_int1 + @max_row
14191
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14192
AND @max_row_div2 + @max_row_div4;
14194
# check multiple-4 success: 1
14196
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14197
AND @max_row_div2 + @max_row_div4 + @max_row;
14199
# check multiple-5 success: 1
14200
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14202
SET f_int1 = @cur_value , f_int2 = @cur_value,
14203
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14204
f_charbig = '#SINGLE#';
14206
# check single-1 success: 1
14207
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14209
SET f_int1 = @cur_value , f_int2 = @cur_value,
14210
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14211
f_charbig = '#SINGLE#';
14213
# check single-2 success: 1
14214
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14215
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14216
UPDATE t1 SET f_int1 = @cur_value2
14217
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14219
# check single-3 success: 1
14220
SET @cur_value1= -1;
14221
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14222
UPDATE t1 SET f_int1 = @cur_value1
14223
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14225
# check single-4 success: 1
14226
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14227
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14229
# check single-5 success: 1
14230
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14232
# check single-6 success: 1
14233
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14235
# check single-7 success: 1
14236
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14237
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14238
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14239
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14240
f_charbig = '#NULL#';
14242
SET f_int1 = NULL , f_int2 = -@max_row,
14243
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14244
f_charbig = '#NULL#';
14245
ERROR 23000: Column 'f_int1' cannot be null
14246
# check null success: 1
14248
WHERE f_int1 = 0 AND f_int2 = 0
14249
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14250
AND f_charbig = '#NULL#';
14252
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14253
SELECT f_int1, f_int1, '', '', 'was inserted'
14254
FROM t0_template source_tab
14255
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14257
# check transactions-1 success: 1
14260
# check transactions-2 success: 1
14263
# check transactions-3 success: 1
14264
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14268
# check transactions-4 success: 1
14269
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14270
SELECT f_int1, f_int1, '', '', 'was inserted'
14271
FROM t0_template source_tab
14272
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14274
# check transactions-5 success: 1
14277
# check transactions-6 success: 1
14278
# INFO: Storage engine used for t1 seems to be transactional.
14281
# check transactions-7 success: 1
14282
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14284
SET @@session.sql_mode = 'traditional';
14285
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14286
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14287
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14288
'', '', 'was inserted' FROM t0_template
14289
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14290
ERROR 22012: Division by 0
14293
# check transactions-8 success: 1
14294
# INFO: Storage engine used for t1 seems to be able to revert
14295
# changes made by the failing statement.
14296
SET @@session.sql_mode = '';
14298
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14300
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14302
# check special-1 success: 1
14303
UPDATE t1 SET f_charbig = '';
14305
# check special-2 success: 1
14306
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14307
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14308
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14309
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14310
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14311
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14312
'just inserted' FROM t0_template
14313
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14314
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14316
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14317
f_charbig = 'updated by trigger'
14318
WHERE f_int1 = new.f_int1;
14320
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14321
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14322
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14324
# check trigger-1 success: 1
14325
DROP TRIGGER trg_1;
14326
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14327
f_int2 = CAST(f_char1 AS SIGNED INT),
14328
f_charbig = 'just inserted'
14329
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14331
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14332
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14333
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14334
'just inserted' FROM t0_template
14335
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14336
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14338
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14339
f_charbig = 'updated by trigger'
14340
WHERE f_int1 = new.f_int1;
14342
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14343
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14344
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14346
# check trigger-2 success: 1
14347
DROP TRIGGER trg_1;
14348
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14349
f_int2 = CAST(f_char1 AS SIGNED INT),
14350
f_charbig = 'just inserted'
14351
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14353
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14354
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14355
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14356
'just inserted' FROM t0_template
14357
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14358
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14360
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14361
f_charbig = 'updated by trigger'
14362
WHERE f_int1 = new.f_int1;
14364
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14365
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14367
# check trigger-3 success: 1
14368
DROP TRIGGER trg_1;
14369
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14370
f_int2 = CAST(f_char1 AS SIGNED INT),
14371
f_charbig = 'just inserted'
14372
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14374
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14375
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14376
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14377
'just inserted' FROM t0_template
14378
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14379
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14381
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14382
f_charbig = 'updated by trigger'
14383
WHERE f_int1 = - old.f_int1;
14385
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14386
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14388
# check trigger-4 success: 1
14389
DROP TRIGGER trg_1;
14390
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14391
f_int2 = CAST(f_char1 AS SIGNED INT),
14392
f_charbig = 'just inserted'
14393
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14395
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14396
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14397
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14398
'just inserted' FROM t0_template
14399
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14400
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14402
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14403
f_charbig = 'updated by trigger'
14404
WHERE f_int1 = new.f_int1;
14406
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14407
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14409
# check trigger-5 success: 1
14410
DROP TRIGGER trg_1;
14411
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14412
f_int2 = CAST(f_char1 AS SIGNED INT),
14413
f_charbig = 'just inserted'
14414
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14416
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14417
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14418
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14419
'just inserted' FROM t0_template
14420
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14421
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14423
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14424
f_charbig = 'updated by trigger'
14425
WHERE f_int1 = - old.f_int1;
14427
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14428
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14430
# check trigger-6 success: 1
14431
DROP TRIGGER trg_1;
14432
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14433
f_int2 = CAST(f_char1 AS SIGNED INT),
14434
f_charbig = 'just inserted'
14435
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14437
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14438
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14439
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14440
'just inserted' FROM t0_template
14441
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14442
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14444
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14445
f_charbig = 'updated by trigger'
14446
WHERE f_int1 = - old.f_int1;
14449
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14451
# check trigger-7 success: 1
14452
DROP TRIGGER trg_1;
14453
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14454
f_int2 = CAST(f_char1 AS SIGNED INT),
14455
f_charbig = 'just inserted'
14456
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14458
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14459
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14460
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14461
'just inserted' FROM t0_template
14462
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14463
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14465
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14466
f_charbig = 'updated by trigger'
14467
WHERE f_int1 = - old.f_int1;
14470
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14472
# check trigger-8 success: 1
14473
DROP TRIGGER trg_1;
14474
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14475
f_int2 = CAST(f_char1 AS SIGNED INT),
14476
f_charbig = 'just inserted'
14477
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14479
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14481
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14482
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14484
SET new.f_int1 = old.f_int1 + @max_row,
14485
new.f_int2 = old.f_int2 - @max_row,
14486
new.f_charbig = '####updated per update trigger####';
14489
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14490
f_charbig = '####updated per update statement itself####';
14492
# check trigger-9 success: 1
14493
DROP TRIGGER trg_2;
14494
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14495
f_int2 = CAST(f_char1 AS SIGNED INT),
14496
f_charbig = CONCAT('===',f_char1,'===');
14497
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14499
SET new.f_int1 = new.f_int1 + @max_row,
14500
new.f_int2 = new.f_int2 - @max_row,
14501
new.f_charbig = '####updated per update trigger####';
14504
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14505
f_charbig = '####updated per update statement itself####';
14507
# check trigger-10 success: 1
14508
DROP TRIGGER trg_2;
14509
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14510
f_int2 = CAST(f_char1 AS SIGNED INT),
14511
f_charbig = CONCAT('===',f_char1,'===');
14512
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14514
SET new.f_int1 = @my_max1 + @counter,
14515
new.f_int2 = @my_min2 - @counter,
14516
new.f_charbig = '####updated per insert trigger####';
14517
SET @counter = @counter + 1;
14520
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14521
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14522
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14523
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14524
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14526
DROP TRIGGER trg_3;
14528
# check trigger-11 success: 1
14530
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14531
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14532
AND f_charbig = '####updated per insert trigger####';
14533
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14535
SET new.f_int1 = @my_max1 + @counter,
14536
new.f_int2 = @my_min2 - @counter,
14537
new.f_charbig = '####updated per insert trigger####';
14538
SET @counter = @counter + 1;
14541
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14542
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14543
SELECT CAST(f_int1 AS CHAR),
14544
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14545
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14547
DROP TRIGGER trg_3;
14549
# check trigger-12 success: 1
14551
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14552
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14553
AND f_charbig = '####updated per insert trigger####';
14555
Table Op Msg_type Msg_text
14556
test.t1 analyze status OK
14557
CHECK TABLE t1 EXTENDED;
14558
Table Op Msg_type Msg_text
14559
test.t1 check status OK
14560
CHECKSUM TABLE t1 EXTENDED;
14562
test.t1 <some_value>
14564
Table Op Msg_type Msg_text
14565
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
14566
test.t1 optimize status OK
14567
# check layout success: 1
14568
REPAIR TABLE t1 EXTENDED;
14569
Table Op Msg_type Msg_text
14570
test.t1 repair note The storage engine for the table doesn't support repair
14571
# check layout success: 1
14574
# check TRUNCATE success: 1
14575
# check layout success: 1
14576
# End usability test (inc/partition_check.inc)
14578
DROP TABLE IF EXISTS t1;
14584
f_charbig VARCHAR(1000)
14585
, PRIMARY KEY(f_int2,f_int1)
14587
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
14588
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14589
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14590
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
14591
ALTER TABLE t1 DROP PRIMARY KEY;
14592
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14593
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
14594
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
14595
# Start usability test (inc/partition_check.inc)
14597
SHOW CREATE TABLE t1;
14599
t1 CREATE TABLE `t1` (
14600
`f_int1` int(11) NOT NULL DEFAULT '0',
14601
`f_int2` int(11) NOT NULL DEFAULT '0',
14602
`f_char1` char(20) DEFAULT NULL,
14603
`f_char2` char(20) DEFAULT NULL,
14604
`f_charbig` varchar(1000) DEFAULT NULL
14605
) ENGINE=InnoDB DEFAULT CHARSET=latin1
14606
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
14609
# check prerequisites-1 success: 1
14610
# check COUNT(*) success: 1
14611
# check MIN/MAX(f_int1) success: 1
14612
# check MIN/MAX(f_int2) success: 1
14613
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14614
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14615
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
14616
WHERE f_int1 IN (2,3);
14617
# check prerequisites-3 success: 1
14618
DELETE FROM t1 WHERE f_charbig = 'delete me';
14619
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
14620
# check read via f_int1 success: 1
14621
# check read via f_int2 success: 1
14623
# check multiple-1 success: 1
14624
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
14626
# check multiple-2 success: 1
14627
INSERT INTO t1 SELECT * FROM t0_template
14628
WHERE MOD(f_int1,3) = 0;
14630
# check multiple-3 success: 1
14631
UPDATE t1 SET f_int1 = f_int1 + @max_row
14632
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
14633
AND @max_row_div2 + @max_row_div4;
14635
# check multiple-4 success: 1
14637
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
14638
AND @max_row_div2 + @max_row_div4 + @max_row;
14640
# check multiple-5 success: 1
14641
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
14643
SET f_int1 = @cur_value , f_int2 = @cur_value,
14644
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14645
f_charbig = '#SINGLE#';
14647
# check single-1 success: 1
14648
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
14650
SET f_int1 = @cur_value , f_int2 = @cur_value,
14651
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
14652
f_charbig = '#SINGLE#';
14654
# check single-2 success: 1
14655
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
14656
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
14657
UPDATE t1 SET f_int1 = @cur_value2
14658
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
14660
# check single-3 success: 1
14661
SET @cur_value1= -1;
14662
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
14663
UPDATE t1 SET f_int1 = @cur_value1
14664
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
14666
# check single-4 success: 1
14667
SELECT MAX(f_int1) INTO @cur_value FROM t1;
14668
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
14670
# check single-5 success: 1
14671
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
14673
# check single-6 success: 1
14674
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
14676
# check single-7 success: 1
14677
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
14678
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
14679
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
14680
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
14681
f_charbig = '#NULL#';
14683
SET f_int1 = NULL , f_int2 = -@max_row,
14684
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
14685
f_charbig = '#NULL#';
14686
ERROR 23000: Column 'f_int1' cannot be null
14687
# check null success: 1
14689
WHERE f_int1 = 0 AND f_int2 = 0
14690
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
14691
AND f_charbig = '#NULL#';
14693
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14694
SELECT f_int1, f_int1, '', '', 'was inserted'
14695
FROM t0_template source_tab
14696
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14698
# check transactions-1 success: 1
14701
# check transactions-2 success: 1
14704
# check transactions-3 success: 1
14705
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14709
# check transactions-4 success: 1
14710
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14711
SELECT f_int1, f_int1, '', '', 'was inserted'
14712
FROM t0_template source_tab
14713
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14715
# check transactions-5 success: 1
14718
# check transactions-6 success: 1
14719
# INFO: Storage engine used for t1 seems to be transactional.
14722
# check transactions-7 success: 1
14723
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14725
SET @@session.sql_mode = 'traditional';
14726
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
14727
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14728
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
14729
'', '', 'was inserted' FROM t0_template
14730
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
14731
ERROR 22012: Division by 0
14734
# check transactions-8 success: 1
14735
# INFO: Storage engine used for t1 seems to be able to revert
14736
# changes made by the failing statement.
14737
SET @@session.sql_mode = '';
14739
DELETE FROM t1 WHERE f_charbig = 'was inserted';
14741
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
14743
# check special-1 success: 1
14744
UPDATE t1 SET f_charbig = '';
14746
# check special-2 success: 1
14747
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
14748
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
14749
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
14750
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14751
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14752
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14753
'just inserted' FROM t0_template
14754
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14755
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
14757
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14758
f_charbig = 'updated by trigger'
14759
WHERE f_int1 = new.f_int1;
14761
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14762
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14763
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14765
# check trigger-1 success: 1
14766
DROP TRIGGER trg_1;
14767
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14768
f_int2 = CAST(f_char1 AS SIGNED INT),
14769
f_charbig = 'just inserted'
14770
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14772
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14773
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14774
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14775
'just inserted' FROM t0_template
14776
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14777
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
14779
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14780
f_charbig = 'updated by trigger'
14781
WHERE f_int1 = new.f_int1;
14783
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14784
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
14785
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14787
# check trigger-2 success: 1
14788
DROP TRIGGER trg_1;
14789
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14790
f_int2 = CAST(f_char1 AS SIGNED INT),
14791
f_charbig = 'just inserted'
14792
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14794
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14795
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14796
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14797
'just inserted' FROM t0_template
14798
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14799
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14801
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14802
f_charbig = 'updated by trigger'
14803
WHERE f_int1 = new.f_int1;
14805
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14806
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14808
# check trigger-3 success: 1
14809
DROP TRIGGER trg_1;
14810
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14811
f_int2 = CAST(f_char1 AS SIGNED INT),
14812
f_charbig = 'just inserted'
14813
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14815
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14816
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14817
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14818
'just inserted' FROM t0_template
14819
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14820
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
14822
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14823
f_charbig = 'updated by trigger'
14824
WHERE f_int1 = - old.f_int1;
14826
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14827
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14829
# check trigger-4 success: 1
14830
DROP TRIGGER trg_1;
14831
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14832
f_int2 = CAST(f_char1 AS SIGNED INT),
14833
f_charbig = 'just inserted'
14834
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14836
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14837
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14838
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14839
'just inserted' FROM t0_template
14840
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14841
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14843
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14844
f_charbig = 'updated by trigger'
14845
WHERE f_int1 = new.f_int1;
14847
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14848
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14850
# check trigger-5 success: 1
14851
DROP TRIGGER trg_1;
14852
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14853
f_int2 = CAST(f_char1 AS SIGNED INT),
14854
f_charbig = 'just inserted'
14855
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14857
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14858
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14859
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14860
'just inserted' FROM t0_template
14861
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14862
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
14864
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14865
f_charbig = 'updated by trigger'
14866
WHERE f_int1 = - old.f_int1;
14868
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
14869
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14871
# check trigger-6 success: 1
14872
DROP TRIGGER trg_1;
14873
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14874
f_int2 = CAST(f_char1 AS SIGNED INT),
14875
f_charbig = 'just inserted'
14876
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14878
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14879
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14880
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14881
'just inserted' FROM t0_template
14882
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14883
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
14885
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14886
f_charbig = 'updated by trigger'
14887
WHERE f_int1 = - old.f_int1;
14890
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14892
# check trigger-7 success: 1
14893
DROP TRIGGER trg_1;
14894
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14895
f_int2 = CAST(f_char1 AS SIGNED INT),
14896
f_charbig = 'just inserted'
14897
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14899
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14900
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
14901
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
14902
'just inserted' FROM t0_template
14903
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14904
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
14906
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
14907
f_charbig = 'updated by trigger'
14908
WHERE f_int1 = - old.f_int1;
14911
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
14913
# check trigger-8 success: 1
14914
DROP TRIGGER trg_1;
14915
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14916
f_int2 = CAST(f_char1 AS SIGNED INT),
14917
f_charbig = 'just inserted'
14918
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
14920
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14922
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
14923
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14925
SET new.f_int1 = old.f_int1 + @max_row,
14926
new.f_int2 = old.f_int2 - @max_row,
14927
new.f_charbig = '####updated per update trigger####';
14930
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14931
f_charbig = '####updated per update statement itself####';
14933
# check trigger-9 success: 1
14934
DROP TRIGGER trg_2;
14935
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14936
f_int2 = CAST(f_char1 AS SIGNED INT),
14937
f_charbig = CONCAT('===',f_char1,'===');
14938
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
14940
SET new.f_int1 = new.f_int1 + @max_row,
14941
new.f_int2 = new.f_int2 - @max_row,
14942
new.f_charbig = '####updated per update trigger####';
14945
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
14946
f_charbig = '####updated per update statement itself####';
14948
# check trigger-10 success: 1
14949
DROP TRIGGER trg_2;
14950
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
14951
f_int2 = CAST(f_char1 AS SIGNED INT),
14952
f_charbig = CONCAT('===',f_char1,'===');
14953
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14955
SET new.f_int1 = @my_max1 + @counter,
14956
new.f_int2 = @my_min2 - @counter,
14957
new.f_charbig = '####updated per insert trigger####';
14958
SET @counter = @counter + 1;
14961
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14962
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
14963
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
14964
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14965
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14967
DROP TRIGGER trg_3;
14969
# check trigger-11 success: 1
14971
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14972
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14973
AND f_charbig = '####updated per insert trigger####';
14974
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
14976
SET new.f_int1 = @my_max1 + @counter,
14977
new.f_int2 = @my_min2 - @counter,
14978
new.f_charbig = '####updated per insert trigger####';
14979
SET @counter = @counter + 1;
14982
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
14983
INSERT INTO t1 (f_char1, f_char2, f_charbig)
14984
SELECT CAST(f_int1 AS CHAR),
14985
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
14986
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
14988
DROP TRIGGER trg_3;
14990
# check trigger-12 success: 1
14992
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
14993
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
14994
AND f_charbig = '####updated per insert trigger####';
14996
Table Op Msg_type Msg_text
14997
test.t1 analyze status OK
14998
CHECK TABLE t1 EXTENDED;
14999
Table Op Msg_type Msg_text
15000
test.t1 check status OK
15001
CHECKSUM TABLE t1 EXTENDED;
15003
test.t1 <some_value>
15005
Table Op Msg_type Msg_text
15006
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
15007
test.t1 optimize status OK
15008
# check layout success: 1
15009
REPAIR TABLE t1 EXTENDED;
15010
Table Op Msg_type Msg_text
15011
test.t1 repair note The storage engine for the table doesn't support repair
15012
# check layout success: 1
15015
# check TRUNCATE success: 1
15016
# check layout success: 1
15017
# End usability test (inc/partition_check.inc)
15024
f_charbig VARCHAR(1000)
15025
, PRIMARY KEY(f_int2,f_int1)
15027
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
15028
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15029
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15030
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15031
ALTER TABLE t1 DROP PRIMARY KEY;
15032
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15033
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15034
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15035
# Start usability test (inc/partition_check.inc)
15037
SHOW CREATE TABLE t1;
15039
t1 CREATE TABLE `t1` (
15040
`f_int1` int(11) NOT NULL DEFAULT '0',
15041
`f_int2` int(11) NOT NULL DEFAULT '0',
15042
`f_char1` char(20) DEFAULT NULL,
15043
`f_char2` char(20) DEFAULT NULL,
15044
`f_charbig` varchar(1000) DEFAULT NULL
15045
) ENGINE=InnoDB DEFAULT CHARSET=latin1
15046
/*!50100 PARTITION BY KEY (f_int1,f_int2)
15049
# check prerequisites-1 success: 1
15050
# check COUNT(*) success: 1
15051
# check MIN/MAX(f_int1) success: 1
15052
# check MIN/MAX(f_int2) success: 1
15053
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15054
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15055
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15056
WHERE f_int1 IN (2,3);
15057
# check prerequisites-3 success: 1
15058
DELETE FROM t1 WHERE f_charbig = 'delete me';
15059
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
15060
# check read via f_int1 success: 1
15061
# check read via f_int2 success: 1
15063
# check multiple-1 success: 1
15064
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15066
# check multiple-2 success: 1
15067
INSERT INTO t1 SELECT * FROM t0_template
15068
WHERE MOD(f_int1,3) = 0;
15070
# check multiple-3 success: 1
15071
UPDATE t1 SET f_int1 = f_int1 + @max_row
15072
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15073
AND @max_row_div2 + @max_row_div4;
15075
# check multiple-4 success: 1
15077
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15078
AND @max_row_div2 + @max_row_div4 + @max_row;
15080
# check multiple-5 success: 1
15081
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15083
SET f_int1 = @cur_value , f_int2 = @cur_value,
15084
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15085
f_charbig = '#SINGLE#';
15087
# check single-1 success: 1
15088
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15090
SET f_int1 = @cur_value , f_int2 = @cur_value,
15091
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15092
f_charbig = '#SINGLE#';
15094
# check single-2 success: 1
15095
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15096
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15097
UPDATE t1 SET f_int1 = @cur_value2
15098
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15100
# check single-3 success: 1
15101
SET @cur_value1= -1;
15102
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15103
UPDATE t1 SET f_int1 = @cur_value1
15104
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15106
# check single-4 success: 1
15107
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15108
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15110
# check single-5 success: 1
15111
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15113
# check single-6 success: 1
15114
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15116
# check single-7 success: 1
15117
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15118
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15119
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15120
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15121
f_charbig = '#NULL#';
15123
SET f_int1 = NULL , f_int2 = -@max_row,
15124
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15125
f_charbig = '#NULL#';
15126
ERROR 23000: Column 'f_int1' cannot be null
15127
# check null success: 1
15129
WHERE f_int1 = 0 AND f_int2 = 0
15130
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15131
AND f_charbig = '#NULL#';
15133
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15134
SELECT f_int1, f_int1, '', '', 'was inserted'
15135
FROM t0_template source_tab
15136
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15138
# check transactions-1 success: 1
15141
# check transactions-2 success: 1
15144
# check transactions-3 success: 1
15145
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15149
# check transactions-4 success: 1
15150
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15151
SELECT f_int1, f_int1, '', '', 'was inserted'
15152
FROM t0_template source_tab
15153
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15155
# check transactions-5 success: 1
15158
# check transactions-6 success: 1
15159
# INFO: Storage engine used for t1 seems to be transactional.
15162
# check transactions-7 success: 1
15163
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15165
SET @@session.sql_mode = 'traditional';
15166
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15167
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15168
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15169
'', '', 'was inserted' FROM t0_template
15170
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15171
ERROR 22012: Division by 0
15174
# check transactions-8 success: 1
15175
# INFO: Storage engine used for t1 seems to be able to revert
15176
# changes made by the failing statement.
15177
SET @@session.sql_mode = '';
15179
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15181
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15183
# check special-1 success: 1
15184
UPDATE t1 SET f_charbig = '';
15186
# check special-2 success: 1
15187
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15188
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15189
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15190
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15191
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15192
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15193
'just inserted' FROM t0_template
15194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15195
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15197
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15198
f_charbig = 'updated by trigger'
15199
WHERE f_int1 = new.f_int1;
15201
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15202
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15203
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15205
# check trigger-1 success: 1
15206
DROP TRIGGER trg_1;
15207
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15208
f_int2 = CAST(f_char1 AS SIGNED INT),
15209
f_charbig = 'just inserted'
15210
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15212
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15213
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15214
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15215
'just inserted' FROM t0_template
15216
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15217
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15219
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15220
f_charbig = 'updated by trigger'
15221
WHERE f_int1 = new.f_int1;
15223
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15224
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15225
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15227
# check trigger-2 success: 1
15228
DROP TRIGGER trg_1;
15229
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15230
f_int2 = CAST(f_char1 AS SIGNED INT),
15231
f_charbig = 'just inserted'
15232
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15234
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15235
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15236
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15237
'just inserted' FROM t0_template
15238
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15239
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15241
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15242
f_charbig = 'updated by trigger'
15243
WHERE f_int1 = new.f_int1;
15245
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15246
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15248
# check trigger-3 success: 1
15249
DROP TRIGGER trg_1;
15250
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15251
f_int2 = CAST(f_char1 AS SIGNED INT),
15252
f_charbig = 'just inserted'
15253
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15255
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15256
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15257
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15258
'just inserted' FROM t0_template
15259
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15260
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15262
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15263
f_charbig = 'updated by trigger'
15264
WHERE f_int1 = - old.f_int1;
15266
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15267
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15269
# check trigger-4 success: 1
15270
DROP TRIGGER trg_1;
15271
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15272
f_int2 = CAST(f_char1 AS SIGNED INT),
15273
f_charbig = 'just inserted'
15274
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15276
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15277
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15278
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15279
'just inserted' FROM t0_template
15280
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15281
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15283
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15284
f_charbig = 'updated by trigger'
15285
WHERE f_int1 = new.f_int1;
15287
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15288
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15290
# check trigger-5 success: 1
15291
DROP TRIGGER trg_1;
15292
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15293
f_int2 = CAST(f_char1 AS SIGNED INT),
15294
f_charbig = 'just inserted'
15295
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15297
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15298
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15299
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15300
'just inserted' FROM t0_template
15301
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15302
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15304
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15305
f_charbig = 'updated by trigger'
15306
WHERE f_int1 = - old.f_int1;
15308
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15309
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15311
# check trigger-6 success: 1
15312
DROP TRIGGER trg_1;
15313
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15314
f_int2 = CAST(f_char1 AS SIGNED INT),
15315
f_charbig = 'just inserted'
15316
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15318
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15319
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15320
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15321
'just inserted' FROM t0_template
15322
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15323
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15325
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15326
f_charbig = 'updated by trigger'
15327
WHERE f_int1 = - old.f_int1;
15330
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15332
# check trigger-7 success: 1
15333
DROP TRIGGER trg_1;
15334
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15335
f_int2 = CAST(f_char1 AS SIGNED INT),
15336
f_charbig = 'just inserted'
15337
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15339
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15340
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15341
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15342
'just inserted' FROM t0_template
15343
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15344
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15346
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15347
f_charbig = 'updated by trigger'
15348
WHERE f_int1 = - old.f_int1;
15351
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15353
# check trigger-8 success: 1
15354
DROP TRIGGER trg_1;
15355
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15356
f_int2 = CAST(f_char1 AS SIGNED INT),
15357
f_charbig = 'just inserted'
15358
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15360
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15362
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15363
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15365
SET new.f_int1 = old.f_int1 + @max_row,
15366
new.f_int2 = old.f_int2 - @max_row,
15367
new.f_charbig = '####updated per update trigger####';
15370
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15371
f_charbig = '####updated per update statement itself####';
15373
# check trigger-9 success: 1
15374
DROP TRIGGER trg_2;
15375
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15376
f_int2 = CAST(f_char1 AS SIGNED INT),
15377
f_charbig = CONCAT('===',f_char1,'===');
15378
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15380
SET new.f_int1 = new.f_int1 + @max_row,
15381
new.f_int2 = new.f_int2 - @max_row,
15382
new.f_charbig = '####updated per update trigger####';
15385
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15386
f_charbig = '####updated per update statement itself####';
15388
# check trigger-10 success: 1
15389
DROP TRIGGER trg_2;
15390
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15391
f_int2 = CAST(f_char1 AS SIGNED INT),
15392
f_charbig = CONCAT('===',f_char1,'===');
15393
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15395
SET new.f_int1 = @my_max1 + @counter,
15396
new.f_int2 = @my_min2 - @counter,
15397
new.f_charbig = '####updated per insert trigger####';
15398
SET @counter = @counter + 1;
15401
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15402
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15403
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15404
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15405
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15407
DROP TRIGGER trg_3;
15409
# check trigger-11 success: 1
15411
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15412
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15413
AND f_charbig = '####updated per insert trigger####';
15414
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15416
SET new.f_int1 = @my_max1 + @counter,
15417
new.f_int2 = @my_min2 - @counter,
15418
new.f_charbig = '####updated per insert trigger####';
15419
SET @counter = @counter + 1;
15422
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15423
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15424
SELECT CAST(f_int1 AS CHAR),
15425
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15426
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15428
DROP TRIGGER trg_3;
15430
# check trigger-12 success: 1
15432
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15433
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15434
AND f_charbig = '####updated per insert trigger####';
15436
Table Op Msg_type Msg_text
15437
test.t1 analyze status OK
15438
CHECK TABLE t1 EXTENDED;
15439
Table Op Msg_type Msg_text
15440
test.t1 check status OK
15441
CHECKSUM TABLE t1 EXTENDED;
15443
test.t1 <some_value>
15445
Table Op Msg_type Msg_text
15446
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
15447
test.t1 optimize status OK
15448
# check layout success: 1
15449
REPAIR TABLE t1 EXTENDED;
15450
Table Op Msg_type Msg_text
15451
test.t1 repair note The storage engine for the table doesn't support repair
15452
# check layout success: 1
15455
# check TRUNCATE success: 1
15456
# check layout success: 1
15457
# End usability test (inc/partition_check.inc)
15464
f_charbig VARCHAR(1000)
15465
, PRIMARY KEY(f_int2,f_int1)
15467
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
15468
(PARTITION part_3 VALUES IN (-3),
15469
PARTITION part_2 VALUES IN (-2),
15470
PARTITION part_1 VALUES IN (-1),
15471
PARTITION part_N VALUES IN (NULL),
15472
PARTITION part0 VALUES IN (0),
15473
PARTITION part1 VALUES IN (1),
15474
PARTITION part2 VALUES IN (2),
15475
PARTITION part3 VALUES IN (3));
15476
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15477
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15478
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15479
ALTER TABLE t1 DROP PRIMARY KEY;
15480
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15481
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15482
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15483
# Start usability test (inc/partition_check.inc)
15485
SHOW CREATE TABLE t1;
15487
t1 CREATE TABLE `t1` (
15488
`f_int1` int(11) NOT NULL DEFAULT '0',
15489
`f_int2` int(11) NOT NULL DEFAULT '0',
15490
`f_char1` char(20) DEFAULT NULL,
15491
`f_char2` char(20) DEFAULT NULL,
15492
`f_charbig` varchar(1000) DEFAULT NULL
15493
) ENGINE=InnoDB DEFAULT CHARSET=latin1
15494
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
15495
(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
15496
PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
15497
PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
15498
PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
15499
PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
15500
PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
15501
PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
15502
PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
15504
# check prerequisites-1 success: 1
15505
# check COUNT(*) success: 1
15506
# check MIN/MAX(f_int1) success: 1
15507
# check MIN/MAX(f_int2) success: 1
15508
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15509
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15510
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15511
WHERE f_int1 IN (2,3);
15512
# check prerequisites-3 success: 1
15513
DELETE FROM t1 WHERE f_charbig = 'delete me';
15514
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
15515
# check read via f_int1 success: 1
15516
# check read via f_int2 success: 1
15518
# check multiple-1 success: 1
15519
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15521
# check multiple-2 success: 1
15522
INSERT INTO t1 SELECT * FROM t0_template
15523
WHERE MOD(f_int1,3) = 0;
15525
# check multiple-3 success: 1
15526
UPDATE t1 SET f_int1 = f_int1 + @max_row
15527
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15528
AND @max_row_div2 + @max_row_div4;
15530
# check multiple-4 success: 1
15532
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15533
AND @max_row_div2 + @max_row_div4 + @max_row;
15535
# check multiple-5 success: 1
15536
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15538
SET f_int1 = @cur_value , f_int2 = @cur_value,
15539
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15540
f_charbig = '#SINGLE#';
15542
# check single-1 success: 1
15543
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15545
SET f_int1 = @cur_value , f_int2 = @cur_value,
15546
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15547
f_charbig = '#SINGLE#';
15549
# check single-2 success: 1
15550
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
15551
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
15552
UPDATE t1 SET f_int1 = @cur_value2
15553
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
15555
# check single-3 success: 1
15556
SET @cur_value1= -1;
15557
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
15558
UPDATE t1 SET f_int1 = @cur_value1
15559
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
15561
# check single-4 success: 1
15562
SELECT MAX(f_int1) INTO @cur_value FROM t1;
15563
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
15565
# check single-5 success: 1
15566
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
15568
# check single-6 success: 1
15569
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
15571
# check single-7 success: 1
15572
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
15573
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
15574
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
15575
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
15576
f_charbig = '#NULL#';
15578
SET f_int1 = NULL , f_int2 = -@max_row,
15579
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
15580
f_charbig = '#NULL#';
15581
ERROR 23000: Column 'f_int1' cannot be null
15582
# check null success: 1
15584
WHERE f_int1 = 0 AND f_int2 = 0
15585
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
15586
AND f_charbig = '#NULL#';
15588
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15589
SELECT f_int1, f_int1, '', '', 'was inserted'
15590
FROM t0_template source_tab
15591
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15593
# check transactions-1 success: 1
15596
# check transactions-2 success: 1
15599
# check transactions-3 success: 1
15600
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15604
# check transactions-4 success: 1
15605
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15606
SELECT f_int1, f_int1, '', '', 'was inserted'
15607
FROM t0_template source_tab
15608
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15610
# check transactions-5 success: 1
15613
# check transactions-6 success: 1
15614
# INFO: Storage engine used for t1 seems to be transactional.
15617
# check transactions-7 success: 1
15618
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15620
SET @@session.sql_mode = 'traditional';
15621
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
15622
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15623
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
15624
'', '', 'was inserted' FROM t0_template
15625
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
15626
ERROR 22012: Division by 0
15629
# check transactions-8 success: 1
15630
# INFO: Storage engine used for t1 seems to be able to revert
15631
# changes made by the failing statement.
15632
SET @@session.sql_mode = '';
15634
DELETE FROM t1 WHERE f_charbig = 'was inserted';
15636
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
15638
# check special-1 success: 1
15639
UPDATE t1 SET f_charbig = '';
15641
# check special-2 success: 1
15642
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
15643
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15644
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
15645
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15646
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15647
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15648
'just inserted' FROM t0_template
15649
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15650
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
15652
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15653
f_charbig = 'updated by trigger'
15654
WHERE f_int1 = new.f_int1;
15656
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15657
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15658
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15660
# check trigger-1 success: 1
15661
DROP TRIGGER trg_1;
15662
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15663
f_int2 = CAST(f_char1 AS SIGNED INT),
15664
f_charbig = 'just inserted'
15665
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15667
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15668
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15669
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15670
'just inserted' FROM t0_template
15671
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15672
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
15674
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15675
f_charbig = 'updated by trigger'
15676
WHERE f_int1 = new.f_int1;
15678
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15679
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
15680
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15682
# check trigger-2 success: 1
15683
DROP TRIGGER trg_1;
15684
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15685
f_int2 = CAST(f_char1 AS SIGNED INT),
15686
f_charbig = 'just inserted'
15687
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15689
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15690
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15691
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15692
'just inserted' FROM t0_template
15693
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15694
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15696
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15697
f_charbig = 'updated by trigger'
15698
WHERE f_int1 = new.f_int1;
15700
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15701
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15703
# check trigger-3 success: 1
15704
DROP TRIGGER trg_1;
15705
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15706
f_int2 = CAST(f_char1 AS SIGNED INT),
15707
f_charbig = 'just inserted'
15708
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15710
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15711
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15712
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15713
'just inserted' FROM t0_template
15714
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15715
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
15717
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15718
f_charbig = 'updated by trigger'
15719
WHERE f_int1 = - old.f_int1;
15721
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15722
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15724
# check trigger-4 success: 1
15725
DROP TRIGGER trg_1;
15726
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15727
f_int2 = CAST(f_char1 AS SIGNED INT),
15728
f_charbig = 'just inserted'
15729
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15731
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15732
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15733
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15734
'just inserted' FROM t0_template
15735
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15736
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15738
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15739
f_charbig = 'updated by trigger'
15740
WHERE f_int1 = new.f_int1;
15742
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15743
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15745
# check trigger-5 success: 1
15746
DROP TRIGGER trg_1;
15747
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15748
f_int2 = CAST(f_char1 AS SIGNED INT),
15749
f_charbig = 'just inserted'
15750
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15752
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15753
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15754
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15755
'just inserted' FROM t0_template
15756
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15757
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
15759
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15760
f_charbig = 'updated by trigger'
15761
WHERE f_int1 = - old.f_int1;
15763
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
15764
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15766
# check trigger-6 success: 1
15767
DROP TRIGGER trg_1;
15768
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15769
f_int2 = CAST(f_char1 AS SIGNED INT),
15770
f_charbig = 'just inserted'
15771
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15773
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15774
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15775
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15776
'just inserted' FROM t0_template
15777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15778
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
15780
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15781
f_charbig = 'updated by trigger'
15782
WHERE f_int1 = - old.f_int1;
15785
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15787
# check trigger-7 success: 1
15788
DROP TRIGGER trg_1;
15789
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15790
f_int2 = CAST(f_char1 AS SIGNED INT),
15791
f_charbig = 'just inserted'
15792
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15794
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15795
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
15796
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
15797
'just inserted' FROM t0_template
15798
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15799
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
15801
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
15802
f_charbig = 'updated by trigger'
15803
WHERE f_int1 = - old.f_int1;
15806
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
15808
# check trigger-8 success: 1
15809
DROP TRIGGER trg_1;
15810
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15811
f_int2 = CAST(f_char1 AS SIGNED INT),
15812
f_charbig = 'just inserted'
15813
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
15815
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15817
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
15818
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15820
SET new.f_int1 = old.f_int1 + @max_row,
15821
new.f_int2 = old.f_int2 - @max_row,
15822
new.f_charbig = '####updated per update trigger####';
15825
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15826
f_charbig = '####updated per update statement itself####';
15828
# check trigger-9 success: 1
15829
DROP TRIGGER trg_2;
15830
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15831
f_int2 = CAST(f_char1 AS SIGNED INT),
15832
f_charbig = CONCAT('===',f_char1,'===');
15833
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
15835
SET new.f_int1 = new.f_int1 + @max_row,
15836
new.f_int2 = new.f_int2 - @max_row,
15837
new.f_charbig = '####updated per update trigger####';
15840
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
15841
f_charbig = '####updated per update statement itself####';
15843
# check trigger-10 success: 1
15844
DROP TRIGGER trg_2;
15845
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
15846
f_int2 = CAST(f_char1 AS SIGNED INT),
15847
f_charbig = CONCAT('===',f_char1,'===');
15848
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15850
SET new.f_int1 = @my_max1 + @counter,
15851
new.f_int2 = @my_min2 - @counter,
15852
new.f_charbig = '####updated per insert trigger####';
15853
SET @counter = @counter + 1;
15856
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15857
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15858
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15859
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15860
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15862
DROP TRIGGER trg_3;
15864
# check trigger-11 success: 1
15866
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15867
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15868
AND f_charbig = '####updated per insert trigger####';
15869
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
15871
SET new.f_int1 = @my_max1 + @counter,
15872
new.f_int2 = @my_min2 - @counter,
15873
new.f_charbig = '####updated per insert trigger####';
15874
SET @counter = @counter + 1;
15877
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
15878
INSERT INTO t1 (f_char1, f_char2, f_charbig)
15879
SELECT CAST(f_int1 AS CHAR),
15880
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
15881
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
15883
DROP TRIGGER trg_3;
15885
# check trigger-12 success: 1
15887
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
15888
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
15889
AND f_charbig = '####updated per insert trigger####';
15891
Table Op Msg_type Msg_text
15892
test.t1 analyze status OK
15893
CHECK TABLE t1 EXTENDED;
15894
Table Op Msg_type Msg_text
15895
test.t1 check status OK
15896
CHECKSUM TABLE t1 EXTENDED;
15898
test.t1 <some_value>
15900
Table Op Msg_type Msg_text
15901
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
15902
test.t1 optimize status OK
15903
# check layout success: 1
15904
REPAIR TABLE t1 EXTENDED;
15905
Table Op Msg_type Msg_text
15906
test.t1 repair note The storage engine for the table doesn't support repair
15907
# check layout success: 1
15910
# check TRUNCATE success: 1
15911
# check layout success: 1
15912
# End usability test (inc/partition_check.inc)
15919
f_charbig VARCHAR(1000)
15920
, PRIMARY KEY(f_int2,f_int1)
15922
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
15923
(PARTITION parta VALUES LESS THAN (0),
15924
PARTITION partb VALUES LESS THAN (5),
15925
PARTITION partc VALUES LESS THAN (10),
15926
PARTITION partd VALUES LESS THAN (10 + 5),
15927
PARTITION parte VALUES LESS THAN (20),
15928
PARTITION partf VALUES LESS THAN (2147483646));
15929
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15930
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15931
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
15932
ALTER TABLE t1 DROP PRIMARY KEY;
15933
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
15934
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
15935
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
15936
# Start usability test (inc/partition_check.inc)
15938
SHOW CREATE TABLE t1;
15940
t1 CREATE TABLE `t1` (
15941
`f_int1` int(11) NOT NULL DEFAULT '0',
15942
`f_int2` int(11) NOT NULL DEFAULT '0',
15943
`f_char1` char(20) DEFAULT NULL,
15944
`f_char2` char(20) DEFAULT NULL,
15945
`f_charbig` varchar(1000) DEFAULT NULL
15946
) ENGINE=InnoDB DEFAULT CHARSET=latin1
15947
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
15948
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
15949
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
15950
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
15951
PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
15952
PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
15953
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
15955
# check prerequisites-1 success: 1
15956
# check COUNT(*) success: 1
15957
# check MIN/MAX(f_int1) success: 1
15958
# check MIN/MAX(f_int2) success: 1
15959
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
15960
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
15961
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
15962
WHERE f_int1 IN (2,3);
15963
# check prerequisites-3 success: 1
15964
DELETE FROM t1 WHERE f_charbig = 'delete me';
15965
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
15966
# check read via f_int1 success: 1
15967
# check read via f_int2 success: 1
15969
# check multiple-1 success: 1
15970
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
15972
# check multiple-2 success: 1
15973
INSERT INTO t1 SELECT * FROM t0_template
15974
WHERE MOD(f_int1,3) = 0;
15976
# check multiple-3 success: 1
15977
UPDATE t1 SET f_int1 = f_int1 + @max_row
15978
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
15979
AND @max_row_div2 + @max_row_div4;
15981
# check multiple-4 success: 1
15983
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
15984
AND @max_row_div2 + @max_row_div4 + @max_row;
15986
# check multiple-5 success: 1
15987
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
15989
SET f_int1 = @cur_value , f_int2 = @cur_value,
15990
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15991
f_charbig = '#SINGLE#';
15993
# check single-1 success: 1
15994
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
15996
SET f_int1 = @cur_value , f_int2 = @cur_value,
15997
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
15998
f_charbig = '#SINGLE#';
16000
# check single-2 success: 1
16001
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16002
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16003
UPDATE t1 SET f_int1 = @cur_value2
16004
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16006
# check single-3 success: 1
16007
SET @cur_value1= -1;
16008
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16009
UPDATE t1 SET f_int1 = @cur_value1
16010
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16012
# check single-4 success: 1
16013
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16014
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16016
# check single-5 success: 1
16017
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16019
# check single-6 success: 1
16020
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16021
ERROR HY000: Table has no partition for value 2147483647
16022
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16023
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16024
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16025
f_charbig = '#NULL#';
16027
SET f_int1 = NULL , f_int2 = -@max_row,
16028
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16029
f_charbig = '#NULL#';
16030
ERROR 23000: Column 'f_int1' cannot be null
16031
# check null success: 1
16033
WHERE f_int1 = 0 AND f_int2 = 0
16034
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16035
AND f_charbig = '#NULL#';
16037
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16038
SELECT f_int1, f_int1, '', '', 'was inserted'
16039
FROM t0_template source_tab
16040
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16042
# check transactions-1 success: 1
16045
# check transactions-2 success: 1
16048
# check transactions-3 success: 1
16049
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16053
# check transactions-4 success: 1
16054
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16055
SELECT f_int1, f_int1, '', '', 'was inserted'
16056
FROM t0_template source_tab
16057
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16059
# check transactions-5 success: 1
16062
# check transactions-6 success: 1
16063
# INFO: Storage engine used for t1 seems to be transactional.
16066
# check transactions-7 success: 1
16067
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16069
SET @@session.sql_mode = 'traditional';
16070
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16071
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16072
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16073
'', '', 'was inserted' FROM t0_template
16074
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16075
ERROR 22012: Division by 0
16078
# check transactions-8 success: 1
16079
# INFO: Storage engine used for t1 seems to be able to revert
16080
# changes made by the failing statement.
16081
SET @@session.sql_mode = '';
16083
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16085
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16087
# check special-1 success: 1
16088
UPDATE t1 SET f_charbig = '';
16090
# check special-2 success: 1
16091
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16092
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16093
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16094
WHERE 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 BEFORE INSERT 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
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16106
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16107
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16109
# check trigger-1 success: 1
16110
DROP TRIGGER trg_1;
16111
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16112
f_int2 = CAST(f_char1 AS SIGNED INT),
16113
f_charbig = 'just inserted'
16114
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16116
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16117
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16118
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16119
'just inserted' FROM t0_template
16120
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16121
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16123
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16124
f_charbig = 'updated by trigger'
16125
WHERE f_int1 = new.f_int1;
16127
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16128
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16129
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16131
# check trigger-2 success: 1
16132
DROP TRIGGER trg_1;
16133
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16134
f_int2 = CAST(f_char1 AS SIGNED INT),
16135
f_charbig = 'just inserted'
16136
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16138
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16139
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16140
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16141
'just inserted' FROM t0_template
16142
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16143
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16145
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16146
f_charbig = 'updated by trigger'
16147
WHERE f_int1 = new.f_int1;
16149
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16150
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16152
# check trigger-3 success: 1
16153
DROP TRIGGER trg_1;
16154
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16155
f_int2 = CAST(f_char1 AS SIGNED INT),
16156
f_charbig = 'just inserted'
16157
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16159
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16160
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16161
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16162
'just inserted' FROM t0_template
16163
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16164
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16166
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16167
f_charbig = 'updated by trigger'
16168
WHERE f_int1 = - old.f_int1;
16170
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16171
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16173
# check trigger-4 success: 1
16174
DROP TRIGGER trg_1;
16175
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16176
f_int2 = CAST(f_char1 AS SIGNED INT),
16177
f_charbig = 'just inserted'
16178
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16180
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16181
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16182
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16183
'just inserted' FROM t0_template
16184
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16185
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16187
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16188
f_charbig = 'updated by trigger'
16189
WHERE f_int1 = new.f_int1;
16191
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16192
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16194
# check trigger-5 success: 1
16195
DROP TRIGGER trg_1;
16196
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16197
f_int2 = CAST(f_char1 AS SIGNED INT),
16198
f_charbig = 'just inserted'
16199
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16201
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16202
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16203
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16204
'just inserted' FROM t0_template
16205
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16206
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16208
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16209
f_charbig = 'updated by trigger'
16210
WHERE f_int1 = - old.f_int1;
16212
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16213
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16215
# check trigger-6 success: 1
16216
DROP TRIGGER trg_1;
16217
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16218
f_int2 = CAST(f_char1 AS SIGNED INT),
16219
f_charbig = 'just inserted'
16220
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16222
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16223
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16224
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16225
'just inserted' FROM t0_template
16226
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16227
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16229
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16230
f_charbig = 'updated by trigger'
16231
WHERE f_int1 = - old.f_int1;
16234
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16236
# check trigger-7 success: 1
16237
DROP TRIGGER trg_1;
16238
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16239
f_int2 = CAST(f_char1 AS SIGNED INT),
16240
f_charbig = 'just inserted'
16241
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16243
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16244
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16245
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16246
'just inserted' FROM t0_template
16247
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16248
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16250
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16251
f_charbig = 'updated by trigger'
16252
WHERE f_int1 = - old.f_int1;
16255
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16257
# check trigger-8 success: 1
16258
DROP TRIGGER trg_1;
16259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16260
f_int2 = CAST(f_char1 AS SIGNED INT),
16261
f_charbig = 'just inserted'
16262
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16264
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16266
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16267
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16269
SET new.f_int1 = old.f_int1 + @max_row,
16270
new.f_int2 = old.f_int2 - @max_row,
16271
new.f_charbig = '####updated per update trigger####';
16274
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16275
f_charbig = '####updated per update statement itself####';
16277
# check trigger-9 success: 1
16278
DROP TRIGGER trg_2;
16279
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16280
f_int2 = CAST(f_char1 AS SIGNED INT),
16281
f_charbig = CONCAT('===',f_char1,'===');
16282
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16284
SET new.f_int1 = new.f_int1 + @max_row,
16285
new.f_int2 = new.f_int2 - @max_row,
16286
new.f_charbig = '####updated per update trigger####';
16289
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16290
f_charbig = '####updated per update statement itself####';
16292
# check trigger-10 success: 1
16293
DROP TRIGGER trg_2;
16294
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16295
f_int2 = CAST(f_char1 AS SIGNED INT),
16296
f_charbig = CONCAT('===',f_char1,'===');
16297
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16299
SET new.f_int1 = @my_max1 + @counter,
16300
new.f_int2 = @my_min2 - @counter,
16301
new.f_charbig = '####updated per insert trigger####';
16302
SET @counter = @counter + 1;
16305
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16306
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16307
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16308
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16309
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16311
DROP TRIGGER trg_3;
16313
# check trigger-11 success: 1
16315
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16316
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16317
AND f_charbig = '####updated per insert trigger####';
16318
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16320
SET new.f_int1 = @my_max1 + @counter,
16321
new.f_int2 = @my_min2 - @counter,
16322
new.f_charbig = '####updated per insert trigger####';
16323
SET @counter = @counter + 1;
16326
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16327
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16328
SELECT CAST(f_int1 AS CHAR),
16329
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16330
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16332
DROP TRIGGER trg_3;
16334
# check trigger-12 success: 1
16336
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16337
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16338
AND f_charbig = '####updated per insert trigger####';
16340
Table Op Msg_type Msg_text
16341
test.t1 analyze status OK
16342
CHECK TABLE t1 EXTENDED;
16343
Table Op Msg_type Msg_text
16344
test.t1 check status OK
16345
CHECKSUM TABLE t1 EXTENDED;
16347
test.t1 <some_value>
16349
Table Op Msg_type Msg_text
16350
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
16351
test.t1 optimize status OK
16352
# check layout success: 1
16353
REPAIR TABLE t1 EXTENDED;
16354
Table Op Msg_type Msg_text
16355
test.t1 repair note The storage engine for the table doesn't support repair
16356
# check layout success: 1
16359
# check TRUNCATE success: 1
16360
# check layout success: 1
16361
# End usability test (inc/partition_check.inc)
16368
f_charbig VARCHAR(1000)
16369
, PRIMARY KEY(f_int2,f_int1)
16371
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
16372
(PARTITION parta VALUES LESS THAN (0),
16373
PARTITION partb VALUES LESS THAN (5),
16374
PARTITION partc VALUES LESS THAN (10),
16375
PARTITION partd VALUES LESS THAN (2147483646));
16376
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16377
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16378
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16379
ALTER TABLE t1 DROP PRIMARY KEY;
16380
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16381
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16382
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16383
# Start usability test (inc/partition_check.inc)
16385
SHOW CREATE TABLE t1;
16387
t1 CREATE TABLE `t1` (
16388
`f_int1` int(11) NOT NULL DEFAULT '0',
16389
`f_int2` int(11) NOT NULL DEFAULT '0',
16390
`f_char1` char(20) DEFAULT NULL,
16391
`f_char2` char(20) DEFAULT NULL,
16392
`f_charbig` varchar(1000) DEFAULT NULL
16393
) ENGINE=InnoDB DEFAULT CHARSET=latin1
16394
/*!50100 PARTITION BY RANGE (f_int1)
16395
SUBPARTITION BY HASH (f_int2)
16397
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
16398
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
16399
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
16400
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
16402
# check prerequisites-1 success: 1
16403
# check COUNT(*) success: 1
16404
# check MIN/MAX(f_int1) success: 1
16405
# check MIN/MAX(f_int2) success: 1
16406
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16407
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16408
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16409
WHERE f_int1 IN (2,3);
16410
# check prerequisites-3 success: 1
16411
DELETE FROM t1 WHERE f_charbig = 'delete me';
16412
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16413
# check read via f_int1 success: 1
16414
# check read via f_int2 success: 1
16416
# check multiple-1 success: 1
16417
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16419
# check multiple-2 success: 1
16420
INSERT INTO t1 SELECT * FROM t0_template
16421
WHERE MOD(f_int1,3) = 0;
16423
# check multiple-3 success: 1
16424
UPDATE t1 SET f_int1 = f_int1 + @max_row
16425
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16426
AND @max_row_div2 + @max_row_div4;
16428
# check multiple-4 success: 1
16430
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16431
AND @max_row_div2 + @max_row_div4 + @max_row;
16433
# check multiple-5 success: 1
16434
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16436
SET f_int1 = @cur_value , f_int2 = @cur_value,
16437
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16438
f_charbig = '#SINGLE#';
16440
# check single-1 success: 1
16441
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16443
SET f_int1 = @cur_value , f_int2 = @cur_value,
16444
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16445
f_charbig = '#SINGLE#';
16447
# check single-2 success: 1
16448
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16449
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16450
UPDATE t1 SET f_int1 = @cur_value2
16451
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16453
# check single-3 success: 1
16454
SET @cur_value1= -1;
16455
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16456
UPDATE t1 SET f_int1 = @cur_value1
16457
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16459
# check single-4 success: 1
16460
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16461
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16463
# check single-5 success: 1
16464
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16466
# check single-6 success: 1
16467
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16468
ERROR HY000: Table has no partition for value 2147483647
16469
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16470
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16471
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16472
f_charbig = '#NULL#';
16474
SET f_int1 = NULL , f_int2 = -@max_row,
16475
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16476
f_charbig = '#NULL#';
16477
ERROR 23000: Column 'f_int1' cannot be null
16478
# check null success: 1
16480
WHERE f_int1 = 0 AND f_int2 = 0
16481
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16482
AND f_charbig = '#NULL#';
16484
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16485
SELECT f_int1, f_int1, '', '', 'was inserted'
16486
FROM t0_template source_tab
16487
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16489
# check transactions-1 success: 1
16492
# check transactions-2 success: 1
16495
# check transactions-3 success: 1
16496
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16500
# check transactions-4 success: 1
16501
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16502
SELECT f_int1, f_int1, '', '', 'was inserted'
16503
FROM t0_template source_tab
16504
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16506
# check transactions-5 success: 1
16509
# check transactions-6 success: 1
16510
# INFO: Storage engine used for t1 seems to be transactional.
16513
# check transactions-7 success: 1
16514
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16516
SET @@session.sql_mode = 'traditional';
16517
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16518
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16519
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16520
'', '', 'was inserted' FROM t0_template
16521
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16522
ERROR 22012: Division by 0
16525
# check transactions-8 success: 1
16526
# INFO: Storage engine used for t1 seems to be able to revert
16527
# changes made by the failing statement.
16528
SET @@session.sql_mode = '';
16530
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16532
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16534
# check special-1 success: 1
16535
UPDATE t1 SET f_charbig = '';
16537
# check special-2 success: 1
16538
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16539
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16540
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16541
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16542
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16543
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16544
'just inserted' FROM t0_template
16545
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16546
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
16548
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16549
f_charbig = 'updated by trigger'
16550
WHERE f_int1 = new.f_int1;
16552
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16553
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16554
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16556
# check trigger-1 success: 1
16557
DROP TRIGGER trg_1;
16558
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16559
f_int2 = CAST(f_char1 AS SIGNED INT),
16560
f_charbig = 'just inserted'
16561
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16563
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16564
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16565
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16566
'just inserted' FROM t0_template
16567
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16568
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
16570
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16571
f_charbig = 'updated by trigger'
16572
WHERE f_int1 = new.f_int1;
16574
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16575
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
16576
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16578
# check trigger-2 success: 1
16579
DROP TRIGGER trg_1;
16580
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16581
f_int2 = CAST(f_char1 AS SIGNED INT),
16582
f_charbig = 'just inserted'
16583
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16585
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16586
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16587
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16588
'just inserted' FROM t0_template
16589
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16590
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16592
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16593
f_charbig = 'updated by trigger'
16594
WHERE f_int1 = new.f_int1;
16596
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16597
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16599
# check trigger-3 success: 1
16600
DROP TRIGGER trg_1;
16601
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16602
f_int2 = CAST(f_char1 AS SIGNED INT),
16603
f_charbig = 'just inserted'
16604
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16606
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16607
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16608
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16609
'just inserted' FROM t0_template
16610
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16611
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
16613
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16614
f_charbig = 'updated by trigger'
16615
WHERE f_int1 = - old.f_int1;
16617
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16618
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16620
# check trigger-4 success: 1
16621
DROP TRIGGER trg_1;
16622
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16623
f_int2 = CAST(f_char1 AS SIGNED INT),
16624
f_charbig = 'just inserted'
16625
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16627
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16628
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16629
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16630
'just inserted' FROM t0_template
16631
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16632
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16634
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16635
f_charbig = 'updated by trigger'
16636
WHERE f_int1 = new.f_int1;
16638
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16639
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16641
# check trigger-5 success: 1
16642
DROP TRIGGER trg_1;
16643
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16644
f_int2 = CAST(f_char1 AS SIGNED INT),
16645
f_charbig = 'just inserted'
16646
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16648
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16649
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16650
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16651
'just inserted' FROM t0_template
16652
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16653
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
16655
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16656
f_charbig = 'updated by trigger'
16657
WHERE f_int1 = - old.f_int1;
16659
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
16660
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16662
# check trigger-6 success: 1
16663
DROP TRIGGER trg_1;
16664
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16665
f_int2 = CAST(f_char1 AS SIGNED INT),
16666
f_charbig = 'just inserted'
16667
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16669
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16670
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16671
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16672
'just inserted' FROM t0_template
16673
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16674
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
16676
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16677
f_charbig = 'updated by trigger'
16678
WHERE f_int1 = - old.f_int1;
16681
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16683
# check trigger-7 success: 1
16684
DROP TRIGGER trg_1;
16685
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16686
f_int2 = CAST(f_char1 AS SIGNED INT),
16687
f_charbig = 'just inserted'
16688
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16690
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16691
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
16692
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
16693
'just inserted' FROM t0_template
16694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16695
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
16697
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
16698
f_charbig = 'updated by trigger'
16699
WHERE f_int1 = - old.f_int1;
16702
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
16704
# check trigger-8 success: 1
16705
DROP TRIGGER trg_1;
16706
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16707
f_int2 = CAST(f_char1 AS SIGNED INT),
16708
f_charbig = 'just inserted'
16709
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
16711
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16713
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
16714
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16716
SET new.f_int1 = old.f_int1 + @max_row,
16717
new.f_int2 = old.f_int2 - @max_row,
16718
new.f_charbig = '####updated per update trigger####';
16721
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16722
f_charbig = '####updated per update statement itself####';
16724
# check trigger-9 success: 1
16725
DROP TRIGGER trg_2;
16726
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16727
f_int2 = CAST(f_char1 AS SIGNED INT),
16728
f_charbig = CONCAT('===',f_char1,'===');
16729
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
16731
SET new.f_int1 = new.f_int1 + @max_row,
16732
new.f_int2 = new.f_int2 - @max_row,
16733
new.f_charbig = '####updated per update trigger####';
16736
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
16737
f_charbig = '####updated per update statement itself####';
16739
# check trigger-10 success: 1
16740
DROP TRIGGER trg_2;
16741
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
16742
f_int2 = CAST(f_char1 AS SIGNED INT),
16743
f_charbig = CONCAT('===',f_char1,'===');
16744
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16746
SET new.f_int1 = @my_max1 + @counter,
16747
new.f_int2 = @my_min2 - @counter,
16748
new.f_charbig = '####updated per insert trigger####';
16749
SET @counter = @counter + 1;
16752
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16753
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16754
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16755
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16756
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16758
DROP TRIGGER trg_3;
16760
# check trigger-11 success: 1
16762
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16763
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16764
AND f_charbig = '####updated per insert trigger####';
16765
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
16767
SET new.f_int1 = @my_max1 + @counter,
16768
new.f_int2 = @my_min2 - @counter,
16769
new.f_charbig = '####updated per insert trigger####';
16770
SET @counter = @counter + 1;
16773
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
16774
INSERT INTO t1 (f_char1, f_char2, f_charbig)
16775
SELECT CAST(f_int1 AS CHAR),
16776
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
16777
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
16779
DROP TRIGGER trg_3;
16781
# check trigger-12 success: 1
16783
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
16784
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
16785
AND f_charbig = '####updated per insert trigger####';
16787
Table Op Msg_type Msg_text
16788
test.t1 analyze status OK
16789
CHECK TABLE t1 EXTENDED;
16790
Table Op Msg_type Msg_text
16791
test.t1 check status OK
16792
CHECKSUM TABLE t1 EXTENDED;
16794
test.t1 <some_value>
16796
Table Op Msg_type Msg_text
16797
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
16798
test.t1 optimize status OK
16799
# check layout success: 1
16800
REPAIR TABLE t1 EXTENDED;
16801
Table Op Msg_type Msg_text
16802
test.t1 repair note The storage engine for the table doesn't support repair
16803
# check layout success: 1
16806
# check TRUNCATE success: 1
16807
# check layout success: 1
16808
# End usability test (inc/partition_check.inc)
16815
f_charbig VARCHAR(1000)
16816
, PRIMARY KEY(f_int2,f_int1)
16818
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
16819
(PARTITION part1 VALUES LESS THAN (0)
16820
(SUBPARTITION subpart11, SUBPARTITION subpart12),
16821
PARTITION part2 VALUES LESS THAN (5)
16822
(SUBPARTITION subpart21, SUBPARTITION subpart22),
16823
PARTITION part3 VALUES LESS THAN (10)
16824
(SUBPARTITION subpart31, SUBPARTITION subpart32),
16825
PARTITION part4 VALUES LESS THAN (2147483646)
16826
(SUBPARTITION subpart41, SUBPARTITION subpart42));
16827
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16828
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16829
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
16830
ALTER TABLE t1 DROP PRIMARY KEY;
16831
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16832
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
16833
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
16834
# Start usability test (inc/partition_check.inc)
16836
SHOW CREATE TABLE t1;
16838
t1 CREATE TABLE `t1` (
16839
`f_int1` int(11) NOT NULL DEFAULT '0',
16840
`f_int2` int(11) NOT NULL DEFAULT '0',
16841
`f_char1` char(20) DEFAULT NULL,
16842
`f_char2` char(20) DEFAULT NULL,
16843
`f_charbig` varchar(1000) DEFAULT NULL
16844
) ENGINE=InnoDB DEFAULT CHARSET=latin1
16845
/*!50100 PARTITION BY RANGE (f_int1)
16846
SUBPARTITION BY KEY (f_int2)
16847
(PARTITION part1 VALUES LESS THAN (0)
16848
(SUBPARTITION subpart11 ENGINE = InnoDB,
16849
SUBPARTITION subpart12 ENGINE = InnoDB),
16850
PARTITION part2 VALUES LESS THAN (5)
16851
(SUBPARTITION subpart21 ENGINE = InnoDB,
16852
SUBPARTITION subpart22 ENGINE = InnoDB),
16853
PARTITION part3 VALUES LESS THAN (10)
16854
(SUBPARTITION subpart31 ENGINE = InnoDB,
16855
SUBPARTITION subpart32 ENGINE = InnoDB),
16856
PARTITION part4 VALUES LESS THAN (2147483646)
16857
(SUBPARTITION subpart41 ENGINE = InnoDB,
16858
SUBPARTITION subpart42 ENGINE = InnoDB)) */
16860
# check prerequisites-1 success: 1
16861
# check COUNT(*) success: 1
16862
# check MIN/MAX(f_int1) success: 1
16863
# check MIN/MAX(f_int2) success: 1
16864
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16865
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
16866
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
16867
WHERE f_int1 IN (2,3);
16868
# check prerequisites-3 success: 1
16869
DELETE FROM t1 WHERE f_charbig = 'delete me';
16870
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
16871
# check read via f_int1 success: 1
16872
# check read via f_int2 success: 1
16874
# check multiple-1 success: 1
16875
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
16877
# check multiple-2 success: 1
16878
INSERT INTO t1 SELECT * FROM t0_template
16879
WHERE MOD(f_int1,3) = 0;
16881
# check multiple-3 success: 1
16882
UPDATE t1 SET f_int1 = f_int1 + @max_row
16883
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
16884
AND @max_row_div2 + @max_row_div4;
16886
# check multiple-4 success: 1
16888
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
16889
AND @max_row_div2 + @max_row_div4 + @max_row;
16891
# check multiple-5 success: 1
16892
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
16894
SET f_int1 = @cur_value , f_int2 = @cur_value,
16895
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16896
f_charbig = '#SINGLE#';
16898
# check single-1 success: 1
16899
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
16901
SET f_int1 = @cur_value , f_int2 = @cur_value,
16902
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
16903
f_charbig = '#SINGLE#';
16905
# check single-2 success: 1
16906
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
16907
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
16908
UPDATE t1 SET f_int1 = @cur_value2
16909
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
16911
# check single-3 success: 1
16912
SET @cur_value1= -1;
16913
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
16914
UPDATE t1 SET f_int1 = @cur_value1
16915
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
16917
# check single-4 success: 1
16918
SELECT MAX(f_int1) INTO @cur_value FROM t1;
16919
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
16921
# check single-5 success: 1
16922
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
16924
# check single-6 success: 1
16925
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
16926
ERROR HY000: Table has no partition for value 2147483647
16927
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
16928
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
16929
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
16930
f_charbig = '#NULL#';
16932
SET f_int1 = NULL , f_int2 = -@max_row,
16933
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
16934
f_charbig = '#NULL#';
16935
ERROR 23000: Column 'f_int1' cannot be null
16936
# check null success: 1
16938
WHERE f_int1 = 0 AND f_int2 = 0
16939
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
16940
AND f_charbig = '#NULL#';
16942
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16943
SELECT f_int1, f_int1, '', '', 'was inserted'
16944
FROM t0_template source_tab
16945
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16947
# check transactions-1 success: 1
16950
# check transactions-2 success: 1
16953
# check transactions-3 success: 1
16954
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16958
# check transactions-4 success: 1
16959
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16960
SELECT f_int1, f_int1, '', '', 'was inserted'
16961
FROM t0_template source_tab
16962
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16964
# check transactions-5 success: 1
16967
# check transactions-6 success: 1
16968
# INFO: Storage engine used for t1 seems to be transactional.
16971
# check transactions-7 success: 1
16972
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16974
SET @@session.sql_mode = 'traditional';
16975
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
16976
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
16977
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
16978
'', '', 'was inserted' FROM t0_template
16979
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
16980
ERROR 22012: Division by 0
16983
# check transactions-8 success: 1
16984
# INFO: Storage engine used for t1 seems to be able to revert
16985
# changes made by the failing statement.
16986
SET @@session.sql_mode = '';
16988
DELETE FROM t1 WHERE f_charbig = 'was inserted';
16990
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
16992
# check special-1 success: 1
16993
UPDATE t1 SET f_charbig = '';
16995
# check special-2 success: 1
16996
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
16997
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
16998
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
16999
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17000
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17001
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17002
'just inserted' FROM t0_template
17003
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17004
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17006
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17007
f_charbig = 'updated by trigger'
17008
WHERE f_int1 = new.f_int1;
17010
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17011
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17012
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17014
# check trigger-1 success: 1
17015
DROP TRIGGER trg_1;
17016
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17017
f_int2 = CAST(f_char1 AS SIGNED INT),
17018
f_charbig = 'just inserted'
17019
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17021
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17022
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17023
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17024
'just inserted' FROM t0_template
17025
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17026
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17028
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17029
f_charbig = 'updated by trigger'
17030
WHERE f_int1 = new.f_int1;
17032
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17033
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17034
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17036
# check trigger-2 success: 1
17037
DROP TRIGGER trg_1;
17038
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17039
f_int2 = CAST(f_char1 AS SIGNED INT),
17040
f_charbig = 'just inserted'
17041
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17043
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17044
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17045
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17046
'just inserted' FROM t0_template
17047
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17048
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17050
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17051
f_charbig = 'updated by trigger'
17052
WHERE f_int1 = new.f_int1;
17054
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17055
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17057
# check trigger-3 success: 1
17058
DROP TRIGGER trg_1;
17059
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17060
f_int2 = CAST(f_char1 AS SIGNED INT),
17061
f_charbig = 'just inserted'
17062
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17064
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17065
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17066
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17067
'just inserted' FROM t0_template
17068
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17069
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17071
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17072
f_charbig = 'updated by trigger'
17073
WHERE f_int1 = - old.f_int1;
17075
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17076
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17078
# check trigger-4 success: 1
17079
DROP TRIGGER trg_1;
17080
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17081
f_int2 = CAST(f_char1 AS SIGNED INT),
17082
f_charbig = 'just inserted'
17083
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17085
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17086
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17087
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17088
'just inserted' FROM t0_template
17089
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17090
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17092
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17093
f_charbig = 'updated by trigger'
17094
WHERE f_int1 = new.f_int1;
17096
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17097
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17099
# check trigger-5 success: 1
17100
DROP TRIGGER trg_1;
17101
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17102
f_int2 = CAST(f_char1 AS SIGNED INT),
17103
f_charbig = 'just inserted'
17104
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17106
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17107
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17108
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17109
'just inserted' FROM t0_template
17110
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17111
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17113
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17114
f_charbig = 'updated by trigger'
17115
WHERE f_int1 = - old.f_int1;
17117
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17118
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17120
# check trigger-6 success: 1
17121
DROP TRIGGER trg_1;
17122
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17123
f_int2 = CAST(f_char1 AS SIGNED INT),
17124
f_charbig = 'just inserted'
17125
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17127
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17128
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17129
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17130
'just inserted' FROM t0_template
17131
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17132
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17134
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17135
f_charbig = 'updated by trigger'
17136
WHERE f_int1 = - old.f_int1;
17139
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17141
# check trigger-7 success: 1
17142
DROP TRIGGER trg_1;
17143
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17144
f_int2 = CAST(f_char1 AS SIGNED INT),
17145
f_charbig = 'just inserted'
17146
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17148
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17149
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17150
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17151
'just inserted' FROM t0_template
17152
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17153
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17155
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17156
f_charbig = 'updated by trigger'
17157
WHERE f_int1 = - old.f_int1;
17160
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17162
# check trigger-8 success: 1
17163
DROP TRIGGER trg_1;
17164
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17165
f_int2 = CAST(f_char1 AS SIGNED INT),
17166
f_charbig = 'just inserted'
17167
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17169
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17172
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17174
SET new.f_int1 = old.f_int1 + @max_row,
17175
new.f_int2 = old.f_int2 - @max_row,
17176
new.f_charbig = '####updated per update trigger####';
17179
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17180
f_charbig = '####updated per update statement itself####';
17182
# check trigger-9 success: 1
17183
DROP TRIGGER trg_2;
17184
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17185
f_int2 = CAST(f_char1 AS SIGNED INT),
17186
f_charbig = CONCAT('===',f_char1,'===');
17187
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17189
SET new.f_int1 = new.f_int1 + @max_row,
17190
new.f_int2 = new.f_int2 - @max_row,
17191
new.f_charbig = '####updated per update trigger####';
17194
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17195
f_charbig = '####updated per update statement itself####';
17197
# check trigger-10 success: 1
17198
DROP TRIGGER trg_2;
17199
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17200
f_int2 = CAST(f_char1 AS SIGNED INT),
17201
f_charbig = CONCAT('===',f_char1,'===');
17202
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17204
SET new.f_int1 = @my_max1 + @counter,
17205
new.f_int2 = @my_min2 - @counter,
17206
new.f_charbig = '####updated per insert trigger####';
17207
SET @counter = @counter + 1;
17210
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17211
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17212
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17213
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17214
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17216
DROP TRIGGER trg_3;
17218
# check trigger-11 success: 1
17220
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17221
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17222
AND f_charbig = '####updated per insert trigger####';
17223
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17225
SET new.f_int1 = @my_max1 + @counter,
17226
new.f_int2 = @my_min2 - @counter,
17227
new.f_charbig = '####updated per insert trigger####';
17228
SET @counter = @counter + 1;
17231
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17232
INSERT INTO t1 (f_char1, f_char2, f_charbig)
17233
SELECT CAST(f_int1 AS CHAR),
17234
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17235
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17237
DROP TRIGGER trg_3;
17239
# check trigger-12 success: 1
17241
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17242
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17243
AND f_charbig = '####updated per insert trigger####';
17245
Table Op Msg_type Msg_text
17246
test.t1 analyze status OK
17247
CHECK TABLE t1 EXTENDED;
17248
Table Op Msg_type Msg_text
17249
test.t1 check status OK
17250
CHECKSUM TABLE t1 EXTENDED;
17252
test.t1 <some_value>
17254
Table Op Msg_type Msg_text
17255
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
17256
test.t1 optimize status OK
17257
# check layout success: 1
17258
REPAIR TABLE t1 EXTENDED;
17259
Table Op Msg_type Msg_text
17260
test.t1 repair note The storage engine for the table doesn't support repair
17261
# check layout success: 1
17264
# check TRUNCATE success: 1
17265
# check layout success: 1
17266
# End usability test (inc/partition_check.inc)
17273
f_charbig VARCHAR(1000)
17274
, PRIMARY KEY(f_int2,f_int1)
17276
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
17277
(PARTITION part1 VALUES IN (0)
17278
(SUBPARTITION sp11, SUBPARTITION sp12),
17279
PARTITION part2 VALUES IN (1)
17280
(SUBPARTITION sp21, SUBPARTITION sp22),
17281
PARTITION part3 VALUES IN (2)
17282
(SUBPARTITION sp31, SUBPARTITION sp32),
17283
PARTITION part4 VALUES IN (NULL)
17284
(SUBPARTITION sp41, SUBPARTITION sp42));
17285
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17286
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17287
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17288
ALTER TABLE t1 DROP PRIMARY KEY;
17289
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17290
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17291
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17292
# Start usability test (inc/partition_check.inc)
17294
SHOW CREATE TABLE t1;
17296
t1 CREATE TABLE `t1` (
17297
`f_int1` int(11) NOT NULL DEFAULT '0',
17298
`f_int2` int(11) NOT NULL DEFAULT '0',
17299
`f_char1` char(20) DEFAULT NULL,
17300
`f_char2` char(20) DEFAULT NULL,
17301
`f_charbig` varchar(1000) DEFAULT NULL
17302
) ENGINE=InnoDB DEFAULT CHARSET=latin1
17303
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
17304
SUBPARTITION BY HASH (f_int2 + 1)
17305
(PARTITION part1 VALUES IN (0)
17306
(SUBPARTITION sp11 ENGINE = InnoDB,
17307
SUBPARTITION sp12 ENGINE = InnoDB),
17308
PARTITION part2 VALUES IN (1)
17309
(SUBPARTITION sp21 ENGINE = InnoDB,
17310
SUBPARTITION sp22 ENGINE = InnoDB),
17311
PARTITION part3 VALUES IN (2)
17312
(SUBPARTITION sp31 ENGINE = InnoDB,
17313
SUBPARTITION sp32 ENGINE = InnoDB),
17314
PARTITION part4 VALUES IN (NULL)
17315
(SUBPARTITION sp41 ENGINE = InnoDB,
17316
SUBPARTITION sp42 ENGINE = InnoDB)) */
17318
# check prerequisites-1 success: 1
17319
# check COUNT(*) success: 1
17320
# check MIN/MAX(f_int1) success: 1
17321
# check MIN/MAX(f_int2) success: 1
17322
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17323
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17324
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17325
WHERE f_int1 IN (2,3);
17326
# check prerequisites-3 success: 1
17327
DELETE FROM t1 WHERE f_charbig = 'delete me';
17328
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17329
# check read via f_int1 success: 1
17330
# check read via f_int2 success: 1
17332
# check multiple-1 success: 1
17333
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17335
# check multiple-2 success: 1
17336
INSERT INTO t1 SELECT * FROM t0_template
17337
WHERE MOD(f_int1,3) = 0;
17339
# check multiple-3 success: 1
17340
UPDATE t1 SET f_int1 = f_int1 + @max_row
17341
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17342
AND @max_row_div2 + @max_row_div4;
17344
# check multiple-4 success: 1
17346
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17347
AND @max_row_div2 + @max_row_div4 + @max_row;
17349
# check multiple-5 success: 1
17350
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17352
SET f_int1 = @cur_value , f_int2 = @cur_value,
17353
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17354
f_charbig = '#SINGLE#';
17356
# check single-1 success: 1
17357
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17359
SET f_int1 = @cur_value , f_int2 = @cur_value,
17360
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17361
f_charbig = '#SINGLE#';
17363
# check single-2 success: 1
17364
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17365
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17366
UPDATE t1 SET f_int1 = @cur_value2
17367
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17369
# check single-3 success: 1
17370
SET @cur_value1= -1;
17371
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17372
UPDATE t1 SET f_int1 = @cur_value1
17373
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17375
# check single-4 success: 1
17376
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17377
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17379
# check single-5 success: 1
17380
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17382
# check single-6 success: 1
17383
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17385
# check single-7 success: 1
17386
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17387
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17388
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17389
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17390
f_charbig = '#NULL#';
17392
SET f_int1 = NULL , f_int2 = -@max_row,
17393
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17394
f_charbig = '#NULL#';
17395
ERROR 23000: Column 'f_int1' cannot be null
17396
# check null success: 1
17398
WHERE f_int1 = 0 AND f_int2 = 0
17399
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17400
AND f_charbig = '#NULL#';
17402
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17403
SELECT f_int1, f_int1, '', '', 'was inserted'
17404
FROM t0_template source_tab
17405
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17407
# check transactions-1 success: 1
17410
# check transactions-2 success: 1
17413
# check transactions-3 success: 1
17414
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17418
# check transactions-4 success: 1
17419
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17420
SELECT f_int1, f_int1, '', '', 'was inserted'
17421
FROM t0_template source_tab
17422
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17424
# check transactions-5 success: 1
17427
# check transactions-6 success: 1
17428
# INFO: Storage engine used for t1 seems to be transactional.
17431
# check transactions-7 success: 1
17432
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17434
SET @@session.sql_mode = 'traditional';
17435
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17436
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17437
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17438
'', '', 'was inserted' FROM t0_template
17439
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17440
ERROR 22012: Division by 0
17443
# check transactions-8 success: 1
17444
# INFO: Storage engine used for t1 seems to be able to revert
17445
# changes made by the failing statement.
17446
SET @@session.sql_mode = '';
17448
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17450
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17452
# check special-1 success: 1
17453
UPDATE t1 SET f_charbig = '';
17455
# check special-2 success: 1
17456
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17457
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17458
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17459
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17460
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17461
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17462
'just inserted' FROM t0_template
17463
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17464
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17466
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17467
f_charbig = 'updated by trigger'
17468
WHERE f_int1 = new.f_int1;
17470
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17471
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17472
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17474
# check trigger-1 success: 1
17475
DROP TRIGGER trg_1;
17476
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17477
f_int2 = CAST(f_char1 AS SIGNED INT),
17478
f_charbig = 'just inserted'
17479
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17481
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17482
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17483
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17484
'just inserted' FROM t0_template
17485
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17486
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17488
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17489
f_charbig = 'updated by trigger'
17490
WHERE f_int1 = new.f_int1;
17492
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17493
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17494
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17496
# check trigger-2 success: 1
17497
DROP TRIGGER trg_1;
17498
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17499
f_int2 = CAST(f_char1 AS SIGNED INT),
17500
f_charbig = 'just inserted'
17501
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17503
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17504
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17505
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17506
'just inserted' FROM t0_template
17507
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17508
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17510
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17511
f_charbig = 'updated by trigger'
17512
WHERE f_int1 = new.f_int1;
17514
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17515
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17517
# check trigger-3 success: 1
17518
DROP TRIGGER trg_1;
17519
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17520
f_int2 = CAST(f_char1 AS SIGNED INT),
17521
f_charbig = 'just inserted'
17522
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17524
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17525
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17526
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17527
'just inserted' FROM t0_template
17528
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17529
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17531
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17532
f_charbig = 'updated by trigger'
17533
WHERE f_int1 = - old.f_int1;
17535
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17536
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17538
# check trigger-4 success: 1
17539
DROP TRIGGER trg_1;
17540
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17541
f_int2 = CAST(f_char1 AS SIGNED INT),
17542
f_charbig = 'just inserted'
17543
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17545
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17546
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17547
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17548
'just inserted' FROM t0_template
17549
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17550
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17552
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17553
f_charbig = 'updated by trigger'
17554
WHERE f_int1 = new.f_int1;
17556
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17557
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17559
# check trigger-5 success: 1
17560
DROP TRIGGER trg_1;
17561
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17562
f_int2 = CAST(f_char1 AS SIGNED INT),
17563
f_charbig = 'just inserted'
17564
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17566
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17567
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17568
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17569
'just inserted' FROM t0_template
17570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17571
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
17573
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17574
f_charbig = 'updated by trigger'
17575
WHERE f_int1 = - old.f_int1;
17577
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17578
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17580
# check trigger-6 success: 1
17581
DROP TRIGGER trg_1;
17582
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17583
f_int2 = CAST(f_char1 AS SIGNED INT),
17584
f_charbig = 'just inserted'
17585
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17587
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17588
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17589
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17590
'just inserted' FROM t0_template
17591
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17592
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
17594
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17595
f_charbig = 'updated by trigger'
17596
WHERE f_int1 = - old.f_int1;
17599
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17601
# check trigger-7 success: 1
17602
DROP TRIGGER trg_1;
17603
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17604
f_int2 = CAST(f_char1 AS SIGNED INT),
17605
f_charbig = 'just inserted'
17606
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17608
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17609
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17610
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17611
'just inserted' FROM t0_template
17612
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17613
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
17615
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17616
f_charbig = 'updated by trigger'
17617
WHERE f_int1 = - old.f_int1;
17620
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17622
# check trigger-8 success: 1
17623
DROP TRIGGER trg_1;
17624
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17625
f_int2 = CAST(f_char1 AS SIGNED INT),
17626
f_charbig = 'just inserted'
17627
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17629
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17631
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17632
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17634
SET new.f_int1 = old.f_int1 + @max_row,
17635
new.f_int2 = old.f_int2 - @max_row,
17636
new.f_charbig = '####updated per update trigger####';
17639
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17640
f_charbig = '####updated per update statement itself####';
17642
# check trigger-9 success: 1
17643
DROP TRIGGER trg_2;
17644
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17645
f_int2 = CAST(f_char1 AS SIGNED INT),
17646
f_charbig = CONCAT('===',f_char1,'===');
17647
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
17649
SET new.f_int1 = new.f_int1 + @max_row,
17650
new.f_int2 = new.f_int2 - @max_row,
17651
new.f_charbig = '####updated per update trigger####';
17654
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
17655
f_charbig = '####updated per update statement itself####';
17657
# check trigger-10 success: 1
17658
DROP TRIGGER trg_2;
17659
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17660
f_int2 = CAST(f_char1 AS SIGNED INT),
17661
f_charbig = CONCAT('===',f_char1,'===');
17662
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17664
SET new.f_int1 = @my_max1 + @counter,
17665
new.f_int2 = @my_min2 - @counter,
17666
new.f_charbig = '####updated per insert trigger####';
17667
SET @counter = @counter + 1;
17670
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17671
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17672
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17673
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17674
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17676
DROP TRIGGER trg_3;
17678
# check trigger-11 success: 1
17680
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17681
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17682
AND f_charbig = '####updated per insert trigger####';
17683
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
17685
SET new.f_int1 = @my_max1 + @counter,
17686
new.f_int2 = @my_min2 - @counter,
17687
new.f_charbig = '####updated per insert trigger####';
17688
SET @counter = @counter + 1;
17691
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
17692
INSERT INTO t1 (f_char1, f_char2, f_charbig)
17693
SELECT CAST(f_int1 AS CHAR),
17694
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
17695
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
17697
DROP TRIGGER trg_3;
17699
# check trigger-12 success: 1
17701
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
17702
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
17703
AND f_charbig = '####updated per insert trigger####';
17705
Table Op Msg_type Msg_text
17706
test.t1 analyze status OK
17707
CHECK TABLE t1 EXTENDED;
17708
Table Op Msg_type Msg_text
17709
test.t1 check status OK
17710
CHECKSUM TABLE t1 EXTENDED;
17712
test.t1 <some_value>
17714
Table Op Msg_type Msg_text
17715
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
17716
test.t1 optimize status OK
17717
# check layout success: 1
17718
REPAIR TABLE t1 EXTENDED;
17719
Table Op Msg_type Msg_text
17720
test.t1 repair note The storage engine for the table doesn't support repair
17721
# check layout success: 1
17724
# check TRUNCATE success: 1
17725
# check layout success: 1
17726
# End usability test (inc/partition_check.inc)
17733
f_charbig VARCHAR(1000)
17734
, PRIMARY KEY(f_int2,f_int1)
17736
PARTITION BY LIST(ABS(MOD(f_int1,2)))
17737
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
17738
(PARTITION part1 VALUES IN (0),
17739
PARTITION part2 VALUES IN (1),
17740
PARTITION part3 VALUES IN (NULL));
17741
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17742
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17743
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
17744
ALTER TABLE t1 DROP PRIMARY KEY;
17745
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17746
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
17747
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
17748
# Start usability test (inc/partition_check.inc)
17750
SHOW CREATE TABLE t1;
17752
t1 CREATE TABLE `t1` (
17753
`f_int1` int(11) NOT NULL DEFAULT '0',
17754
`f_int2` int(11) NOT NULL DEFAULT '0',
17755
`f_char1` char(20) DEFAULT NULL,
17756
`f_char2` char(20) DEFAULT NULL,
17757
`f_charbig` varchar(1000) DEFAULT NULL
17758
) ENGINE=InnoDB DEFAULT CHARSET=latin1
17759
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
17760
SUBPARTITION BY KEY (f_int2)
17762
(PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
17763
PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
17764
PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
17766
# check prerequisites-1 success: 1
17767
# check COUNT(*) success: 1
17768
# check MIN/MAX(f_int1) success: 1
17769
# check MIN/MAX(f_int2) success: 1
17770
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17771
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
17772
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
17773
WHERE f_int1 IN (2,3);
17774
# check prerequisites-3 success: 1
17775
DELETE FROM t1 WHERE f_charbig = 'delete me';
17776
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
17777
# check read via f_int1 success: 1
17778
# check read via f_int2 success: 1
17780
# check multiple-1 success: 1
17781
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
17783
# check multiple-2 success: 1
17784
INSERT INTO t1 SELECT * FROM t0_template
17785
WHERE MOD(f_int1,3) = 0;
17787
# check multiple-3 success: 1
17788
UPDATE t1 SET f_int1 = f_int1 + @max_row
17789
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
17790
AND @max_row_div2 + @max_row_div4;
17792
# check multiple-4 success: 1
17794
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
17795
AND @max_row_div2 + @max_row_div4 + @max_row;
17797
# check multiple-5 success: 1
17798
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
17800
SET f_int1 = @cur_value , f_int2 = @cur_value,
17801
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17802
f_charbig = '#SINGLE#';
17804
# check single-1 success: 1
17805
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
17807
SET f_int1 = @cur_value , f_int2 = @cur_value,
17808
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
17809
f_charbig = '#SINGLE#';
17811
# check single-2 success: 1
17812
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
17813
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
17814
UPDATE t1 SET f_int1 = @cur_value2
17815
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
17817
# check single-3 success: 1
17818
SET @cur_value1= -1;
17819
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
17820
UPDATE t1 SET f_int1 = @cur_value1
17821
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
17823
# check single-4 success: 1
17824
SELECT MAX(f_int1) INTO @cur_value FROM t1;
17825
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
17827
# check single-5 success: 1
17828
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
17830
# check single-6 success: 1
17831
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
17833
# check single-7 success: 1
17834
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
17835
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
17836
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
17837
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
17838
f_charbig = '#NULL#';
17840
SET f_int1 = NULL , f_int2 = -@max_row,
17841
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
17842
f_charbig = '#NULL#';
17843
ERROR 23000: Column 'f_int1' cannot be null
17844
# check null success: 1
17846
WHERE f_int1 = 0 AND f_int2 = 0
17847
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
17848
AND f_charbig = '#NULL#';
17850
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17851
SELECT f_int1, f_int1, '', '', 'was inserted'
17852
FROM t0_template source_tab
17853
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17855
# check transactions-1 success: 1
17858
# check transactions-2 success: 1
17861
# check transactions-3 success: 1
17862
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17866
# check transactions-4 success: 1
17867
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17868
SELECT f_int1, f_int1, '', '', 'was inserted'
17869
FROM t0_template source_tab
17870
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17872
# check transactions-5 success: 1
17875
# check transactions-6 success: 1
17876
# INFO: Storage engine used for t1 seems to be transactional.
17879
# check transactions-7 success: 1
17880
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17882
SET @@session.sql_mode = 'traditional';
17883
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
17884
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
17885
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
17886
'', '', 'was inserted' FROM t0_template
17887
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
17888
ERROR 22012: Division by 0
17891
# check transactions-8 success: 1
17892
# INFO: Storage engine used for t1 seems to be able to revert
17893
# changes made by the failing statement.
17894
SET @@session.sql_mode = '';
17896
DELETE FROM t1 WHERE f_charbig = 'was inserted';
17898
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
17900
# check special-1 success: 1
17901
UPDATE t1 SET f_charbig = '';
17903
# check special-2 success: 1
17904
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
17905
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
17906
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
17907
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17908
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17909
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17910
'just inserted' FROM t0_template
17911
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17912
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
17914
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17915
f_charbig = 'updated by trigger'
17916
WHERE f_int1 = new.f_int1;
17918
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17919
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17920
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17922
# check trigger-1 success: 1
17923
DROP TRIGGER trg_1;
17924
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17925
f_int2 = CAST(f_char1 AS SIGNED INT),
17926
f_charbig = 'just inserted'
17927
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17929
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17930
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17931
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17932
'just inserted' FROM t0_template
17933
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17934
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
17936
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17937
f_charbig = 'updated by trigger'
17938
WHERE f_int1 = new.f_int1;
17940
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17941
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
17942
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17944
# check trigger-2 success: 1
17945
DROP TRIGGER trg_1;
17946
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17947
f_int2 = CAST(f_char1 AS SIGNED INT),
17948
f_charbig = 'just inserted'
17949
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17951
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17952
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17953
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17954
'just inserted' FROM t0_template
17955
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17956
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17958
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17959
f_charbig = 'updated by trigger'
17960
WHERE f_int1 = new.f_int1;
17962
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17963
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17965
# check trigger-3 success: 1
17966
DROP TRIGGER trg_1;
17967
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17968
f_int2 = CAST(f_char1 AS SIGNED INT),
17969
f_charbig = 'just inserted'
17970
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17972
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17973
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17974
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17975
'just inserted' FROM t0_template
17976
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17977
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
17979
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
17980
f_charbig = 'updated by trigger'
17981
WHERE f_int1 = - old.f_int1;
17983
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
17984
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
17986
# check trigger-4 success: 1
17987
DROP TRIGGER trg_1;
17988
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
17989
f_int2 = CAST(f_char1 AS SIGNED INT),
17990
f_charbig = 'just inserted'
17991
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
17993
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17994
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
17995
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
17996
'just inserted' FROM t0_template
17997
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
17998
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18000
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18001
f_charbig = 'updated by trigger'
18002
WHERE f_int1 = new.f_int1;
18004
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18005
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18007
# check trigger-5 success: 1
18008
DROP TRIGGER trg_1;
18009
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18010
f_int2 = CAST(f_char1 AS SIGNED INT),
18011
f_charbig = 'just inserted'
18012
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18014
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18015
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18016
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18017
'just inserted' FROM t0_template
18018
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18019
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18021
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18022
f_charbig = 'updated by trigger'
18023
WHERE f_int1 = - old.f_int1;
18025
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18026
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18028
# check trigger-6 success: 1
18029
DROP TRIGGER trg_1;
18030
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18031
f_int2 = CAST(f_char1 AS SIGNED INT),
18032
f_charbig = 'just inserted'
18033
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18035
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18036
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18037
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18038
'just inserted' FROM t0_template
18039
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18040
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18042
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18043
f_charbig = 'updated by trigger'
18044
WHERE f_int1 = - old.f_int1;
18047
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18049
# check trigger-7 success: 1
18050
DROP TRIGGER trg_1;
18051
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18052
f_int2 = CAST(f_char1 AS SIGNED INT),
18053
f_charbig = 'just inserted'
18054
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18056
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18057
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18058
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18059
'just inserted' FROM t0_template
18060
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18061
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18063
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18064
f_charbig = 'updated by trigger'
18065
WHERE f_int1 = - old.f_int1;
18068
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18070
# check trigger-8 success: 1
18071
DROP TRIGGER trg_1;
18072
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18073
f_int2 = CAST(f_char1 AS SIGNED INT),
18074
f_charbig = 'just inserted'
18075
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18077
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18079
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18080
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18082
SET new.f_int1 = old.f_int1 + @max_row,
18083
new.f_int2 = old.f_int2 - @max_row,
18084
new.f_charbig = '####updated per update trigger####';
18087
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18088
f_charbig = '####updated per update statement itself####';
18090
# check trigger-9 success: 1
18091
DROP TRIGGER trg_2;
18092
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18093
f_int2 = CAST(f_char1 AS SIGNED INT),
18094
f_charbig = CONCAT('===',f_char1,'===');
18095
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18097
SET new.f_int1 = new.f_int1 + @max_row,
18098
new.f_int2 = new.f_int2 - @max_row,
18099
new.f_charbig = '####updated per update trigger####';
18102
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18103
f_charbig = '####updated per update statement itself####';
18105
# check trigger-10 success: 1
18106
DROP TRIGGER trg_2;
18107
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18108
f_int2 = CAST(f_char1 AS SIGNED INT),
18109
f_charbig = CONCAT('===',f_char1,'===');
18110
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18112
SET new.f_int1 = @my_max1 + @counter,
18113
new.f_int2 = @my_min2 - @counter,
18114
new.f_charbig = '####updated per insert trigger####';
18115
SET @counter = @counter + 1;
18118
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18119
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18120
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18121
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18122
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18124
DROP TRIGGER trg_3;
18126
# check trigger-11 success: 1
18128
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18129
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18130
AND f_charbig = '####updated per insert trigger####';
18131
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18133
SET new.f_int1 = @my_max1 + @counter,
18134
new.f_int2 = @my_min2 - @counter,
18135
new.f_charbig = '####updated per insert trigger####';
18136
SET @counter = @counter + 1;
18139
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18140
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18141
SELECT CAST(f_int1 AS CHAR),
18142
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18143
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18145
DROP TRIGGER trg_3;
18147
# check trigger-12 success: 1
18149
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18150
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18151
AND f_charbig = '####updated per insert trigger####';
18153
Table Op Msg_type Msg_text
18154
test.t1 analyze status OK
18155
CHECK TABLE t1 EXTENDED;
18156
Table Op Msg_type Msg_text
18157
test.t1 check status OK
18158
CHECKSUM TABLE t1 EXTENDED;
18160
test.t1 <some_value>
18162
Table Op Msg_type Msg_text
18163
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
18164
test.t1 optimize status OK
18165
# check layout success: 1
18166
REPAIR TABLE t1 EXTENDED;
18167
Table Op Msg_type Msg_text
18168
test.t1 repair note The storage engine for the table doesn't support repair
18169
# check layout success: 1
18172
# check TRUNCATE success: 1
18173
# check layout success: 1
18174
# End usability test (inc/partition_check.inc)
18176
# 2.2.2 DROP UNIQUE INDEX consisting of two columns
18177
DROP TABLE IF EXISTS t1;
18183
f_charbig VARCHAR(1000)
18184
, UNIQUE INDEX uidx1 (f_int1,f_int2)
18186
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
18187
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18188
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18189
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18190
ALTER TABLE t1 DROP INDEX uidx1;
18191
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18192
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18193
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18194
# Start usability test (inc/partition_check.inc)
18196
SHOW CREATE TABLE t1;
18198
t1 CREATE TABLE `t1` (
18199
`f_int1` int(11) DEFAULT NULL,
18200
`f_int2` int(11) DEFAULT NULL,
18201
`f_char1` char(20) DEFAULT NULL,
18202
`f_char2` char(20) DEFAULT NULL,
18203
`f_charbig` varchar(1000) DEFAULT NULL
18204
) ENGINE=InnoDB DEFAULT CHARSET=latin1
18205
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
18208
# check prerequisites-1 success: 1
18209
# check COUNT(*) success: 1
18210
# check MIN/MAX(f_int1) success: 1
18211
# check MIN/MAX(f_int2) success: 1
18212
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18213
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18214
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18215
WHERE f_int1 IN (2,3);
18216
# check prerequisites-3 success: 1
18217
DELETE FROM t1 WHERE f_charbig = 'delete me';
18218
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
18219
# check read via f_int1 success: 1
18220
# check read via f_int2 success: 1
18222
# check multiple-1 success: 1
18223
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18225
# check multiple-2 success: 1
18226
INSERT INTO t1 SELECT * FROM t0_template
18227
WHERE MOD(f_int1,3) = 0;
18229
# check multiple-3 success: 1
18230
UPDATE t1 SET f_int1 = f_int1 + @max_row
18231
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18232
AND @max_row_div2 + @max_row_div4;
18234
# check multiple-4 success: 1
18236
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18237
AND @max_row_div2 + @max_row_div4 + @max_row;
18239
# check multiple-5 success: 1
18240
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18242
SET f_int1 = @cur_value , f_int2 = @cur_value,
18243
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18244
f_charbig = '#SINGLE#';
18246
# check single-1 success: 1
18247
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18249
SET f_int1 = @cur_value , f_int2 = @cur_value,
18250
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18251
f_charbig = '#SINGLE#';
18253
# check single-2 success: 1
18254
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18255
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18256
UPDATE t1 SET f_int1 = @cur_value2
18257
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18259
# check single-3 success: 1
18260
SET @cur_value1= -1;
18261
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18262
UPDATE t1 SET f_int1 = @cur_value1
18263
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18265
# check single-4 success: 1
18266
SELECT MAX(f_int1) INTO @cur_value FROM t1;
18267
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18269
# check single-5 success: 1
18270
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18272
# check single-6 success: 1
18273
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18275
# check single-7 success: 1
18276
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18277
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18278
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18279
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18280
f_charbig = '#NULL#';
18282
SET f_int1 = NULL , f_int2 = -@max_row,
18283
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18284
f_charbig = '#NULL#';
18285
# check null success: 1
18287
# check null-1 success: 1
18288
UPDATE t1 SET f_int1 = -@max_row
18289
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18290
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18292
# check null-2 success: 1
18293
UPDATE t1 SET f_int1 = NULL
18294
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18295
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18297
# check null-3 success: 1
18299
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18300
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18302
# check null-4 success: 1
18304
WHERE f_int1 = 0 AND f_int2 = 0
18305
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18306
AND f_charbig = '#NULL#';
18308
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18309
SELECT f_int1, f_int1, '', '', 'was inserted'
18310
FROM t0_template source_tab
18311
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18313
# check transactions-1 success: 1
18316
# check transactions-2 success: 1
18319
# check transactions-3 success: 1
18320
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18324
# check transactions-4 success: 1
18325
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18326
SELECT f_int1, f_int1, '', '', 'was inserted'
18327
FROM t0_template source_tab
18328
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18330
# check transactions-5 success: 1
18333
# check transactions-6 success: 1
18334
# INFO: Storage engine used for t1 seems to be transactional.
18337
# check transactions-7 success: 1
18338
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18340
SET @@session.sql_mode = 'traditional';
18341
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18342
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18343
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18344
'', '', 'was inserted' FROM t0_template
18345
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18346
ERROR 22012: Division by 0
18349
# check transactions-8 success: 1
18350
# INFO: Storage engine used for t1 seems to be able to revert
18351
# changes made by the failing statement.
18352
SET @@session.sql_mode = '';
18354
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18356
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18358
# check special-1 success: 1
18359
UPDATE t1 SET f_charbig = '';
18361
# check special-2 success: 1
18362
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18363
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18364
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18365
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18366
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18367
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18368
'just inserted' FROM t0_template
18369
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18370
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18372
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18373
f_charbig = 'updated by trigger'
18374
WHERE f_int1 = new.f_int1;
18376
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18377
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18378
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18380
# check trigger-1 success: 1
18381
DROP TRIGGER trg_1;
18382
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18383
f_int2 = CAST(f_char1 AS SIGNED INT),
18384
f_charbig = 'just inserted'
18385
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18387
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18388
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18389
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18390
'just inserted' FROM t0_template
18391
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18392
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18394
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18395
f_charbig = 'updated by trigger'
18396
WHERE f_int1 = new.f_int1;
18398
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18399
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18400
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18402
# check trigger-2 success: 1
18403
DROP TRIGGER trg_1;
18404
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18405
f_int2 = CAST(f_char1 AS SIGNED INT),
18406
f_charbig = 'just inserted'
18407
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18409
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18410
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18411
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18412
'just inserted' FROM t0_template
18413
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18414
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18416
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18417
f_charbig = 'updated by trigger'
18418
WHERE f_int1 = new.f_int1;
18420
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18421
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18423
# check trigger-3 success: 1
18424
DROP TRIGGER trg_1;
18425
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18426
f_int2 = CAST(f_char1 AS SIGNED INT),
18427
f_charbig = 'just inserted'
18428
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18430
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18431
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18432
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18433
'just inserted' FROM t0_template
18434
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18435
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18437
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18438
f_charbig = 'updated by trigger'
18439
WHERE f_int1 = - old.f_int1;
18441
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18442
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18444
# check trigger-4 success: 1
18445
DROP TRIGGER trg_1;
18446
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18447
f_int2 = CAST(f_char1 AS SIGNED INT),
18448
f_charbig = 'just inserted'
18449
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18451
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18452
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18453
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18454
'just inserted' FROM t0_template
18455
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18456
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18458
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18459
f_charbig = 'updated by trigger'
18460
WHERE f_int1 = new.f_int1;
18462
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18463
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18465
# check trigger-5 success: 1
18466
DROP TRIGGER trg_1;
18467
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18468
f_int2 = CAST(f_char1 AS SIGNED INT),
18469
f_charbig = 'just inserted'
18470
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18472
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18473
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18474
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18475
'just inserted' FROM t0_template
18476
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18477
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18479
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18480
f_charbig = 'updated by trigger'
18481
WHERE f_int1 = - old.f_int1;
18483
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18484
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18486
# check trigger-6 success: 1
18487
DROP TRIGGER trg_1;
18488
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18489
f_int2 = CAST(f_char1 AS SIGNED INT),
18490
f_charbig = 'just inserted'
18491
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18493
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18494
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18495
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18496
'just inserted' FROM t0_template
18497
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18498
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18500
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18501
f_charbig = 'updated by trigger'
18502
WHERE f_int1 = - old.f_int1;
18505
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18507
# check trigger-7 success: 1
18508
DROP TRIGGER trg_1;
18509
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18510
f_int2 = CAST(f_char1 AS SIGNED INT),
18511
f_charbig = 'just inserted'
18512
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18514
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18515
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18516
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18517
'just inserted' FROM t0_template
18518
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18519
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18521
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18522
f_charbig = 'updated by trigger'
18523
WHERE f_int1 = - old.f_int1;
18526
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18528
# check trigger-8 success: 1
18529
DROP TRIGGER trg_1;
18530
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18531
f_int2 = CAST(f_char1 AS SIGNED INT),
18532
f_charbig = 'just inserted'
18533
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18535
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18537
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18538
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18540
SET new.f_int1 = old.f_int1 + @max_row,
18541
new.f_int2 = old.f_int2 - @max_row,
18542
new.f_charbig = '####updated per update trigger####';
18545
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18546
f_charbig = '####updated per update statement itself####';
18548
# check trigger-9 success: 1
18549
DROP TRIGGER trg_2;
18550
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18551
f_int2 = CAST(f_char1 AS SIGNED INT),
18552
f_charbig = CONCAT('===',f_char1,'===');
18553
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18555
SET new.f_int1 = new.f_int1 + @max_row,
18556
new.f_int2 = new.f_int2 - @max_row,
18557
new.f_charbig = '####updated per update trigger####';
18560
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
18561
f_charbig = '####updated per update statement itself####';
18563
# check trigger-10 success: 1
18564
DROP TRIGGER trg_2;
18565
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18566
f_int2 = CAST(f_char1 AS SIGNED INT),
18567
f_charbig = CONCAT('===',f_char1,'===');
18568
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18570
SET new.f_int1 = @my_max1 + @counter,
18571
new.f_int2 = @my_min2 - @counter,
18572
new.f_charbig = '####updated per insert trigger####';
18573
SET @counter = @counter + 1;
18576
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18577
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18578
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18579
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18580
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18582
DROP TRIGGER trg_3;
18584
# check trigger-11 success: 1
18586
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18587
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18588
AND f_charbig = '####updated per insert trigger####';
18589
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
18591
SET new.f_int1 = @my_max1 + @counter,
18592
new.f_int2 = @my_min2 - @counter,
18593
new.f_charbig = '####updated per insert trigger####';
18594
SET @counter = @counter + 1;
18597
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
18598
INSERT INTO t1 (f_char1, f_char2, f_charbig)
18599
SELECT CAST(f_int1 AS CHAR),
18600
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
18601
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
18603
DROP TRIGGER trg_3;
18605
# check trigger-12 success: 1
18607
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
18608
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
18609
AND f_charbig = '####updated per insert trigger####';
18611
Table Op Msg_type Msg_text
18612
test.t1 analyze status OK
18613
CHECK TABLE t1 EXTENDED;
18614
Table Op Msg_type Msg_text
18615
test.t1 check status OK
18616
CHECKSUM TABLE t1 EXTENDED;
18618
test.t1 <some_value>
18620
Table Op Msg_type Msg_text
18621
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
18622
test.t1 optimize status OK
18623
# check layout success: 1
18624
REPAIR TABLE t1 EXTENDED;
18625
Table Op Msg_type Msg_text
18626
test.t1 repair note The storage engine for the table doesn't support repair
18627
# check layout success: 1
18630
# check TRUNCATE success: 1
18631
# check layout success: 1
18632
# End usability test (inc/partition_check.inc)
18639
f_charbig VARCHAR(1000)
18640
, UNIQUE INDEX uidx1 (f_int1,f_int2)
18642
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
18643
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18644
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18645
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
18646
ALTER TABLE t1 DROP INDEX uidx1;
18647
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18648
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
18649
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
18650
# Start usability test (inc/partition_check.inc)
18652
SHOW CREATE TABLE t1;
18654
t1 CREATE TABLE `t1` (
18655
`f_int1` int(11) DEFAULT NULL,
18656
`f_int2` int(11) DEFAULT NULL,
18657
`f_char1` char(20) DEFAULT NULL,
18658
`f_char2` char(20) DEFAULT NULL,
18659
`f_charbig` varchar(1000) DEFAULT NULL
18660
) ENGINE=InnoDB DEFAULT CHARSET=latin1
18661
/*!50100 PARTITION BY KEY (f_int1,f_int2)
18664
# check prerequisites-1 success: 1
18665
# check COUNT(*) success: 1
18666
# check MIN/MAX(f_int1) success: 1
18667
# check MIN/MAX(f_int2) success: 1
18668
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18669
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
18670
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
18671
WHERE f_int1 IN (2,3);
18672
# check prerequisites-3 success: 1
18673
DELETE FROM t1 WHERE f_charbig = 'delete me';
18674
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
18675
# check read via f_int1 success: 1
18676
# check read via f_int2 success: 1
18678
# check multiple-1 success: 1
18679
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
18681
# check multiple-2 success: 1
18682
INSERT INTO t1 SELECT * FROM t0_template
18683
WHERE MOD(f_int1,3) = 0;
18685
# check multiple-3 success: 1
18686
UPDATE t1 SET f_int1 = f_int1 + @max_row
18687
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
18688
AND @max_row_div2 + @max_row_div4;
18690
# check multiple-4 success: 1
18692
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
18693
AND @max_row_div2 + @max_row_div4 + @max_row;
18695
# check multiple-5 success: 1
18696
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
18698
SET f_int1 = @cur_value , f_int2 = @cur_value,
18699
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18700
f_charbig = '#SINGLE#';
18702
# check single-1 success: 1
18703
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
18705
SET f_int1 = @cur_value , f_int2 = @cur_value,
18706
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
18707
f_charbig = '#SINGLE#';
18709
# check single-2 success: 1
18710
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
18711
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
18712
UPDATE t1 SET f_int1 = @cur_value2
18713
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
18715
# check single-3 success: 1
18716
SET @cur_value1= -1;
18717
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
18718
UPDATE t1 SET f_int1 = @cur_value1
18719
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
18721
# check single-4 success: 1
18722
SELECT MAX(f_int1) INTO @cur_value FROM t1;
18723
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
18725
# check single-5 success: 1
18726
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
18728
# check single-6 success: 1
18729
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
18731
# check single-7 success: 1
18732
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
18733
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
18734
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
18735
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
18736
f_charbig = '#NULL#';
18738
SET f_int1 = NULL , f_int2 = -@max_row,
18739
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
18740
f_charbig = '#NULL#';
18741
# check null success: 1
18743
# check null-1 success: 1
18744
UPDATE t1 SET f_int1 = -@max_row
18745
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18746
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18748
# check null-2 success: 1
18749
UPDATE t1 SET f_int1 = NULL
18750
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18751
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18753
# check null-3 success: 1
18755
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
18756
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
18758
# check null-4 success: 1
18760
WHERE f_int1 = 0 AND f_int2 = 0
18761
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
18762
AND f_charbig = '#NULL#';
18764
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18765
SELECT f_int1, f_int1, '', '', 'was inserted'
18766
FROM t0_template source_tab
18767
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18769
# check transactions-1 success: 1
18772
# check transactions-2 success: 1
18775
# check transactions-3 success: 1
18776
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18780
# check transactions-4 success: 1
18781
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18782
SELECT f_int1, f_int1, '', '', 'was inserted'
18783
FROM t0_template source_tab
18784
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18786
# check transactions-5 success: 1
18789
# check transactions-6 success: 1
18790
# INFO: Storage engine used for t1 seems to be transactional.
18793
# check transactions-7 success: 1
18794
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18796
SET @@session.sql_mode = 'traditional';
18797
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
18798
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
18799
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
18800
'', '', 'was inserted' FROM t0_template
18801
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
18802
ERROR 22012: Division by 0
18805
# check transactions-8 success: 1
18806
# INFO: Storage engine used for t1 seems to be able to revert
18807
# changes made by the failing statement.
18808
SET @@session.sql_mode = '';
18810
DELETE FROM t1 WHERE f_charbig = 'was inserted';
18812
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
18814
# check special-1 success: 1
18815
UPDATE t1 SET f_charbig = '';
18817
# check special-2 success: 1
18818
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
18819
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
18820
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
18821
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18822
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18823
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18824
'just inserted' FROM t0_template
18825
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18826
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
18828
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18829
f_charbig = 'updated by trigger'
18830
WHERE f_int1 = new.f_int1;
18832
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18833
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18834
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18836
# check trigger-1 success: 1
18837
DROP TRIGGER trg_1;
18838
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18839
f_int2 = CAST(f_char1 AS SIGNED INT),
18840
f_charbig = 'just inserted'
18841
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18843
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18844
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18845
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18846
'just inserted' FROM t0_template
18847
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18848
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
18850
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18851
f_charbig = 'updated by trigger'
18852
WHERE f_int1 = new.f_int1;
18854
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18855
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
18856
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18858
# check trigger-2 success: 1
18859
DROP TRIGGER trg_1;
18860
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18861
f_int2 = CAST(f_char1 AS SIGNED INT),
18862
f_charbig = 'just inserted'
18863
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18865
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18866
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18867
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18868
'just inserted' FROM t0_template
18869
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18870
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18872
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18873
f_charbig = 'updated by trigger'
18874
WHERE f_int1 = new.f_int1;
18876
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18877
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18879
# check trigger-3 success: 1
18880
DROP TRIGGER trg_1;
18881
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18882
f_int2 = CAST(f_char1 AS SIGNED INT),
18883
f_charbig = 'just inserted'
18884
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18886
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18887
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18888
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18889
'just inserted' FROM t0_template
18890
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18891
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
18893
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18894
f_charbig = 'updated by trigger'
18895
WHERE f_int1 = - old.f_int1;
18897
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18898
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18900
# check trigger-4 success: 1
18901
DROP TRIGGER trg_1;
18902
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18903
f_int2 = CAST(f_char1 AS SIGNED INT),
18904
f_charbig = 'just inserted'
18905
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18907
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18908
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18909
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18910
'just inserted' FROM t0_template
18911
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18912
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18914
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18915
f_charbig = 'updated by trigger'
18916
WHERE f_int1 = new.f_int1;
18918
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18919
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18921
# check trigger-5 success: 1
18922
DROP TRIGGER trg_1;
18923
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18924
f_int2 = CAST(f_char1 AS SIGNED INT),
18925
f_charbig = 'just inserted'
18926
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18928
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18929
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18930
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18931
'just inserted' FROM t0_template
18932
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18933
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
18935
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18936
f_charbig = 'updated by trigger'
18937
WHERE f_int1 = - old.f_int1;
18939
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
18940
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18942
# check trigger-6 success: 1
18943
DROP TRIGGER trg_1;
18944
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18945
f_int2 = CAST(f_char1 AS SIGNED INT),
18946
f_charbig = 'just inserted'
18947
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18949
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18950
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18951
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18952
'just inserted' FROM t0_template
18953
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18954
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
18956
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18957
f_charbig = 'updated by trigger'
18958
WHERE f_int1 = - old.f_int1;
18961
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18963
# check trigger-7 success: 1
18964
DROP TRIGGER trg_1;
18965
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18966
f_int2 = CAST(f_char1 AS SIGNED INT),
18967
f_charbig = 'just inserted'
18968
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18970
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18971
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
18972
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
18973
'just inserted' FROM t0_template
18974
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18975
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
18977
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
18978
f_charbig = 'updated by trigger'
18979
WHERE f_int1 = - old.f_int1;
18982
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
18984
# check trigger-8 success: 1
18985
DROP TRIGGER trg_1;
18986
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
18987
f_int2 = CAST(f_char1 AS SIGNED INT),
18988
f_charbig = 'just inserted'
18989
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
18991
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18993
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
18994
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
18996
SET new.f_int1 = old.f_int1 + @max_row,
18997
new.f_int2 = old.f_int2 - @max_row,
18998
new.f_charbig = '####updated per update trigger####';
19001
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19002
f_charbig = '####updated per update statement itself####';
19004
# check trigger-9 success: 1
19005
DROP TRIGGER trg_2;
19006
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19007
f_int2 = CAST(f_char1 AS SIGNED INT),
19008
f_charbig = CONCAT('===',f_char1,'===');
19009
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19011
SET new.f_int1 = new.f_int1 + @max_row,
19012
new.f_int2 = new.f_int2 - @max_row,
19013
new.f_charbig = '####updated per update trigger####';
19016
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19017
f_charbig = '####updated per update statement itself####';
19019
# check trigger-10 success: 1
19020
DROP TRIGGER trg_2;
19021
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19022
f_int2 = CAST(f_char1 AS SIGNED INT),
19023
f_charbig = CONCAT('===',f_char1,'===');
19024
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19026
SET new.f_int1 = @my_max1 + @counter,
19027
new.f_int2 = @my_min2 - @counter,
19028
new.f_charbig = '####updated per insert trigger####';
19029
SET @counter = @counter + 1;
19032
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19033
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19034
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19035
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19036
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19038
DROP TRIGGER trg_3;
19040
# check trigger-11 success: 1
19042
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19043
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19044
AND f_charbig = '####updated per insert trigger####';
19045
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19047
SET new.f_int1 = @my_max1 + @counter,
19048
new.f_int2 = @my_min2 - @counter,
19049
new.f_charbig = '####updated per insert trigger####';
19050
SET @counter = @counter + 1;
19053
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19054
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19055
SELECT CAST(f_int1 AS CHAR),
19056
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19057
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19059
DROP TRIGGER trg_3;
19061
# check trigger-12 success: 1
19063
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19064
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19065
AND f_charbig = '####updated per insert trigger####';
19067
Table Op Msg_type Msg_text
19068
test.t1 analyze status OK
19069
CHECK TABLE t1 EXTENDED;
19070
Table Op Msg_type Msg_text
19071
test.t1 check status OK
19072
CHECKSUM TABLE t1 EXTENDED;
19074
test.t1 <some_value>
19076
Table Op Msg_type Msg_text
19077
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
19078
test.t1 optimize status OK
19079
# check layout success: 1
19080
REPAIR TABLE t1 EXTENDED;
19081
Table Op Msg_type Msg_text
19082
test.t1 repair note The storage engine for the table doesn't support repair
19083
# check layout success: 1
19086
# check TRUNCATE success: 1
19087
# check layout success: 1
19088
# End usability test (inc/partition_check.inc)
19095
f_charbig VARCHAR(1000)
19096
, UNIQUE INDEX uidx1 (f_int1,f_int2)
19098
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
19099
(PARTITION part_3 VALUES IN (-3),
19100
PARTITION part_2 VALUES IN (-2),
19101
PARTITION part_1 VALUES IN (-1),
19102
PARTITION part_N VALUES IN (NULL),
19103
PARTITION part0 VALUES IN (0),
19104
PARTITION part1 VALUES IN (1),
19105
PARTITION part2 VALUES IN (2),
19106
PARTITION part3 VALUES IN (3));
19107
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19108
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19109
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19110
ALTER TABLE t1 DROP INDEX uidx1;
19111
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19112
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19113
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19114
# Start usability test (inc/partition_check.inc)
19116
SHOW CREATE TABLE t1;
19118
t1 CREATE TABLE `t1` (
19119
`f_int1` int(11) DEFAULT NULL,
19120
`f_int2` int(11) DEFAULT NULL,
19121
`f_char1` char(20) DEFAULT NULL,
19122
`f_char2` char(20) DEFAULT NULL,
19123
`f_charbig` varchar(1000) DEFAULT NULL
19124
) ENGINE=InnoDB DEFAULT CHARSET=latin1
19125
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
19126
(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
19127
PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
19128
PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
19129
PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
19130
PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
19131
PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
19132
PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
19133
PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
19135
# check prerequisites-1 success: 1
19136
# check COUNT(*) success: 1
19137
# check MIN/MAX(f_int1) success: 1
19138
# check MIN/MAX(f_int2) success: 1
19139
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19140
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19141
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19142
WHERE f_int1 IN (2,3);
19143
# check prerequisites-3 success: 1
19144
DELETE FROM t1 WHERE f_charbig = 'delete me';
19145
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
19146
# check read via f_int1 success: 1
19147
# check read via f_int2 success: 1
19149
# check multiple-1 success: 1
19150
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19152
# check multiple-2 success: 1
19153
INSERT INTO t1 SELECT * FROM t0_template
19154
WHERE MOD(f_int1,3) = 0;
19156
# check multiple-3 success: 1
19157
UPDATE t1 SET f_int1 = f_int1 + @max_row
19158
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19159
AND @max_row_div2 + @max_row_div4;
19161
# check multiple-4 success: 1
19163
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19164
AND @max_row_div2 + @max_row_div4 + @max_row;
19166
# check multiple-5 success: 1
19167
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19169
SET f_int1 = @cur_value , f_int2 = @cur_value,
19170
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19171
f_charbig = '#SINGLE#';
19173
# check single-1 success: 1
19174
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19176
SET f_int1 = @cur_value , f_int2 = @cur_value,
19177
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19178
f_charbig = '#SINGLE#';
19180
# check single-2 success: 1
19181
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19182
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19183
UPDATE t1 SET f_int1 = @cur_value2
19184
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19186
# check single-3 success: 1
19187
SET @cur_value1= -1;
19188
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19189
UPDATE t1 SET f_int1 = @cur_value1
19190
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19192
# check single-4 success: 1
19193
SELECT MAX(f_int1) INTO @cur_value FROM t1;
19194
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19196
# check single-5 success: 1
19197
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19199
# check single-6 success: 1
19200
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19202
# check single-7 success: 1
19203
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
19204
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19205
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19206
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19207
f_charbig = '#NULL#';
19209
SET f_int1 = NULL , f_int2 = -@max_row,
19210
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19211
f_charbig = '#NULL#';
19212
# check null success: 1
19214
# check null-1 success: 1
19215
UPDATE t1 SET f_int1 = -@max_row
19216
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19217
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19219
# check null-2 success: 1
19220
UPDATE t1 SET f_int1 = NULL
19221
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19222
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19224
# check null-3 success: 1
19226
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19227
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19229
# check null-4 success: 1
19231
WHERE f_int1 = 0 AND f_int2 = 0
19232
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19233
AND f_charbig = '#NULL#';
19235
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19236
SELECT f_int1, f_int1, '', '', 'was inserted'
19237
FROM t0_template source_tab
19238
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19240
# check transactions-1 success: 1
19243
# check transactions-2 success: 1
19246
# check transactions-3 success: 1
19247
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19251
# check transactions-4 success: 1
19252
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19253
SELECT f_int1, f_int1, '', '', 'was inserted'
19254
FROM t0_template source_tab
19255
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19257
# check transactions-5 success: 1
19260
# check transactions-6 success: 1
19261
# INFO: Storage engine used for t1 seems to be transactional.
19264
# check transactions-7 success: 1
19265
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19267
SET @@session.sql_mode = 'traditional';
19268
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19269
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19270
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19271
'', '', 'was inserted' FROM t0_template
19272
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19273
ERROR 22012: Division by 0
19276
# check transactions-8 success: 1
19277
# INFO: Storage engine used for t1 seems to be able to revert
19278
# changes made by the failing statement.
19279
SET @@session.sql_mode = '';
19281
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19283
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19285
# check special-1 success: 1
19286
UPDATE t1 SET f_charbig = '';
19288
# check special-2 success: 1
19289
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19290
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19291
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19292
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19293
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19294
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19295
'just inserted' FROM t0_template
19296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19297
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19299
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19300
f_charbig = 'updated by trigger'
19301
WHERE f_int1 = new.f_int1;
19303
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19304
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19305
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19307
# check trigger-1 success: 1
19308
DROP TRIGGER trg_1;
19309
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19310
f_int2 = CAST(f_char1 AS SIGNED INT),
19311
f_charbig = 'just inserted'
19312
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19314
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19315
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19316
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19317
'just inserted' FROM t0_template
19318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19319
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19321
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19322
f_charbig = 'updated by trigger'
19323
WHERE f_int1 = new.f_int1;
19325
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19326
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19327
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19329
# check trigger-2 success: 1
19330
DROP TRIGGER trg_1;
19331
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19332
f_int2 = CAST(f_char1 AS SIGNED INT),
19333
f_charbig = 'just inserted'
19334
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19336
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19337
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19338
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19339
'just inserted' FROM t0_template
19340
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19341
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19343
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19344
f_charbig = 'updated by trigger'
19345
WHERE f_int1 = new.f_int1;
19347
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19348
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19350
# check trigger-3 success: 1
19351
DROP TRIGGER trg_1;
19352
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19353
f_int2 = CAST(f_char1 AS SIGNED INT),
19354
f_charbig = 'just inserted'
19355
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19357
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19358
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19359
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19360
'just inserted' FROM t0_template
19361
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19362
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19364
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19365
f_charbig = 'updated by trigger'
19366
WHERE f_int1 = - old.f_int1;
19368
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19369
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19371
# check trigger-4 success: 1
19372
DROP TRIGGER trg_1;
19373
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19374
f_int2 = CAST(f_char1 AS SIGNED INT),
19375
f_charbig = 'just inserted'
19376
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19378
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19379
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19380
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19381
'just inserted' FROM t0_template
19382
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19383
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19385
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19386
f_charbig = 'updated by trigger'
19387
WHERE f_int1 = new.f_int1;
19389
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19390
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19392
# check trigger-5 success: 1
19393
DROP TRIGGER trg_1;
19394
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19395
f_int2 = CAST(f_char1 AS SIGNED INT),
19396
f_charbig = 'just inserted'
19397
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19399
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19400
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19401
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19402
'just inserted' FROM t0_template
19403
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19404
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19406
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19407
f_charbig = 'updated by trigger'
19408
WHERE f_int1 = - old.f_int1;
19410
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19411
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19413
# check trigger-6 success: 1
19414
DROP TRIGGER trg_1;
19415
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19416
f_int2 = CAST(f_char1 AS SIGNED INT),
19417
f_charbig = 'just inserted'
19418
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19420
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19421
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19422
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19423
'just inserted' FROM t0_template
19424
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19425
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19427
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19428
f_charbig = 'updated by trigger'
19429
WHERE f_int1 = - old.f_int1;
19432
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19434
# check trigger-7 success: 1
19435
DROP TRIGGER trg_1;
19436
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19437
f_int2 = CAST(f_char1 AS SIGNED INT),
19438
f_charbig = 'just inserted'
19439
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19441
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19442
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19443
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19444
'just inserted' FROM t0_template
19445
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19446
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19448
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19449
f_charbig = 'updated by trigger'
19450
WHERE f_int1 = - old.f_int1;
19453
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19455
# check trigger-8 success: 1
19456
DROP TRIGGER trg_1;
19457
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19458
f_int2 = CAST(f_char1 AS SIGNED INT),
19459
f_charbig = 'just inserted'
19460
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19462
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19464
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19465
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19467
SET new.f_int1 = old.f_int1 + @max_row,
19468
new.f_int2 = old.f_int2 - @max_row,
19469
new.f_charbig = '####updated per update trigger####';
19472
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19473
f_charbig = '####updated per update statement itself####';
19475
# check trigger-9 success: 1
19476
DROP TRIGGER trg_2;
19477
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19478
f_int2 = CAST(f_char1 AS SIGNED INT),
19479
f_charbig = CONCAT('===',f_char1,'===');
19480
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19482
SET new.f_int1 = new.f_int1 + @max_row,
19483
new.f_int2 = new.f_int2 - @max_row,
19484
new.f_charbig = '####updated per update trigger####';
19487
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19488
f_charbig = '####updated per update statement itself####';
19490
# check trigger-10 success: 1
19491
DROP TRIGGER trg_2;
19492
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19493
f_int2 = CAST(f_char1 AS SIGNED INT),
19494
f_charbig = CONCAT('===',f_char1,'===');
19495
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19497
SET new.f_int1 = @my_max1 + @counter,
19498
new.f_int2 = @my_min2 - @counter,
19499
new.f_charbig = '####updated per insert trigger####';
19500
SET @counter = @counter + 1;
19503
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19504
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19505
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19506
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19507
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19509
DROP TRIGGER trg_3;
19511
# check trigger-11 success: 1
19513
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19514
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19515
AND f_charbig = '####updated per insert trigger####';
19516
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19518
SET new.f_int1 = @my_max1 + @counter,
19519
new.f_int2 = @my_min2 - @counter,
19520
new.f_charbig = '####updated per insert trigger####';
19521
SET @counter = @counter + 1;
19524
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19525
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19526
SELECT CAST(f_int1 AS CHAR),
19527
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19528
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19530
DROP TRIGGER trg_3;
19532
# check trigger-12 success: 1
19534
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19535
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19536
AND f_charbig = '####updated per insert trigger####';
19538
Table Op Msg_type Msg_text
19539
test.t1 analyze status OK
19540
CHECK TABLE t1 EXTENDED;
19541
Table Op Msg_type Msg_text
19542
test.t1 check status OK
19543
CHECKSUM TABLE t1 EXTENDED;
19545
test.t1 <some_value>
19547
Table Op Msg_type Msg_text
19548
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
19549
test.t1 optimize status OK
19550
# check layout success: 1
19551
REPAIR TABLE t1 EXTENDED;
19552
Table Op Msg_type Msg_text
19553
test.t1 repair note The storage engine for the table doesn't support repair
19554
# check layout success: 1
19557
# check TRUNCATE success: 1
19558
# check layout success: 1
19559
# End usability test (inc/partition_check.inc)
19566
f_charbig VARCHAR(1000)
19567
, UNIQUE INDEX uidx1 (f_int1,f_int2)
19569
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
19570
(PARTITION parta VALUES LESS THAN (0),
19571
PARTITION partb VALUES LESS THAN (5),
19572
PARTITION partc VALUES LESS THAN (10),
19573
PARTITION partd VALUES LESS THAN (10 + 5),
19574
PARTITION parte VALUES LESS THAN (20),
19575
PARTITION partf VALUES LESS THAN (2147483646));
19576
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19577
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19578
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
19579
ALTER TABLE t1 DROP INDEX uidx1;
19580
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19581
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
19582
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
19583
# Start usability test (inc/partition_check.inc)
19585
SHOW CREATE TABLE t1;
19587
t1 CREATE TABLE `t1` (
19588
`f_int1` int(11) DEFAULT NULL,
19589
`f_int2` int(11) DEFAULT NULL,
19590
`f_char1` char(20) DEFAULT NULL,
19591
`f_char2` char(20) DEFAULT NULL,
19592
`f_charbig` varchar(1000) DEFAULT NULL
19593
) ENGINE=InnoDB DEFAULT CHARSET=latin1
19594
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
19595
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
19596
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
19597
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
19598
PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
19599
PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
19600
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
19602
# check prerequisites-1 success: 1
19603
# check COUNT(*) success: 1
19604
# check MIN/MAX(f_int1) success: 1
19605
# check MIN/MAX(f_int2) success: 1
19606
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19607
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19608
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
19609
WHERE f_int1 IN (2,3);
19610
# check prerequisites-3 success: 1
19611
DELETE FROM t1 WHERE f_charbig = 'delete me';
19612
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
19613
# check read via f_int1 success: 1
19614
# check read via f_int2 success: 1
19616
# check multiple-1 success: 1
19617
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
19619
# check multiple-2 success: 1
19620
INSERT INTO t1 SELECT * FROM t0_template
19621
WHERE MOD(f_int1,3) = 0;
19623
# check multiple-3 success: 1
19624
UPDATE t1 SET f_int1 = f_int1 + @max_row
19625
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
19626
AND @max_row_div2 + @max_row_div4;
19628
# check multiple-4 success: 1
19630
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
19631
AND @max_row_div2 + @max_row_div4 + @max_row;
19633
# check multiple-5 success: 1
19634
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
19636
SET f_int1 = @cur_value , f_int2 = @cur_value,
19637
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19638
f_charbig = '#SINGLE#';
19640
# check single-1 success: 1
19641
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
19643
SET f_int1 = @cur_value , f_int2 = @cur_value,
19644
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
19645
f_charbig = '#SINGLE#';
19647
# check single-2 success: 1
19648
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
19649
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
19650
UPDATE t1 SET f_int1 = @cur_value2
19651
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
19653
# check single-3 success: 1
19654
SET @cur_value1= -1;
19655
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
19656
UPDATE t1 SET f_int1 = @cur_value1
19657
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
19659
# check single-4 success: 1
19660
SELECT MAX(f_int1) INTO @cur_value FROM t1;
19661
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
19663
# check single-5 success: 1
19664
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
19666
# check single-6 success: 1
19667
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
19668
ERROR HY000: Table has no partition for value 2147483647
19669
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
19670
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
19671
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
19672
f_charbig = '#NULL#';
19674
SET f_int1 = NULL , f_int2 = -@max_row,
19675
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
19676
f_charbig = '#NULL#';
19677
# check null success: 1
19679
# check null-1 success: 1
19680
UPDATE t1 SET f_int1 = -@max_row
19681
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19682
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19684
# check null-2 success: 1
19685
UPDATE t1 SET f_int1 = NULL
19686
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19687
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19689
# check null-3 success: 1
19691
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
19692
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
19694
# check null-4 success: 1
19696
WHERE f_int1 = 0 AND f_int2 = 0
19697
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
19698
AND f_charbig = '#NULL#';
19700
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19701
SELECT f_int1, f_int1, '', '', 'was inserted'
19702
FROM t0_template source_tab
19703
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19705
# check transactions-1 success: 1
19708
# check transactions-2 success: 1
19711
# check transactions-3 success: 1
19712
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19716
# check transactions-4 success: 1
19717
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19718
SELECT f_int1, f_int1, '', '', 'was inserted'
19719
FROM t0_template source_tab
19720
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19722
# check transactions-5 success: 1
19725
# check transactions-6 success: 1
19726
# INFO: Storage engine used for t1 seems to be transactional.
19729
# check transactions-7 success: 1
19730
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19732
SET @@session.sql_mode = 'traditional';
19733
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
19734
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19735
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
19736
'', '', 'was inserted' FROM t0_template
19737
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
19738
ERROR 22012: Division by 0
19741
# check transactions-8 success: 1
19742
# INFO: Storage engine used for t1 seems to be able to revert
19743
# changes made by the failing statement.
19744
SET @@session.sql_mode = '';
19746
DELETE FROM t1 WHERE f_charbig = 'was inserted';
19748
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
19750
# check special-1 success: 1
19751
UPDATE t1 SET f_charbig = '';
19753
# check special-2 success: 1
19754
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
19755
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
19756
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
19757
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19758
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19759
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19760
'just inserted' FROM t0_template
19761
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19762
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
19764
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19765
f_charbig = 'updated by trigger'
19766
WHERE f_int1 = new.f_int1;
19768
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19769
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19770
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19772
# check trigger-1 success: 1
19773
DROP TRIGGER trg_1;
19774
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19775
f_int2 = CAST(f_char1 AS SIGNED INT),
19776
f_charbig = 'just inserted'
19777
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19779
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19780
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19781
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19782
'just inserted' FROM t0_template
19783
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19784
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
19786
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19787
f_charbig = 'updated by trigger'
19788
WHERE f_int1 = new.f_int1;
19790
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19791
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
19792
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19794
# check trigger-2 success: 1
19795
DROP TRIGGER trg_1;
19796
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19797
f_int2 = CAST(f_char1 AS SIGNED INT),
19798
f_charbig = 'just inserted'
19799
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19801
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19802
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19803
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19804
'just inserted' FROM t0_template
19805
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19806
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19808
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19809
f_charbig = 'updated by trigger'
19810
WHERE f_int1 = new.f_int1;
19812
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19813
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19815
# check trigger-3 success: 1
19816
DROP TRIGGER trg_1;
19817
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19818
f_int2 = CAST(f_char1 AS SIGNED INT),
19819
f_charbig = 'just inserted'
19820
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19822
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19823
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19824
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19825
'just inserted' FROM t0_template
19826
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19827
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
19829
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19830
f_charbig = 'updated by trigger'
19831
WHERE f_int1 = - old.f_int1;
19833
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19834
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19836
# check trigger-4 success: 1
19837
DROP TRIGGER trg_1;
19838
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19839
f_int2 = CAST(f_char1 AS SIGNED INT),
19840
f_charbig = 'just inserted'
19841
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19843
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19844
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19845
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19846
'just inserted' FROM t0_template
19847
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19848
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19850
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19851
f_charbig = 'updated by trigger'
19852
WHERE f_int1 = new.f_int1;
19854
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19855
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19857
# check trigger-5 success: 1
19858
DROP TRIGGER trg_1;
19859
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19860
f_int2 = CAST(f_char1 AS SIGNED INT),
19861
f_charbig = 'just inserted'
19862
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19864
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19865
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19866
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19867
'just inserted' FROM t0_template
19868
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19869
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
19871
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19872
f_charbig = 'updated by trigger'
19873
WHERE f_int1 = - old.f_int1;
19875
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
19876
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19878
# check trigger-6 success: 1
19879
DROP TRIGGER trg_1;
19880
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19881
f_int2 = CAST(f_char1 AS SIGNED INT),
19882
f_charbig = 'just inserted'
19883
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19885
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19886
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19887
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19888
'just inserted' FROM t0_template
19889
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19890
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
19892
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19893
f_charbig = 'updated by trigger'
19894
WHERE f_int1 = - old.f_int1;
19897
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19899
# check trigger-7 success: 1
19900
DROP TRIGGER trg_1;
19901
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19902
f_int2 = CAST(f_char1 AS SIGNED INT),
19903
f_charbig = 'just inserted'
19904
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19906
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19907
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
19908
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
19909
'just inserted' FROM t0_template
19910
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19911
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
19913
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
19914
f_charbig = 'updated by trigger'
19915
WHERE f_int1 = - old.f_int1;
19918
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
19920
# check trigger-8 success: 1
19921
DROP TRIGGER trg_1;
19922
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19923
f_int2 = CAST(f_char1 AS SIGNED INT),
19924
f_charbig = 'just inserted'
19925
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
19927
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19929
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
19930
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19932
SET new.f_int1 = old.f_int1 + @max_row,
19933
new.f_int2 = old.f_int2 - @max_row,
19934
new.f_charbig = '####updated per update trigger####';
19937
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19938
f_charbig = '####updated per update statement itself####';
19940
# check trigger-9 success: 1
19941
DROP TRIGGER trg_2;
19942
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19943
f_int2 = CAST(f_char1 AS SIGNED INT),
19944
f_charbig = CONCAT('===',f_char1,'===');
19945
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
19947
SET new.f_int1 = new.f_int1 + @max_row,
19948
new.f_int2 = new.f_int2 - @max_row,
19949
new.f_charbig = '####updated per update trigger####';
19952
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
19953
f_charbig = '####updated per update statement itself####';
19955
# check trigger-10 success: 1
19956
DROP TRIGGER trg_2;
19957
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
19958
f_int2 = CAST(f_char1 AS SIGNED INT),
19959
f_charbig = CONCAT('===',f_char1,'===');
19960
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19962
SET new.f_int1 = @my_max1 + @counter,
19963
new.f_int2 = @my_min2 - @counter,
19964
new.f_charbig = '####updated per insert trigger####';
19965
SET @counter = @counter + 1;
19968
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19969
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
19970
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
19971
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19972
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19974
DROP TRIGGER trg_3;
19976
# check trigger-11 success: 1
19978
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
19979
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
19980
AND f_charbig = '####updated per insert trigger####';
19981
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
19983
SET new.f_int1 = @my_max1 + @counter,
19984
new.f_int2 = @my_min2 - @counter,
19985
new.f_charbig = '####updated per insert trigger####';
19986
SET @counter = @counter + 1;
19989
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
19990
INSERT INTO t1 (f_char1, f_char2, f_charbig)
19991
SELECT CAST(f_int1 AS CHAR),
19992
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
19993
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
19995
DROP TRIGGER trg_3;
19997
# check trigger-12 success: 1
19999
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20000
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20001
AND f_charbig = '####updated per insert trigger####';
20003
Table Op Msg_type Msg_text
20004
test.t1 analyze status OK
20005
CHECK TABLE t1 EXTENDED;
20006
Table Op Msg_type Msg_text
20007
test.t1 check status OK
20008
CHECKSUM TABLE t1 EXTENDED;
20010
test.t1 <some_value>
20012
Table Op Msg_type Msg_text
20013
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
20014
test.t1 optimize status OK
20015
# check layout success: 1
20016
REPAIR TABLE t1 EXTENDED;
20017
Table Op Msg_type Msg_text
20018
test.t1 repair note The storage engine for the table doesn't support repair
20019
# check layout success: 1
20022
# check TRUNCATE success: 1
20023
# check layout success: 1
20024
# End usability test (inc/partition_check.inc)
20031
f_charbig VARCHAR(1000)
20032
, UNIQUE INDEX uidx1 (f_int1,f_int2)
20034
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
20035
(PARTITION parta VALUES LESS THAN (0),
20036
PARTITION partb VALUES LESS THAN (5),
20037
PARTITION partc VALUES LESS THAN (10),
20038
PARTITION partd VALUES LESS THAN (2147483646));
20039
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20040
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20041
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20042
ALTER TABLE t1 DROP INDEX uidx1;
20043
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20044
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20045
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20046
# Start usability test (inc/partition_check.inc)
20048
SHOW CREATE TABLE t1;
20050
t1 CREATE TABLE `t1` (
20051
`f_int1` int(11) DEFAULT NULL,
20052
`f_int2` int(11) DEFAULT NULL,
20053
`f_char1` char(20) DEFAULT NULL,
20054
`f_char2` char(20) DEFAULT NULL,
20055
`f_charbig` varchar(1000) DEFAULT NULL
20056
) ENGINE=InnoDB DEFAULT CHARSET=latin1
20057
/*!50100 PARTITION BY RANGE (f_int1)
20058
SUBPARTITION BY HASH (f_int2)
20060
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
20061
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
20062
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
20063
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
20065
# check prerequisites-1 success: 1
20066
# check COUNT(*) success: 1
20067
# check MIN/MAX(f_int1) success: 1
20068
# check MIN/MAX(f_int2) success: 1
20069
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20070
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20071
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20072
WHERE f_int1 IN (2,3);
20073
# check prerequisites-3 success: 1
20074
DELETE FROM t1 WHERE f_charbig = 'delete me';
20075
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
20076
# check read via f_int1 success: 1
20077
# check read via f_int2 success: 1
20079
# check multiple-1 success: 1
20080
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20082
# check multiple-2 success: 1
20083
INSERT INTO t1 SELECT * FROM t0_template
20084
WHERE MOD(f_int1,3) = 0;
20086
# check multiple-3 success: 1
20087
UPDATE t1 SET f_int1 = f_int1 + @max_row
20088
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20089
AND @max_row_div2 + @max_row_div4;
20091
# check multiple-4 success: 1
20093
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20094
AND @max_row_div2 + @max_row_div4 + @max_row;
20096
# check multiple-5 success: 1
20097
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20099
SET f_int1 = @cur_value , f_int2 = @cur_value,
20100
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20101
f_charbig = '#SINGLE#';
20103
# check single-1 success: 1
20104
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20106
SET f_int1 = @cur_value , f_int2 = @cur_value,
20107
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20108
f_charbig = '#SINGLE#';
20110
# check single-2 success: 1
20111
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20112
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20113
UPDATE t1 SET f_int1 = @cur_value2
20114
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20116
# check single-3 success: 1
20117
SET @cur_value1= -1;
20118
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20119
UPDATE t1 SET f_int1 = @cur_value1
20120
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20122
# check single-4 success: 1
20123
SELECT MAX(f_int1) INTO @cur_value FROM t1;
20124
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20126
# check single-5 success: 1
20127
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20129
# check single-6 success: 1
20130
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20131
ERROR HY000: Table has no partition for value 2147483647
20132
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20133
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20134
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20135
f_charbig = '#NULL#';
20137
SET f_int1 = NULL , f_int2 = -@max_row,
20138
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20139
f_charbig = '#NULL#';
20140
# check null success: 1
20142
# check null-1 success: 1
20143
UPDATE t1 SET f_int1 = -@max_row
20144
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20145
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20147
# check null-2 success: 1
20148
UPDATE t1 SET f_int1 = NULL
20149
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20150
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20152
# check null-3 success: 1
20154
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20155
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20157
# check null-4 success: 1
20159
WHERE f_int1 = 0 AND f_int2 = 0
20160
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20161
AND f_charbig = '#NULL#';
20163
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20164
SELECT f_int1, f_int1, '', '', 'was inserted'
20165
FROM t0_template source_tab
20166
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20168
# check transactions-1 success: 1
20171
# check transactions-2 success: 1
20174
# check transactions-3 success: 1
20175
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20179
# check transactions-4 success: 1
20180
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20181
SELECT f_int1, f_int1, '', '', 'was inserted'
20182
FROM t0_template source_tab
20183
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20185
# check transactions-5 success: 1
20188
# check transactions-6 success: 1
20189
# INFO: Storage engine used for t1 seems to be transactional.
20192
# check transactions-7 success: 1
20193
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20195
SET @@session.sql_mode = 'traditional';
20196
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20197
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20198
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20199
'', '', 'was inserted' FROM t0_template
20200
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20201
ERROR 22012: Division by 0
20204
# check transactions-8 success: 1
20205
# INFO: Storage engine used for t1 seems to be able to revert
20206
# changes made by the failing statement.
20207
SET @@session.sql_mode = '';
20209
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20211
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20213
# check special-1 success: 1
20214
UPDATE t1 SET f_charbig = '';
20216
# check special-2 success: 1
20217
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20218
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20219
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20220
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20221
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20222
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20223
'just inserted' FROM t0_template
20224
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20225
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20227
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20228
f_charbig = 'updated by trigger'
20229
WHERE f_int1 = new.f_int1;
20231
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20232
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20233
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20235
# check trigger-1 success: 1
20236
DROP TRIGGER trg_1;
20237
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20238
f_int2 = CAST(f_char1 AS SIGNED INT),
20239
f_charbig = 'just inserted'
20240
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20242
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20243
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20244
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20245
'just inserted' FROM t0_template
20246
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20247
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20249
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20250
f_charbig = 'updated by trigger'
20251
WHERE f_int1 = new.f_int1;
20253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20254
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20255
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20257
# check trigger-2 success: 1
20258
DROP TRIGGER trg_1;
20259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20260
f_int2 = CAST(f_char1 AS SIGNED INT),
20261
f_charbig = 'just inserted'
20262
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20264
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20265
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20266
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20267
'just inserted' FROM t0_template
20268
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20269
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20271
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20272
f_charbig = 'updated by trigger'
20273
WHERE f_int1 = new.f_int1;
20275
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20276
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20278
# check trigger-3 success: 1
20279
DROP TRIGGER trg_1;
20280
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20281
f_int2 = CAST(f_char1 AS SIGNED INT),
20282
f_charbig = 'just inserted'
20283
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20285
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20286
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20287
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20288
'just inserted' FROM t0_template
20289
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20290
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20292
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20293
f_charbig = 'updated by trigger'
20294
WHERE f_int1 = - old.f_int1;
20296
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20297
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20299
# check trigger-4 success: 1
20300
DROP TRIGGER trg_1;
20301
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20302
f_int2 = CAST(f_char1 AS SIGNED INT),
20303
f_charbig = 'just inserted'
20304
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20306
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20307
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20308
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20309
'just inserted' FROM t0_template
20310
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20311
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20313
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20314
f_charbig = 'updated by trigger'
20315
WHERE f_int1 = new.f_int1;
20317
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20318
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20320
# check trigger-5 success: 1
20321
DROP TRIGGER trg_1;
20322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20323
f_int2 = CAST(f_char1 AS SIGNED INT),
20324
f_charbig = 'just inserted'
20325
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20327
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20328
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20329
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20330
'just inserted' FROM t0_template
20331
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20332
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20334
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20335
f_charbig = 'updated by trigger'
20336
WHERE f_int1 = - old.f_int1;
20338
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20339
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20341
# check trigger-6 success: 1
20342
DROP TRIGGER trg_1;
20343
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20344
f_int2 = CAST(f_char1 AS SIGNED INT),
20345
f_charbig = 'just inserted'
20346
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20348
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20349
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20350
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20351
'just inserted' FROM t0_template
20352
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20353
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20355
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20356
f_charbig = 'updated by trigger'
20357
WHERE f_int1 = - old.f_int1;
20360
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20362
# check trigger-7 success: 1
20363
DROP TRIGGER trg_1;
20364
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20365
f_int2 = CAST(f_char1 AS SIGNED INT),
20366
f_charbig = 'just inserted'
20367
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20369
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20370
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20371
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20372
'just inserted' FROM t0_template
20373
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20374
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20376
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20377
f_charbig = 'updated by trigger'
20378
WHERE f_int1 = - old.f_int1;
20381
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20383
# check trigger-8 success: 1
20384
DROP TRIGGER trg_1;
20385
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20386
f_int2 = CAST(f_char1 AS SIGNED INT),
20387
f_charbig = 'just inserted'
20388
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20390
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20392
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20393
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20395
SET new.f_int1 = old.f_int1 + @max_row,
20396
new.f_int2 = old.f_int2 - @max_row,
20397
new.f_charbig = '####updated per update trigger####';
20400
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20401
f_charbig = '####updated per update statement itself####';
20403
# check trigger-9 success: 1
20404
DROP TRIGGER trg_2;
20405
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20406
f_int2 = CAST(f_char1 AS SIGNED INT),
20407
f_charbig = CONCAT('===',f_char1,'===');
20408
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20410
SET new.f_int1 = new.f_int1 + @max_row,
20411
new.f_int2 = new.f_int2 - @max_row,
20412
new.f_charbig = '####updated per update trigger####';
20415
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20416
f_charbig = '####updated per update statement itself####';
20418
# check trigger-10 success: 1
20419
DROP TRIGGER trg_2;
20420
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20421
f_int2 = CAST(f_char1 AS SIGNED INT),
20422
f_charbig = CONCAT('===',f_char1,'===');
20423
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20425
SET new.f_int1 = @my_max1 + @counter,
20426
new.f_int2 = @my_min2 - @counter,
20427
new.f_charbig = '####updated per insert trigger####';
20428
SET @counter = @counter + 1;
20431
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20432
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20433
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20434
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20435
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20437
DROP TRIGGER trg_3;
20439
# check trigger-11 success: 1
20441
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20442
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20443
AND f_charbig = '####updated per insert trigger####';
20444
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20446
SET new.f_int1 = @my_max1 + @counter,
20447
new.f_int2 = @my_min2 - @counter,
20448
new.f_charbig = '####updated per insert trigger####';
20449
SET @counter = @counter + 1;
20452
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20453
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20454
SELECT CAST(f_int1 AS CHAR),
20455
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20456
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20458
DROP TRIGGER trg_3;
20460
# check trigger-12 success: 1
20462
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20463
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20464
AND f_charbig = '####updated per insert trigger####';
20466
Table Op Msg_type Msg_text
20467
test.t1 analyze status OK
20468
CHECK TABLE t1 EXTENDED;
20469
Table Op Msg_type Msg_text
20470
test.t1 check status OK
20471
CHECKSUM TABLE t1 EXTENDED;
20473
test.t1 <some_value>
20475
Table Op Msg_type Msg_text
20476
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
20477
test.t1 optimize status OK
20478
# check layout success: 1
20479
REPAIR TABLE t1 EXTENDED;
20480
Table Op Msg_type Msg_text
20481
test.t1 repair note The storage engine for the table doesn't support repair
20482
# check layout success: 1
20485
# check TRUNCATE success: 1
20486
# check layout success: 1
20487
# End usability test (inc/partition_check.inc)
20494
f_charbig VARCHAR(1000)
20495
, UNIQUE INDEX uidx1 (f_int1,f_int2)
20497
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
20498
(PARTITION part1 VALUES LESS THAN (0)
20499
(SUBPARTITION subpart11, SUBPARTITION subpart12),
20500
PARTITION part2 VALUES LESS THAN (5)
20501
(SUBPARTITION subpart21, SUBPARTITION subpart22),
20502
PARTITION part3 VALUES LESS THAN (10)
20503
(SUBPARTITION subpart31, SUBPARTITION subpart32),
20504
PARTITION part4 VALUES LESS THAN (2147483646)
20505
(SUBPARTITION subpart41, SUBPARTITION subpart42));
20506
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20507
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20508
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20509
ALTER TABLE t1 DROP INDEX uidx1;
20510
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20511
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20512
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20513
# Start usability test (inc/partition_check.inc)
20515
SHOW CREATE TABLE t1;
20517
t1 CREATE TABLE `t1` (
20518
`f_int1` int(11) DEFAULT NULL,
20519
`f_int2` int(11) DEFAULT NULL,
20520
`f_char1` char(20) DEFAULT NULL,
20521
`f_char2` char(20) DEFAULT NULL,
20522
`f_charbig` varchar(1000) DEFAULT NULL
20523
) ENGINE=InnoDB DEFAULT CHARSET=latin1
20524
/*!50100 PARTITION BY RANGE (f_int1)
20525
SUBPARTITION BY KEY (f_int2)
20526
(PARTITION part1 VALUES LESS THAN (0)
20527
(SUBPARTITION subpart11 ENGINE = InnoDB,
20528
SUBPARTITION subpart12 ENGINE = InnoDB),
20529
PARTITION part2 VALUES LESS THAN (5)
20530
(SUBPARTITION subpart21 ENGINE = InnoDB,
20531
SUBPARTITION subpart22 ENGINE = InnoDB),
20532
PARTITION part3 VALUES LESS THAN (10)
20533
(SUBPARTITION subpart31 ENGINE = InnoDB,
20534
SUBPARTITION subpart32 ENGINE = InnoDB),
20535
PARTITION part4 VALUES LESS THAN (2147483646)
20536
(SUBPARTITION subpart41 ENGINE = InnoDB,
20537
SUBPARTITION subpart42 ENGINE = InnoDB)) */
20539
# check prerequisites-1 success: 1
20540
# check COUNT(*) success: 1
20541
# check MIN/MAX(f_int1) success: 1
20542
# check MIN/MAX(f_int2) success: 1
20543
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20544
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20545
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
20546
WHERE f_int1 IN (2,3);
20547
# check prerequisites-3 success: 1
20548
DELETE FROM t1 WHERE f_charbig = 'delete me';
20549
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
20550
# check read via f_int1 success: 1
20551
# check read via f_int2 success: 1
20553
# check multiple-1 success: 1
20554
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
20556
# check multiple-2 success: 1
20557
INSERT INTO t1 SELECT * FROM t0_template
20558
WHERE MOD(f_int1,3) = 0;
20560
# check multiple-3 success: 1
20561
UPDATE t1 SET f_int1 = f_int1 + @max_row
20562
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
20563
AND @max_row_div2 + @max_row_div4;
20565
# check multiple-4 success: 1
20567
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
20568
AND @max_row_div2 + @max_row_div4 + @max_row;
20570
# check multiple-5 success: 1
20571
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
20573
SET f_int1 = @cur_value , f_int2 = @cur_value,
20574
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20575
f_charbig = '#SINGLE#';
20577
# check single-1 success: 1
20578
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
20580
SET f_int1 = @cur_value , f_int2 = @cur_value,
20581
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
20582
f_charbig = '#SINGLE#';
20584
# check single-2 success: 1
20585
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
20586
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
20587
UPDATE t1 SET f_int1 = @cur_value2
20588
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
20590
# check single-3 success: 1
20591
SET @cur_value1= -1;
20592
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
20593
UPDATE t1 SET f_int1 = @cur_value1
20594
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
20596
# check single-4 success: 1
20597
SELECT MAX(f_int1) INTO @cur_value FROM t1;
20598
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
20600
# check single-5 success: 1
20601
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
20603
# check single-6 success: 1
20604
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
20605
ERROR HY000: Table has no partition for value 2147483647
20606
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
20607
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
20608
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
20609
f_charbig = '#NULL#';
20611
SET f_int1 = NULL , f_int2 = -@max_row,
20612
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
20613
f_charbig = '#NULL#';
20614
# check null success: 1
20616
# check null-1 success: 1
20617
UPDATE t1 SET f_int1 = -@max_row
20618
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20619
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20621
# check null-2 success: 1
20622
UPDATE t1 SET f_int1 = NULL
20623
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20624
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20626
# check null-3 success: 1
20628
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
20629
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
20631
# check null-4 success: 1
20633
WHERE f_int1 = 0 AND f_int2 = 0
20634
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
20635
AND f_charbig = '#NULL#';
20637
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20638
SELECT f_int1, f_int1, '', '', 'was inserted'
20639
FROM t0_template source_tab
20640
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20642
# check transactions-1 success: 1
20645
# check transactions-2 success: 1
20648
# check transactions-3 success: 1
20649
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20653
# check transactions-4 success: 1
20654
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20655
SELECT f_int1, f_int1, '', '', 'was inserted'
20656
FROM t0_template source_tab
20657
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20659
# check transactions-5 success: 1
20662
# check transactions-6 success: 1
20663
# INFO: Storage engine used for t1 seems to be transactional.
20666
# check transactions-7 success: 1
20667
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20669
SET @@session.sql_mode = 'traditional';
20670
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
20671
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20672
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
20673
'', '', 'was inserted' FROM t0_template
20674
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
20675
ERROR 22012: Division by 0
20678
# check transactions-8 success: 1
20679
# INFO: Storage engine used for t1 seems to be able to revert
20680
# changes made by the failing statement.
20681
SET @@session.sql_mode = '';
20683
DELETE FROM t1 WHERE f_charbig = 'was inserted';
20685
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
20687
# check special-1 success: 1
20688
UPDATE t1 SET f_charbig = '';
20690
# check special-2 success: 1
20691
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
20692
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20693
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
20694
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20695
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20696
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20697
'just inserted' FROM t0_template
20698
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20699
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
20701
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20702
f_charbig = 'updated by trigger'
20703
WHERE f_int1 = new.f_int1;
20705
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20706
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20707
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20709
# check trigger-1 success: 1
20710
DROP TRIGGER trg_1;
20711
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20712
f_int2 = CAST(f_char1 AS SIGNED INT),
20713
f_charbig = 'just inserted'
20714
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20716
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20717
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20718
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20719
'just inserted' FROM t0_template
20720
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20721
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
20723
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20724
f_charbig = 'updated by trigger'
20725
WHERE f_int1 = new.f_int1;
20727
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20728
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
20729
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20731
# check trigger-2 success: 1
20732
DROP TRIGGER trg_1;
20733
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20734
f_int2 = CAST(f_char1 AS SIGNED INT),
20735
f_charbig = 'just inserted'
20736
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20738
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20739
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20740
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20741
'just inserted' FROM t0_template
20742
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20743
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20745
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20746
f_charbig = 'updated by trigger'
20747
WHERE f_int1 = new.f_int1;
20749
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20750
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20752
# check trigger-3 success: 1
20753
DROP TRIGGER trg_1;
20754
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20755
f_int2 = CAST(f_char1 AS SIGNED INT),
20756
f_charbig = 'just inserted'
20757
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20759
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20760
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20761
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20762
'just inserted' FROM t0_template
20763
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20764
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
20766
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20767
f_charbig = 'updated by trigger'
20768
WHERE f_int1 = - old.f_int1;
20770
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20771
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20773
# check trigger-4 success: 1
20774
DROP TRIGGER trg_1;
20775
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20776
f_int2 = CAST(f_char1 AS SIGNED INT),
20777
f_charbig = 'just inserted'
20778
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20780
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20781
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20782
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20783
'just inserted' FROM t0_template
20784
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20785
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20787
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20788
f_charbig = 'updated by trigger'
20789
WHERE f_int1 = new.f_int1;
20791
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20792
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20794
# check trigger-5 success: 1
20795
DROP TRIGGER trg_1;
20796
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20797
f_int2 = CAST(f_char1 AS SIGNED INT),
20798
f_charbig = 'just inserted'
20799
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20801
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20802
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20803
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20804
'just inserted' FROM t0_template
20805
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20806
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
20808
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20809
f_charbig = 'updated by trigger'
20810
WHERE f_int1 = - old.f_int1;
20812
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
20813
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20815
# check trigger-6 success: 1
20816
DROP TRIGGER trg_1;
20817
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20818
f_int2 = CAST(f_char1 AS SIGNED INT),
20819
f_charbig = 'just inserted'
20820
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20822
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20823
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20824
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20825
'just inserted' FROM t0_template
20826
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20827
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
20829
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20830
f_charbig = 'updated by trigger'
20831
WHERE f_int1 = - old.f_int1;
20834
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20836
# check trigger-7 success: 1
20837
DROP TRIGGER trg_1;
20838
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20839
f_int2 = CAST(f_char1 AS SIGNED INT),
20840
f_charbig = 'just inserted'
20841
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20843
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20844
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
20845
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
20846
'just inserted' FROM t0_template
20847
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20848
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
20850
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
20851
f_charbig = 'updated by trigger'
20852
WHERE f_int1 = - old.f_int1;
20855
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
20857
# check trigger-8 success: 1
20858
DROP TRIGGER trg_1;
20859
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20860
f_int2 = CAST(f_char1 AS SIGNED INT),
20861
f_charbig = 'just inserted'
20862
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
20864
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20866
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
20867
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20869
SET new.f_int1 = old.f_int1 + @max_row,
20870
new.f_int2 = old.f_int2 - @max_row,
20871
new.f_charbig = '####updated per update trigger####';
20874
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20875
f_charbig = '####updated per update statement itself####';
20877
# check trigger-9 success: 1
20878
DROP TRIGGER trg_2;
20879
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20880
f_int2 = CAST(f_char1 AS SIGNED INT),
20881
f_charbig = CONCAT('===',f_char1,'===');
20882
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
20884
SET new.f_int1 = new.f_int1 + @max_row,
20885
new.f_int2 = new.f_int2 - @max_row,
20886
new.f_charbig = '####updated per update trigger####';
20889
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
20890
f_charbig = '####updated per update statement itself####';
20892
# check trigger-10 success: 1
20893
DROP TRIGGER trg_2;
20894
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
20895
f_int2 = CAST(f_char1 AS SIGNED INT),
20896
f_charbig = CONCAT('===',f_char1,'===');
20897
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20899
SET new.f_int1 = @my_max1 + @counter,
20900
new.f_int2 = @my_min2 - @counter,
20901
new.f_charbig = '####updated per insert trigger####';
20902
SET @counter = @counter + 1;
20905
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20906
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
20907
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
20908
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20909
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20911
DROP TRIGGER trg_3;
20913
# check trigger-11 success: 1
20915
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20916
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20917
AND f_charbig = '####updated per insert trigger####';
20918
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
20920
SET new.f_int1 = @my_max1 + @counter,
20921
new.f_int2 = @my_min2 - @counter,
20922
new.f_charbig = '####updated per insert trigger####';
20923
SET @counter = @counter + 1;
20926
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
20927
INSERT INTO t1 (f_char1, f_char2, f_charbig)
20928
SELECT CAST(f_int1 AS CHAR),
20929
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
20930
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
20932
DROP TRIGGER trg_3;
20934
# check trigger-12 success: 1
20936
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
20937
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
20938
AND f_charbig = '####updated per insert trigger####';
20940
Table Op Msg_type Msg_text
20941
test.t1 analyze status OK
20942
CHECK TABLE t1 EXTENDED;
20943
Table Op Msg_type Msg_text
20944
test.t1 check status OK
20945
CHECKSUM TABLE t1 EXTENDED;
20947
test.t1 <some_value>
20949
Table Op Msg_type Msg_text
20950
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
20951
test.t1 optimize status OK
20952
# check layout success: 1
20953
REPAIR TABLE t1 EXTENDED;
20954
Table Op Msg_type Msg_text
20955
test.t1 repair note The storage engine for the table doesn't support repair
20956
# check layout success: 1
20959
# check TRUNCATE success: 1
20960
# check layout success: 1
20961
# End usability test (inc/partition_check.inc)
20968
f_charbig VARCHAR(1000)
20969
, UNIQUE INDEX uidx1 (f_int1,f_int2)
20971
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
20972
(PARTITION part1 VALUES IN (0)
20973
(SUBPARTITION sp11, SUBPARTITION sp12),
20974
PARTITION part2 VALUES IN (1)
20975
(SUBPARTITION sp21, SUBPARTITION sp22),
20976
PARTITION part3 VALUES IN (2)
20977
(SUBPARTITION sp31, SUBPARTITION sp32),
20978
PARTITION part4 VALUES IN (NULL)
20979
(SUBPARTITION sp41, SUBPARTITION sp42));
20980
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20981
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20982
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
20983
ALTER TABLE t1 DROP INDEX uidx1;
20984
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
20985
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
20986
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
20987
# Start usability test (inc/partition_check.inc)
20989
SHOW CREATE TABLE t1;
20991
t1 CREATE TABLE `t1` (
20992
`f_int1` int(11) DEFAULT NULL,
20993
`f_int2` int(11) DEFAULT NULL,
20994
`f_char1` char(20) DEFAULT NULL,
20995
`f_char2` char(20) DEFAULT NULL,
20996
`f_charbig` varchar(1000) DEFAULT NULL
20997
) ENGINE=InnoDB DEFAULT CHARSET=latin1
20998
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
20999
SUBPARTITION BY HASH (f_int2 + 1)
21000
(PARTITION part1 VALUES IN (0)
21001
(SUBPARTITION sp11 ENGINE = InnoDB,
21002
SUBPARTITION sp12 ENGINE = InnoDB),
21003
PARTITION part2 VALUES IN (1)
21004
(SUBPARTITION sp21 ENGINE = InnoDB,
21005
SUBPARTITION sp22 ENGINE = InnoDB),
21006
PARTITION part3 VALUES IN (2)
21007
(SUBPARTITION sp31 ENGINE = InnoDB,
21008
SUBPARTITION sp32 ENGINE = InnoDB),
21009
PARTITION part4 VALUES IN (NULL)
21010
(SUBPARTITION sp41 ENGINE = InnoDB,
21011
SUBPARTITION sp42 ENGINE = InnoDB)) */
21013
# check prerequisites-1 success: 1
21014
# check COUNT(*) success: 1
21015
# check MIN/MAX(f_int1) success: 1
21016
# check MIN/MAX(f_int2) success: 1
21017
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21018
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21019
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21020
WHERE f_int1 IN (2,3);
21021
# check prerequisites-3 success: 1
21022
DELETE FROM t1 WHERE f_charbig = 'delete me';
21023
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21024
# check read via f_int1 success: 1
21025
# check read via f_int2 success: 1
21027
# check multiple-1 success: 1
21028
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21030
# check multiple-2 success: 1
21031
INSERT INTO t1 SELECT * FROM t0_template
21032
WHERE MOD(f_int1,3) = 0;
21034
# check multiple-3 success: 1
21035
UPDATE t1 SET f_int1 = f_int1 + @max_row
21036
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21037
AND @max_row_div2 + @max_row_div4;
21039
# check multiple-4 success: 1
21041
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21042
AND @max_row_div2 + @max_row_div4 + @max_row;
21044
# check multiple-5 success: 1
21045
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21047
SET f_int1 = @cur_value , f_int2 = @cur_value,
21048
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21049
f_charbig = '#SINGLE#';
21051
# check single-1 success: 1
21052
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21054
SET f_int1 = @cur_value , f_int2 = @cur_value,
21055
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21056
f_charbig = '#SINGLE#';
21058
# check single-2 success: 1
21059
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21060
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21061
UPDATE t1 SET f_int1 = @cur_value2
21062
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21064
# check single-3 success: 1
21065
SET @cur_value1= -1;
21066
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21067
UPDATE t1 SET f_int1 = @cur_value1
21068
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21070
# check single-4 success: 1
21071
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21072
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21074
# check single-5 success: 1
21075
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21077
# check single-6 success: 1
21078
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21080
# check single-7 success: 1
21081
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21082
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21083
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21084
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21085
f_charbig = '#NULL#';
21087
SET f_int1 = NULL , f_int2 = -@max_row,
21088
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21089
f_charbig = '#NULL#';
21090
# check null success: 1
21092
# check null-1 success: 1
21093
UPDATE t1 SET f_int1 = -@max_row
21094
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21095
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21097
# check null-2 success: 1
21098
UPDATE t1 SET f_int1 = NULL
21099
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21100
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21102
# check null-3 success: 1
21104
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21105
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21107
# check null-4 success: 1
21109
WHERE f_int1 = 0 AND f_int2 = 0
21110
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21111
AND f_charbig = '#NULL#';
21113
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21114
SELECT f_int1, f_int1, '', '', 'was inserted'
21115
FROM t0_template source_tab
21116
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21118
# check transactions-1 success: 1
21121
# check transactions-2 success: 1
21124
# check transactions-3 success: 1
21125
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21129
# check transactions-4 success: 1
21130
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21131
SELECT f_int1, f_int1, '', '', 'was inserted'
21132
FROM t0_template source_tab
21133
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21135
# check transactions-5 success: 1
21138
# check transactions-6 success: 1
21139
# INFO: Storage engine used for t1 seems to be transactional.
21142
# check transactions-7 success: 1
21143
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21145
SET @@session.sql_mode = 'traditional';
21146
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21147
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21148
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21149
'', '', 'was inserted' FROM t0_template
21150
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21151
ERROR 22012: Division by 0
21154
# check transactions-8 success: 1
21155
# INFO: Storage engine used for t1 seems to be able to revert
21156
# changes made by the failing statement.
21157
SET @@session.sql_mode = '';
21159
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21161
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21163
# check special-1 success: 1
21164
UPDATE t1 SET f_charbig = '';
21166
# check special-2 success: 1
21167
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21168
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21169
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21170
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21171
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21172
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21173
'just inserted' FROM t0_template
21174
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21175
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21177
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21178
f_charbig = 'updated by trigger'
21179
WHERE f_int1 = new.f_int1;
21181
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21182
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21183
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21185
# check trigger-1 success: 1
21186
DROP TRIGGER trg_1;
21187
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21188
f_int2 = CAST(f_char1 AS SIGNED INT),
21189
f_charbig = 'just inserted'
21190
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21192
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21193
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21194
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21195
'just inserted' FROM t0_template
21196
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21197
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21199
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21200
f_charbig = 'updated by trigger'
21201
WHERE f_int1 = new.f_int1;
21203
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21204
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21205
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21207
# check trigger-2 success: 1
21208
DROP TRIGGER trg_1;
21209
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21210
f_int2 = CAST(f_char1 AS SIGNED INT),
21211
f_charbig = 'just inserted'
21212
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21214
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21215
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21216
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21217
'just inserted' FROM t0_template
21218
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21219
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21221
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21222
f_charbig = 'updated by trigger'
21223
WHERE f_int1 = new.f_int1;
21225
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21226
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21228
# check trigger-3 success: 1
21229
DROP TRIGGER trg_1;
21230
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21231
f_int2 = CAST(f_char1 AS SIGNED INT),
21232
f_charbig = 'just inserted'
21233
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21235
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21236
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21237
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21238
'just inserted' FROM t0_template
21239
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21240
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21242
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21243
f_charbig = 'updated by trigger'
21244
WHERE f_int1 = - old.f_int1;
21246
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21247
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21249
# check trigger-4 success: 1
21250
DROP TRIGGER trg_1;
21251
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21252
f_int2 = CAST(f_char1 AS SIGNED INT),
21253
f_charbig = 'just inserted'
21254
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21256
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21257
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21258
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21259
'just inserted' FROM t0_template
21260
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21261
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21263
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21264
f_charbig = 'updated by trigger'
21265
WHERE f_int1 = new.f_int1;
21267
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21268
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21270
# check trigger-5 success: 1
21271
DROP TRIGGER trg_1;
21272
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21273
f_int2 = CAST(f_char1 AS SIGNED INT),
21274
f_charbig = 'just inserted'
21275
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21277
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21278
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21279
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21280
'just inserted' FROM t0_template
21281
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21282
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21284
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21285
f_charbig = 'updated by trigger'
21286
WHERE f_int1 = - old.f_int1;
21288
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21289
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21291
# check trigger-6 success: 1
21292
DROP TRIGGER trg_1;
21293
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21294
f_int2 = CAST(f_char1 AS SIGNED INT),
21295
f_charbig = 'just inserted'
21296
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21298
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21299
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21300
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21301
'just inserted' FROM t0_template
21302
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21303
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21305
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21306
f_charbig = 'updated by trigger'
21307
WHERE f_int1 = - old.f_int1;
21310
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21312
# check trigger-7 success: 1
21313
DROP TRIGGER trg_1;
21314
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21315
f_int2 = CAST(f_char1 AS SIGNED INT),
21316
f_charbig = 'just inserted'
21317
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21319
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21320
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21321
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21322
'just inserted' FROM t0_template
21323
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21324
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21326
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21327
f_charbig = 'updated by trigger'
21328
WHERE f_int1 = - old.f_int1;
21331
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21333
# check trigger-8 success: 1
21334
DROP TRIGGER trg_1;
21335
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21336
f_int2 = CAST(f_char1 AS SIGNED INT),
21337
f_charbig = 'just inserted'
21338
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21340
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21342
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21343
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21345
SET new.f_int1 = old.f_int1 + @max_row,
21346
new.f_int2 = old.f_int2 - @max_row,
21347
new.f_charbig = '####updated per update trigger####';
21350
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21351
f_charbig = '####updated per update statement itself####';
21353
# check trigger-9 success: 1
21354
DROP TRIGGER trg_2;
21355
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21356
f_int2 = CAST(f_char1 AS SIGNED INT),
21357
f_charbig = CONCAT('===',f_char1,'===');
21358
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21360
SET new.f_int1 = new.f_int1 + @max_row,
21361
new.f_int2 = new.f_int2 - @max_row,
21362
new.f_charbig = '####updated per update trigger####';
21365
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21366
f_charbig = '####updated per update statement itself####';
21368
# check trigger-10 success: 1
21369
DROP TRIGGER trg_2;
21370
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21371
f_int2 = CAST(f_char1 AS SIGNED INT),
21372
f_charbig = CONCAT('===',f_char1,'===');
21373
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21375
SET new.f_int1 = @my_max1 + @counter,
21376
new.f_int2 = @my_min2 - @counter,
21377
new.f_charbig = '####updated per insert trigger####';
21378
SET @counter = @counter + 1;
21381
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21382
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21383
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21384
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21385
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21387
DROP TRIGGER trg_3;
21389
# check trigger-11 success: 1
21391
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21392
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21393
AND f_charbig = '####updated per insert trigger####';
21394
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21396
SET new.f_int1 = @my_max1 + @counter,
21397
new.f_int2 = @my_min2 - @counter,
21398
new.f_charbig = '####updated per insert trigger####';
21399
SET @counter = @counter + 1;
21402
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21403
INSERT INTO t1 (f_char1, f_char2, f_charbig)
21404
SELECT CAST(f_int1 AS CHAR),
21405
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21406
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21408
DROP TRIGGER trg_3;
21410
# check trigger-12 success: 1
21412
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21413
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21414
AND f_charbig = '####updated per insert trigger####';
21416
Table Op Msg_type Msg_text
21417
test.t1 analyze status OK
21418
CHECK TABLE t1 EXTENDED;
21419
Table Op Msg_type Msg_text
21420
test.t1 check status OK
21421
CHECKSUM TABLE t1 EXTENDED;
21423
test.t1 <some_value>
21425
Table Op Msg_type Msg_text
21426
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
21427
test.t1 optimize status OK
21428
# check layout success: 1
21429
REPAIR TABLE t1 EXTENDED;
21430
Table Op Msg_type Msg_text
21431
test.t1 repair note The storage engine for the table doesn't support repair
21432
# check layout success: 1
21435
# check TRUNCATE success: 1
21436
# check layout success: 1
21437
# End usability test (inc/partition_check.inc)
21444
f_charbig VARCHAR(1000)
21445
, UNIQUE INDEX uidx1 (f_int1,f_int2)
21447
PARTITION BY LIST(ABS(MOD(f_int1,2)))
21448
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
21449
(PARTITION part1 VALUES IN (0),
21450
PARTITION part2 VALUES IN (1),
21451
PARTITION part3 VALUES IN (NULL));
21452
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21453
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21454
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21455
ALTER TABLE t1 DROP INDEX uidx1;
21456
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21457
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21458
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21459
# Start usability test (inc/partition_check.inc)
21461
SHOW CREATE TABLE t1;
21463
t1 CREATE TABLE `t1` (
21464
`f_int1` int(11) DEFAULT NULL,
21465
`f_int2` int(11) DEFAULT NULL,
21466
`f_char1` char(20) DEFAULT NULL,
21467
`f_char2` char(20) DEFAULT NULL,
21468
`f_charbig` varchar(1000) DEFAULT NULL
21469
) ENGINE=InnoDB DEFAULT CHARSET=latin1
21470
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
21471
SUBPARTITION BY KEY (f_int2)
21473
(PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
21474
PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
21475
PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
21477
# check prerequisites-1 success: 1
21478
# check COUNT(*) success: 1
21479
# check MIN/MAX(f_int1) success: 1
21480
# check MIN/MAX(f_int2) success: 1
21481
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21482
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21483
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21484
WHERE f_int1 IN (2,3);
21485
# check prerequisites-3 success: 1
21486
DELETE FROM t1 WHERE f_charbig = 'delete me';
21487
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21488
# check read via f_int1 success: 1
21489
# check read via f_int2 success: 1
21491
# check multiple-1 success: 1
21492
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21494
# check multiple-2 success: 1
21495
INSERT INTO t1 SELECT * FROM t0_template
21496
WHERE MOD(f_int1,3) = 0;
21498
# check multiple-3 success: 1
21499
UPDATE t1 SET f_int1 = f_int1 + @max_row
21500
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21501
AND @max_row_div2 + @max_row_div4;
21503
# check multiple-4 success: 1
21505
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21506
AND @max_row_div2 + @max_row_div4 + @max_row;
21508
# check multiple-5 success: 1
21509
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21511
SET f_int1 = @cur_value , f_int2 = @cur_value,
21512
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21513
f_charbig = '#SINGLE#';
21515
# check single-1 success: 1
21516
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21518
SET f_int1 = @cur_value , f_int2 = @cur_value,
21519
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21520
f_charbig = '#SINGLE#';
21522
# check single-2 success: 1
21523
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21524
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21525
UPDATE t1 SET f_int1 = @cur_value2
21526
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21528
# check single-3 success: 1
21529
SET @cur_value1= -1;
21530
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21531
UPDATE t1 SET f_int1 = @cur_value1
21532
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21534
# check single-4 success: 1
21535
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21536
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21538
# check single-5 success: 1
21539
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21541
# check single-6 success: 1
21542
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
21544
# check single-7 success: 1
21545
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
21546
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
21547
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
21548
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
21549
f_charbig = '#NULL#';
21551
SET f_int1 = NULL , f_int2 = -@max_row,
21552
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
21553
f_charbig = '#NULL#';
21554
# check null success: 1
21556
# check null-1 success: 1
21557
UPDATE t1 SET f_int1 = -@max_row
21558
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21559
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21561
# check null-2 success: 1
21562
UPDATE t1 SET f_int1 = NULL
21563
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21564
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21566
# check null-3 success: 1
21568
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
21569
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
21571
# check null-4 success: 1
21573
WHERE f_int1 = 0 AND f_int2 = 0
21574
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
21575
AND f_charbig = '#NULL#';
21577
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21578
SELECT f_int1, f_int1, '', '', 'was inserted'
21579
FROM t0_template source_tab
21580
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21582
# check transactions-1 success: 1
21585
# check transactions-2 success: 1
21588
# check transactions-3 success: 1
21589
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21593
# check transactions-4 success: 1
21594
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21595
SELECT f_int1, f_int1, '', '', 'was inserted'
21596
FROM t0_template source_tab
21597
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21599
# check transactions-5 success: 1
21602
# check transactions-6 success: 1
21603
# INFO: Storage engine used for t1 seems to be transactional.
21606
# check transactions-7 success: 1
21607
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21609
SET @@session.sql_mode = 'traditional';
21610
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
21611
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21612
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
21613
'', '', 'was inserted' FROM t0_template
21614
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
21615
ERROR 22012: Division by 0
21618
# check transactions-8 success: 1
21619
# INFO: Storage engine used for t1 seems to be able to revert
21620
# changes made by the failing statement.
21621
SET @@session.sql_mode = '';
21623
DELETE FROM t1 WHERE f_charbig = 'was inserted';
21625
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
21627
# check special-1 success: 1
21628
UPDATE t1 SET f_charbig = '';
21630
# check special-2 success: 1
21631
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
21632
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21633
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
21634
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21635
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21636
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21637
'just inserted' FROM t0_template
21638
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21639
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
21641
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21642
f_charbig = 'updated by trigger'
21643
WHERE f_int1 = new.f_int1;
21645
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21646
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21647
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21649
# check trigger-1 success: 1
21650
DROP TRIGGER trg_1;
21651
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21652
f_int2 = CAST(f_char1 AS SIGNED INT),
21653
f_charbig = 'just inserted'
21654
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21656
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21657
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21658
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21659
'just inserted' FROM t0_template
21660
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21661
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
21663
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21664
f_charbig = 'updated by trigger'
21665
WHERE f_int1 = new.f_int1;
21667
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21668
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
21669
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21671
# check trigger-2 success: 1
21672
DROP TRIGGER trg_1;
21673
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21674
f_int2 = CAST(f_char1 AS SIGNED INT),
21675
f_charbig = 'just inserted'
21676
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21678
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21679
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21680
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21681
'just inserted' FROM t0_template
21682
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21683
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21685
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21686
f_charbig = 'updated by trigger'
21687
WHERE f_int1 = new.f_int1;
21689
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21690
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21692
# check trigger-3 success: 1
21693
DROP TRIGGER trg_1;
21694
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21695
f_int2 = CAST(f_char1 AS SIGNED INT),
21696
f_charbig = 'just inserted'
21697
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21699
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21700
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21701
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21702
'just inserted' FROM t0_template
21703
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21704
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
21706
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21707
f_charbig = 'updated by trigger'
21708
WHERE f_int1 = - old.f_int1;
21710
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21711
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21713
# check trigger-4 success: 1
21714
DROP TRIGGER trg_1;
21715
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21716
f_int2 = CAST(f_char1 AS SIGNED INT),
21717
f_charbig = 'just inserted'
21718
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21720
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21721
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21722
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21723
'just inserted' FROM t0_template
21724
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21725
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21727
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21728
f_charbig = 'updated by trigger'
21729
WHERE f_int1 = new.f_int1;
21731
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21732
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21734
# check trigger-5 success: 1
21735
DROP TRIGGER trg_1;
21736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21737
f_int2 = CAST(f_char1 AS SIGNED INT),
21738
f_charbig = 'just inserted'
21739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21742
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21743
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21744
'just inserted' FROM t0_template
21745
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21746
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
21748
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21749
f_charbig = 'updated by trigger'
21750
WHERE f_int1 = - old.f_int1;
21752
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
21753
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21755
# check trigger-6 success: 1
21756
DROP TRIGGER trg_1;
21757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21758
f_int2 = CAST(f_char1 AS SIGNED INT),
21759
f_charbig = 'just inserted'
21760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21765
'just inserted' FROM t0_template
21766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21767
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
21769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21770
f_charbig = 'updated by trigger'
21771
WHERE f_int1 = - old.f_int1;
21774
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21776
# check trigger-7 success: 1
21777
DROP TRIGGER trg_1;
21778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21779
f_int2 = CAST(f_char1 AS SIGNED INT),
21780
f_charbig = 'just inserted'
21781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21783
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
21785
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
21786
'just inserted' FROM t0_template
21787
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21788
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
21790
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
21791
f_charbig = 'updated by trigger'
21792
WHERE f_int1 = - old.f_int1;
21795
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
21797
# check trigger-8 success: 1
21798
DROP TRIGGER trg_1;
21799
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21800
f_int2 = CAST(f_char1 AS SIGNED INT),
21801
f_charbig = 'just inserted'
21802
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
21804
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21806
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
21807
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21809
SET new.f_int1 = old.f_int1 + @max_row,
21810
new.f_int2 = old.f_int2 - @max_row,
21811
new.f_charbig = '####updated per update trigger####';
21814
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21815
f_charbig = '####updated per update statement itself####';
21817
# check trigger-9 success: 1
21818
DROP TRIGGER trg_2;
21819
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21820
f_int2 = CAST(f_char1 AS SIGNED INT),
21821
f_charbig = CONCAT('===',f_char1,'===');
21822
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
21824
SET new.f_int1 = new.f_int1 + @max_row,
21825
new.f_int2 = new.f_int2 - @max_row,
21826
new.f_charbig = '####updated per update trigger####';
21829
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
21830
f_charbig = '####updated per update statement itself####';
21832
# check trigger-10 success: 1
21833
DROP TRIGGER trg_2;
21834
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
21835
f_int2 = CAST(f_char1 AS SIGNED INT),
21836
f_charbig = CONCAT('===',f_char1,'===');
21837
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21839
SET new.f_int1 = @my_max1 + @counter,
21840
new.f_int2 = @my_min2 - @counter,
21841
new.f_charbig = '####updated per insert trigger####';
21842
SET @counter = @counter + 1;
21845
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21846
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21847
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21848
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21849
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21851
DROP TRIGGER trg_3;
21853
# check trigger-11 success: 1
21855
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21856
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21857
AND f_charbig = '####updated per insert trigger####';
21858
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
21860
SET new.f_int1 = @my_max1 + @counter,
21861
new.f_int2 = @my_min2 - @counter,
21862
new.f_charbig = '####updated per insert trigger####';
21863
SET @counter = @counter + 1;
21866
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
21867
INSERT INTO t1 (f_char1, f_char2, f_charbig)
21868
SELECT CAST(f_int1 AS CHAR),
21869
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
21870
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
21872
DROP TRIGGER trg_3;
21874
# check trigger-12 success: 1
21876
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
21877
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
21878
AND f_charbig = '####updated per insert trigger####';
21880
Table Op Msg_type Msg_text
21881
test.t1 analyze status OK
21882
CHECK TABLE t1 EXTENDED;
21883
Table Op Msg_type Msg_text
21884
test.t1 check status OK
21885
CHECKSUM TABLE t1 EXTENDED;
21887
test.t1 <some_value>
21889
Table Op Msg_type Msg_text
21890
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
21891
test.t1 optimize status OK
21892
# check layout success: 1
21893
REPAIR TABLE t1 EXTENDED;
21894
Table Op Msg_type Msg_text
21895
test.t1 repair note The storage engine for the table doesn't support repair
21896
# check layout success: 1
21899
# check TRUNCATE success: 1
21900
# check layout success: 1
21901
# End usability test (inc/partition_check.inc)
21903
DROP TABLE IF EXISTS t1;
21909
f_charbig VARCHAR(1000)
21910
, UNIQUE INDEX uidx1 (f_int2,f_int1)
21912
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
21913
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21914
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21915
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
21916
ALTER TABLE t1 DROP INDEX uidx1;
21917
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
21918
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
21919
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
21920
# Start usability test (inc/partition_check.inc)
21922
SHOW CREATE TABLE t1;
21924
t1 CREATE TABLE `t1` (
21925
`f_int1` int(11) DEFAULT NULL,
21926
`f_int2` int(11) DEFAULT NULL,
21927
`f_char1` char(20) DEFAULT NULL,
21928
`f_char2` char(20) DEFAULT NULL,
21929
`f_charbig` varchar(1000) DEFAULT NULL
21930
) ENGINE=InnoDB DEFAULT CHARSET=latin1
21931
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
21934
# check prerequisites-1 success: 1
21935
# check COUNT(*) success: 1
21936
# check MIN/MAX(f_int1) success: 1
21937
# check MIN/MAX(f_int2) success: 1
21938
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
21939
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
21940
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
21941
WHERE f_int1 IN (2,3);
21942
# check prerequisites-3 success: 1
21943
DELETE FROM t1 WHERE f_charbig = 'delete me';
21944
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
21945
# check read via f_int1 success: 1
21946
# check read via f_int2 success: 1
21948
# check multiple-1 success: 1
21949
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
21951
# check multiple-2 success: 1
21952
INSERT INTO t1 SELECT * FROM t0_template
21953
WHERE MOD(f_int1,3) = 0;
21955
# check multiple-3 success: 1
21956
UPDATE t1 SET f_int1 = f_int1 + @max_row
21957
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
21958
AND @max_row_div2 + @max_row_div4;
21960
# check multiple-4 success: 1
21962
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
21963
AND @max_row_div2 + @max_row_div4 + @max_row;
21965
# check multiple-5 success: 1
21966
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
21968
SET f_int1 = @cur_value , f_int2 = @cur_value,
21969
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21970
f_charbig = '#SINGLE#';
21972
# check single-1 success: 1
21973
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
21975
SET f_int1 = @cur_value , f_int2 = @cur_value,
21976
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
21977
f_charbig = '#SINGLE#';
21979
# check single-2 success: 1
21980
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
21981
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
21982
UPDATE t1 SET f_int1 = @cur_value2
21983
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
21985
# check single-3 success: 1
21986
SET @cur_value1= -1;
21987
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
21988
UPDATE t1 SET f_int1 = @cur_value1
21989
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
21991
# check single-4 success: 1
21992
SELECT MAX(f_int1) INTO @cur_value FROM t1;
21993
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
21995
# check single-5 success: 1
21996
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
21998
# check single-6 success: 1
21999
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22001
# check single-7 success: 1
22002
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22003
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22004
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22005
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22006
f_charbig = '#NULL#';
22008
SET f_int1 = NULL , f_int2 = -@max_row,
22009
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22010
f_charbig = '#NULL#';
22011
# check null success: 1
22013
# check null-1 success: 1
22014
UPDATE t1 SET f_int1 = -@max_row
22015
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22016
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22018
# check null-2 success: 1
22019
UPDATE t1 SET f_int1 = NULL
22020
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22021
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22023
# check null-3 success: 1
22025
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22026
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22028
# check null-4 success: 1
22030
WHERE f_int1 = 0 AND f_int2 = 0
22031
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22032
AND f_charbig = '#NULL#';
22034
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22035
SELECT f_int1, f_int1, '', '', 'was inserted'
22036
FROM t0_template source_tab
22037
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22039
# check transactions-1 success: 1
22042
# check transactions-2 success: 1
22045
# check transactions-3 success: 1
22046
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22050
# check transactions-4 success: 1
22051
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22052
SELECT f_int1, f_int1, '', '', 'was inserted'
22053
FROM t0_template source_tab
22054
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22056
# check transactions-5 success: 1
22059
# check transactions-6 success: 1
22060
# INFO: Storage engine used for t1 seems to be transactional.
22063
# check transactions-7 success: 1
22064
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22066
SET @@session.sql_mode = 'traditional';
22067
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22068
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22069
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22070
'', '', 'was inserted' FROM t0_template
22071
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22072
ERROR 22012: Division by 0
22075
# check transactions-8 success: 1
22076
# INFO: Storage engine used for t1 seems to be able to revert
22077
# changes made by the failing statement.
22078
SET @@session.sql_mode = '';
22080
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22082
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22084
# check special-1 success: 1
22085
UPDATE t1 SET f_charbig = '';
22087
# check special-2 success: 1
22088
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22089
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22090
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22091
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22092
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22093
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22094
'just inserted' FROM t0_template
22095
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22096
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22098
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22099
f_charbig = 'updated by trigger'
22100
WHERE f_int1 = new.f_int1;
22102
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22103
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22104
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22106
# check trigger-1 success: 1
22107
DROP TRIGGER trg_1;
22108
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22109
f_int2 = CAST(f_char1 AS SIGNED INT),
22110
f_charbig = 'just inserted'
22111
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22113
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22114
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22115
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22116
'just inserted' FROM t0_template
22117
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22118
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22120
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22121
f_charbig = 'updated by trigger'
22122
WHERE f_int1 = new.f_int1;
22124
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22125
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22126
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22128
# check trigger-2 success: 1
22129
DROP TRIGGER trg_1;
22130
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22131
f_int2 = CAST(f_char1 AS SIGNED INT),
22132
f_charbig = 'just inserted'
22133
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22135
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22136
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22137
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22138
'just inserted' FROM t0_template
22139
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22140
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22142
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22143
f_charbig = 'updated by trigger'
22144
WHERE f_int1 = new.f_int1;
22146
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22147
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22149
# check trigger-3 success: 1
22150
DROP TRIGGER trg_1;
22151
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22152
f_int2 = CAST(f_char1 AS SIGNED INT),
22153
f_charbig = 'just inserted'
22154
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22156
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22157
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22158
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22159
'just inserted' FROM t0_template
22160
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22161
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22163
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22164
f_charbig = 'updated by trigger'
22165
WHERE f_int1 = - old.f_int1;
22167
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22168
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22170
# check trigger-4 success: 1
22171
DROP TRIGGER trg_1;
22172
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22173
f_int2 = CAST(f_char1 AS SIGNED INT),
22174
f_charbig = 'just inserted'
22175
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22177
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22178
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22179
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22180
'just inserted' FROM t0_template
22181
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22182
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22184
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22185
f_charbig = 'updated by trigger'
22186
WHERE f_int1 = new.f_int1;
22188
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22189
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22191
# check trigger-5 success: 1
22192
DROP TRIGGER trg_1;
22193
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22194
f_int2 = CAST(f_char1 AS SIGNED INT),
22195
f_charbig = 'just inserted'
22196
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22198
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22199
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22200
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22201
'just inserted' FROM t0_template
22202
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22203
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22205
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22206
f_charbig = 'updated by trigger'
22207
WHERE f_int1 = - old.f_int1;
22209
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22210
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22212
# check trigger-6 success: 1
22213
DROP TRIGGER trg_1;
22214
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22215
f_int2 = CAST(f_char1 AS SIGNED INT),
22216
f_charbig = 'just inserted'
22217
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22219
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22220
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22221
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22222
'just inserted' FROM t0_template
22223
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22224
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22226
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22227
f_charbig = 'updated by trigger'
22228
WHERE f_int1 = - old.f_int1;
22231
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22233
# check trigger-7 success: 1
22234
DROP TRIGGER trg_1;
22235
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22236
f_int2 = CAST(f_char1 AS SIGNED INT),
22237
f_charbig = 'just inserted'
22238
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22240
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22241
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22242
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22243
'just inserted' FROM t0_template
22244
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22245
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22247
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22248
f_charbig = 'updated by trigger'
22249
WHERE f_int1 = - old.f_int1;
22252
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22254
# check trigger-8 success: 1
22255
DROP TRIGGER trg_1;
22256
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22257
f_int2 = CAST(f_char1 AS SIGNED INT),
22258
f_charbig = 'just inserted'
22259
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22261
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22263
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22264
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22266
SET new.f_int1 = old.f_int1 + @max_row,
22267
new.f_int2 = old.f_int2 - @max_row,
22268
new.f_charbig = '####updated per update trigger####';
22271
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22272
f_charbig = '####updated per update statement itself####';
22274
# check trigger-9 success: 1
22275
DROP TRIGGER trg_2;
22276
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22277
f_int2 = CAST(f_char1 AS SIGNED INT),
22278
f_charbig = CONCAT('===',f_char1,'===');
22279
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22281
SET new.f_int1 = new.f_int1 + @max_row,
22282
new.f_int2 = new.f_int2 - @max_row,
22283
new.f_charbig = '####updated per update trigger####';
22286
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22287
f_charbig = '####updated per update statement itself####';
22289
# check trigger-10 success: 1
22290
DROP TRIGGER trg_2;
22291
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22292
f_int2 = CAST(f_char1 AS SIGNED INT),
22293
f_charbig = CONCAT('===',f_char1,'===');
22294
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22296
SET new.f_int1 = @my_max1 + @counter,
22297
new.f_int2 = @my_min2 - @counter,
22298
new.f_charbig = '####updated per insert trigger####';
22299
SET @counter = @counter + 1;
22302
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22303
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22304
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22305
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22306
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22308
DROP TRIGGER trg_3;
22310
# check trigger-11 success: 1
22312
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22313
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22314
AND f_charbig = '####updated per insert trigger####';
22315
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22317
SET new.f_int1 = @my_max1 + @counter,
22318
new.f_int2 = @my_min2 - @counter,
22319
new.f_charbig = '####updated per insert trigger####';
22320
SET @counter = @counter + 1;
22323
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22324
INSERT INTO t1 (f_char1, f_char2, f_charbig)
22325
SELECT CAST(f_int1 AS CHAR),
22326
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22327
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22329
DROP TRIGGER trg_3;
22331
# check trigger-12 success: 1
22333
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22334
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22335
AND f_charbig = '####updated per insert trigger####';
22337
Table Op Msg_type Msg_text
22338
test.t1 analyze status OK
22339
CHECK TABLE t1 EXTENDED;
22340
Table Op Msg_type Msg_text
22341
test.t1 check status OK
22342
CHECKSUM TABLE t1 EXTENDED;
22344
test.t1 <some_value>
22346
Table Op Msg_type Msg_text
22347
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
22348
test.t1 optimize status OK
22349
# check layout success: 1
22350
REPAIR TABLE t1 EXTENDED;
22351
Table Op Msg_type Msg_text
22352
test.t1 repair note The storage engine for the table doesn't support repair
22353
# check layout success: 1
22356
# check TRUNCATE success: 1
22357
# check layout success: 1
22358
# End usability test (inc/partition_check.inc)
22365
f_charbig VARCHAR(1000)
22366
, UNIQUE INDEX uidx1 (f_int2,f_int1)
22368
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
22369
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22370
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22371
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22372
ALTER TABLE t1 DROP INDEX uidx1;
22373
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22374
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22375
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22376
# Start usability test (inc/partition_check.inc)
22378
SHOW CREATE TABLE t1;
22380
t1 CREATE TABLE `t1` (
22381
`f_int1` int(11) DEFAULT NULL,
22382
`f_int2` int(11) DEFAULT NULL,
22383
`f_char1` char(20) DEFAULT NULL,
22384
`f_char2` char(20) DEFAULT NULL,
22385
`f_charbig` varchar(1000) DEFAULT NULL
22386
) ENGINE=InnoDB DEFAULT CHARSET=latin1
22387
/*!50100 PARTITION BY KEY (f_int1,f_int2)
22390
# check prerequisites-1 success: 1
22391
# check COUNT(*) success: 1
22392
# check MIN/MAX(f_int1) success: 1
22393
# check MIN/MAX(f_int2) success: 1
22394
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22395
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22396
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22397
WHERE f_int1 IN (2,3);
22398
# check prerequisites-3 success: 1
22399
DELETE FROM t1 WHERE f_charbig = 'delete me';
22400
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
22401
# check read via f_int1 success: 1
22402
# check read via f_int2 success: 1
22404
# check multiple-1 success: 1
22405
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22407
# check multiple-2 success: 1
22408
INSERT INTO t1 SELECT * FROM t0_template
22409
WHERE MOD(f_int1,3) = 0;
22411
# check multiple-3 success: 1
22412
UPDATE t1 SET f_int1 = f_int1 + @max_row
22413
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22414
AND @max_row_div2 + @max_row_div4;
22416
# check multiple-4 success: 1
22418
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22419
AND @max_row_div2 + @max_row_div4 + @max_row;
22421
# check multiple-5 success: 1
22422
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22424
SET f_int1 = @cur_value , f_int2 = @cur_value,
22425
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22426
f_charbig = '#SINGLE#';
22428
# check single-1 success: 1
22429
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22431
SET f_int1 = @cur_value , f_int2 = @cur_value,
22432
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22433
f_charbig = '#SINGLE#';
22435
# check single-2 success: 1
22436
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22437
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22438
UPDATE t1 SET f_int1 = @cur_value2
22439
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22441
# check single-3 success: 1
22442
SET @cur_value1= -1;
22443
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22444
UPDATE t1 SET f_int1 = @cur_value1
22445
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22447
# check single-4 success: 1
22448
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22449
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22451
# check single-5 success: 1
22452
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22454
# check single-6 success: 1
22455
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22457
# check single-7 success: 1
22458
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22459
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22460
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22461
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22462
f_charbig = '#NULL#';
22464
SET f_int1 = NULL , f_int2 = -@max_row,
22465
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22466
f_charbig = '#NULL#';
22467
# check null success: 1
22469
# check null-1 success: 1
22470
UPDATE t1 SET f_int1 = -@max_row
22471
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22472
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22474
# check null-2 success: 1
22475
UPDATE t1 SET f_int1 = NULL
22476
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22477
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22479
# check null-3 success: 1
22481
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22482
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22484
# check null-4 success: 1
22486
WHERE f_int1 = 0 AND f_int2 = 0
22487
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22488
AND f_charbig = '#NULL#';
22490
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22491
SELECT f_int1, f_int1, '', '', 'was inserted'
22492
FROM t0_template source_tab
22493
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22495
# check transactions-1 success: 1
22498
# check transactions-2 success: 1
22501
# check transactions-3 success: 1
22502
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22506
# check transactions-4 success: 1
22507
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22508
SELECT f_int1, f_int1, '', '', 'was inserted'
22509
FROM t0_template source_tab
22510
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22512
# check transactions-5 success: 1
22515
# check transactions-6 success: 1
22516
# INFO: Storage engine used for t1 seems to be transactional.
22519
# check transactions-7 success: 1
22520
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22522
SET @@session.sql_mode = 'traditional';
22523
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22524
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22525
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22526
'', '', 'was inserted' FROM t0_template
22527
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22528
ERROR 22012: Division by 0
22531
# check transactions-8 success: 1
22532
# INFO: Storage engine used for t1 seems to be able to revert
22533
# changes made by the failing statement.
22534
SET @@session.sql_mode = '';
22536
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22538
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
22540
# check special-1 success: 1
22541
UPDATE t1 SET f_charbig = '';
22543
# check special-2 success: 1
22544
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
22545
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22546
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
22547
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22548
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22549
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22550
'just inserted' FROM t0_template
22551
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22552
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
22554
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22555
f_charbig = 'updated by trigger'
22556
WHERE f_int1 = new.f_int1;
22558
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22559
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22560
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22562
# check trigger-1 success: 1
22563
DROP TRIGGER trg_1;
22564
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22565
f_int2 = CAST(f_char1 AS SIGNED INT),
22566
f_charbig = 'just inserted'
22567
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22569
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22570
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22571
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22572
'just inserted' FROM t0_template
22573
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22574
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
22576
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22577
f_charbig = 'updated by trigger'
22578
WHERE f_int1 = new.f_int1;
22580
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22581
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
22582
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22584
# check trigger-2 success: 1
22585
DROP TRIGGER trg_1;
22586
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22587
f_int2 = CAST(f_char1 AS SIGNED INT),
22588
f_charbig = 'just inserted'
22589
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22591
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22592
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22593
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22594
'just inserted' FROM t0_template
22595
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22596
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22598
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22599
f_charbig = 'updated by trigger'
22600
WHERE f_int1 = new.f_int1;
22602
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22603
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22605
# check trigger-3 success: 1
22606
DROP TRIGGER trg_1;
22607
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22608
f_int2 = CAST(f_char1 AS SIGNED INT),
22609
f_charbig = 'just inserted'
22610
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22612
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22613
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22614
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22615
'just inserted' FROM t0_template
22616
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22617
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
22619
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22620
f_charbig = 'updated by trigger'
22621
WHERE f_int1 = - old.f_int1;
22623
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22624
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22626
# check trigger-4 success: 1
22627
DROP TRIGGER trg_1;
22628
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22629
f_int2 = CAST(f_char1 AS SIGNED INT),
22630
f_charbig = 'just inserted'
22631
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22633
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22634
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22635
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22636
'just inserted' FROM t0_template
22637
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22638
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22640
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22641
f_charbig = 'updated by trigger'
22642
WHERE f_int1 = new.f_int1;
22644
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22645
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22647
# check trigger-5 success: 1
22648
DROP TRIGGER trg_1;
22649
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22650
f_int2 = CAST(f_char1 AS SIGNED INT),
22651
f_charbig = 'just inserted'
22652
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22654
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22655
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22656
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22657
'just inserted' FROM t0_template
22658
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22659
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
22661
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22662
f_charbig = 'updated by trigger'
22663
WHERE f_int1 = - old.f_int1;
22665
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
22666
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22668
# check trigger-6 success: 1
22669
DROP TRIGGER trg_1;
22670
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22671
f_int2 = CAST(f_char1 AS SIGNED INT),
22672
f_charbig = 'just inserted'
22673
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22675
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22676
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22677
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22678
'just inserted' FROM t0_template
22679
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22680
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
22682
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22683
f_charbig = 'updated by trigger'
22684
WHERE f_int1 = - old.f_int1;
22687
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22689
# check trigger-7 success: 1
22690
DROP TRIGGER trg_1;
22691
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22692
f_int2 = CAST(f_char1 AS SIGNED INT),
22693
f_charbig = 'just inserted'
22694
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22696
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22697
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
22698
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
22699
'just inserted' FROM t0_template
22700
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22701
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
22703
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
22704
f_charbig = 'updated by trigger'
22705
WHERE f_int1 = - old.f_int1;
22708
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
22710
# check trigger-8 success: 1
22711
DROP TRIGGER trg_1;
22712
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22713
f_int2 = CAST(f_char1 AS SIGNED INT),
22714
f_charbig = 'just inserted'
22715
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
22717
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22719
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
22720
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22722
SET new.f_int1 = old.f_int1 + @max_row,
22723
new.f_int2 = old.f_int2 - @max_row,
22724
new.f_charbig = '####updated per update trigger####';
22727
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22728
f_charbig = '####updated per update statement itself####';
22730
# check trigger-9 success: 1
22731
DROP TRIGGER trg_2;
22732
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22733
f_int2 = CAST(f_char1 AS SIGNED INT),
22734
f_charbig = CONCAT('===',f_char1,'===');
22735
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
22737
SET new.f_int1 = new.f_int1 + @max_row,
22738
new.f_int2 = new.f_int2 - @max_row,
22739
new.f_charbig = '####updated per update trigger####';
22742
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
22743
f_charbig = '####updated per update statement itself####';
22745
# check trigger-10 success: 1
22746
DROP TRIGGER trg_2;
22747
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
22748
f_int2 = CAST(f_char1 AS SIGNED INT),
22749
f_charbig = CONCAT('===',f_char1,'===');
22750
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22752
SET new.f_int1 = @my_max1 + @counter,
22753
new.f_int2 = @my_min2 - @counter,
22754
new.f_charbig = '####updated per insert trigger####';
22755
SET @counter = @counter + 1;
22758
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22759
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22760
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22761
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22762
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22764
DROP TRIGGER trg_3;
22766
# check trigger-11 success: 1
22768
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22769
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22770
AND f_charbig = '####updated per insert trigger####';
22771
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
22773
SET new.f_int1 = @my_max1 + @counter,
22774
new.f_int2 = @my_min2 - @counter,
22775
new.f_charbig = '####updated per insert trigger####';
22776
SET @counter = @counter + 1;
22779
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
22780
INSERT INTO t1 (f_char1, f_char2, f_charbig)
22781
SELECT CAST(f_int1 AS CHAR),
22782
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
22783
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
22785
DROP TRIGGER trg_3;
22787
# check trigger-12 success: 1
22789
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
22790
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
22791
AND f_charbig = '####updated per insert trigger####';
22793
Table Op Msg_type Msg_text
22794
test.t1 analyze status OK
22795
CHECK TABLE t1 EXTENDED;
22796
Table Op Msg_type Msg_text
22797
test.t1 check status OK
22798
CHECKSUM TABLE t1 EXTENDED;
22800
test.t1 <some_value>
22802
Table Op Msg_type Msg_text
22803
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
22804
test.t1 optimize status OK
22805
# check layout success: 1
22806
REPAIR TABLE t1 EXTENDED;
22807
Table Op Msg_type Msg_text
22808
test.t1 repair note The storage engine for the table doesn't support repair
22809
# check layout success: 1
22812
# check TRUNCATE success: 1
22813
# check layout success: 1
22814
# End usability test (inc/partition_check.inc)
22821
f_charbig VARCHAR(1000)
22822
, UNIQUE INDEX uidx1 (f_int2,f_int1)
22824
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
22825
(PARTITION part_3 VALUES IN (-3),
22826
PARTITION part_2 VALUES IN (-2),
22827
PARTITION part_1 VALUES IN (-1),
22828
PARTITION part_N VALUES IN (NULL),
22829
PARTITION part0 VALUES IN (0),
22830
PARTITION part1 VALUES IN (1),
22831
PARTITION part2 VALUES IN (2),
22832
PARTITION part3 VALUES IN (3));
22833
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22834
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22835
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
22836
ALTER TABLE t1 DROP INDEX uidx1;
22837
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
22838
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
22839
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
22840
# Start usability test (inc/partition_check.inc)
22842
SHOW CREATE TABLE t1;
22844
t1 CREATE TABLE `t1` (
22845
`f_int1` int(11) DEFAULT NULL,
22846
`f_int2` int(11) DEFAULT NULL,
22847
`f_char1` char(20) DEFAULT NULL,
22848
`f_char2` char(20) DEFAULT NULL,
22849
`f_charbig` varchar(1000) DEFAULT NULL
22850
) ENGINE=InnoDB DEFAULT CHARSET=latin1
22851
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
22852
(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
22853
PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
22854
PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
22855
PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
22856
PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
22857
PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
22858
PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
22859
PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
22861
# check prerequisites-1 success: 1
22862
# check COUNT(*) success: 1
22863
# check MIN/MAX(f_int1) success: 1
22864
# check MIN/MAX(f_int2) success: 1
22865
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22866
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
22867
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
22868
WHERE f_int1 IN (2,3);
22869
# check prerequisites-3 success: 1
22870
DELETE FROM t1 WHERE f_charbig = 'delete me';
22871
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
22872
# check read via f_int1 success: 1
22873
# check read via f_int2 success: 1
22875
# check multiple-1 success: 1
22876
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
22878
# check multiple-2 success: 1
22879
INSERT INTO t1 SELECT * FROM t0_template
22880
WHERE MOD(f_int1,3) = 0;
22882
# check multiple-3 success: 1
22883
UPDATE t1 SET f_int1 = f_int1 + @max_row
22884
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
22885
AND @max_row_div2 + @max_row_div4;
22887
# check multiple-4 success: 1
22889
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
22890
AND @max_row_div2 + @max_row_div4 + @max_row;
22892
# check multiple-5 success: 1
22893
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
22895
SET f_int1 = @cur_value , f_int2 = @cur_value,
22896
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22897
f_charbig = '#SINGLE#';
22899
# check single-1 success: 1
22900
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
22902
SET f_int1 = @cur_value , f_int2 = @cur_value,
22903
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
22904
f_charbig = '#SINGLE#';
22906
# check single-2 success: 1
22907
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
22908
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
22909
UPDATE t1 SET f_int1 = @cur_value2
22910
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
22912
# check single-3 success: 1
22913
SET @cur_value1= -1;
22914
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
22915
UPDATE t1 SET f_int1 = @cur_value1
22916
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
22918
# check single-4 success: 1
22919
SELECT MAX(f_int1) INTO @cur_value FROM t1;
22920
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
22922
# check single-5 success: 1
22923
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
22925
# check single-6 success: 1
22926
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
22928
# check single-7 success: 1
22929
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
22930
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
22931
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
22932
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
22933
f_charbig = '#NULL#';
22935
SET f_int1 = NULL , f_int2 = -@max_row,
22936
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
22937
f_charbig = '#NULL#';
22938
# check null success: 1
22940
# check null-1 success: 1
22941
UPDATE t1 SET f_int1 = -@max_row
22942
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22943
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22945
# check null-2 success: 1
22946
UPDATE t1 SET f_int1 = NULL
22947
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22948
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22950
# check null-3 success: 1
22952
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
22953
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
22955
# check null-4 success: 1
22957
WHERE f_int1 = 0 AND f_int2 = 0
22958
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
22959
AND f_charbig = '#NULL#';
22961
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22962
SELECT f_int1, f_int1, '', '', 'was inserted'
22963
FROM t0_template source_tab
22964
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22966
# check transactions-1 success: 1
22969
# check transactions-2 success: 1
22972
# check transactions-3 success: 1
22973
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22977
# check transactions-4 success: 1
22978
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22979
SELECT f_int1, f_int1, '', '', 'was inserted'
22980
FROM t0_template source_tab
22981
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22983
# check transactions-5 success: 1
22986
# check transactions-6 success: 1
22987
# INFO: Storage engine used for t1 seems to be transactional.
22990
# check transactions-7 success: 1
22991
DELETE FROM t1 WHERE f_charbig = 'was inserted';
22993
SET @@session.sql_mode = 'traditional';
22994
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
22995
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
22996
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
22997
'', '', 'was inserted' FROM t0_template
22998
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
22999
ERROR 22012: Division by 0
23002
# check transactions-8 success: 1
23003
# INFO: Storage engine used for t1 seems to be able to revert
23004
# changes made by the failing statement.
23005
SET @@session.sql_mode = '';
23007
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23009
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23011
# check special-1 success: 1
23012
UPDATE t1 SET f_charbig = '';
23014
# check special-2 success: 1
23015
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23016
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23017
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23018
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23019
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23020
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23021
'just inserted' FROM t0_template
23022
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23023
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23025
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23026
f_charbig = 'updated by trigger'
23027
WHERE f_int1 = new.f_int1;
23029
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23030
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23031
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23033
# check trigger-1 success: 1
23034
DROP TRIGGER trg_1;
23035
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23036
f_int2 = CAST(f_char1 AS SIGNED INT),
23037
f_charbig = 'just inserted'
23038
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23040
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23041
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23042
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23043
'just inserted' FROM t0_template
23044
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23045
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23047
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23048
f_charbig = 'updated by trigger'
23049
WHERE f_int1 = new.f_int1;
23051
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23052
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23053
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23055
# check trigger-2 success: 1
23056
DROP TRIGGER trg_1;
23057
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23058
f_int2 = CAST(f_char1 AS SIGNED INT),
23059
f_charbig = 'just inserted'
23060
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23062
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23063
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23064
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23065
'just inserted' FROM t0_template
23066
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23067
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23069
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23070
f_charbig = 'updated by trigger'
23071
WHERE f_int1 = new.f_int1;
23073
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23074
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23076
# check trigger-3 success: 1
23077
DROP TRIGGER trg_1;
23078
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23079
f_int2 = CAST(f_char1 AS SIGNED INT),
23080
f_charbig = 'just inserted'
23081
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23083
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23084
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23085
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23086
'just inserted' FROM t0_template
23087
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23088
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23090
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23091
f_charbig = 'updated by trigger'
23092
WHERE f_int1 = - old.f_int1;
23094
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23095
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23097
# check trigger-4 success: 1
23098
DROP TRIGGER trg_1;
23099
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23100
f_int2 = CAST(f_char1 AS SIGNED INT),
23101
f_charbig = 'just inserted'
23102
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23104
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23105
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23106
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23107
'just inserted' FROM t0_template
23108
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23109
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23111
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23112
f_charbig = 'updated by trigger'
23113
WHERE f_int1 = new.f_int1;
23115
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23116
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23118
# check trigger-5 success: 1
23119
DROP TRIGGER trg_1;
23120
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23121
f_int2 = CAST(f_char1 AS SIGNED INT),
23122
f_charbig = 'just inserted'
23123
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23125
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23126
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23127
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23128
'just inserted' FROM t0_template
23129
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23130
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23132
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23133
f_charbig = 'updated by trigger'
23134
WHERE f_int1 = - old.f_int1;
23136
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23137
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23139
# check trigger-6 success: 1
23140
DROP TRIGGER trg_1;
23141
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23142
f_int2 = CAST(f_char1 AS SIGNED INT),
23143
f_charbig = 'just inserted'
23144
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23146
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23147
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23148
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23149
'just inserted' FROM t0_template
23150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23151
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23153
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23154
f_charbig = 'updated by trigger'
23155
WHERE f_int1 = - old.f_int1;
23158
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23160
# check trigger-7 success: 1
23161
DROP TRIGGER trg_1;
23162
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23163
f_int2 = CAST(f_char1 AS SIGNED INT),
23164
f_charbig = 'just inserted'
23165
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23167
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23168
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23169
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23170
'just inserted' FROM t0_template
23171
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23172
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23174
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23175
f_charbig = 'updated by trigger'
23176
WHERE f_int1 = - old.f_int1;
23179
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23181
# check trigger-8 success: 1
23182
DROP TRIGGER trg_1;
23183
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23184
f_int2 = CAST(f_char1 AS SIGNED INT),
23185
f_charbig = 'just inserted'
23186
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23188
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23190
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23191
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23193
SET new.f_int1 = old.f_int1 + @max_row,
23194
new.f_int2 = old.f_int2 - @max_row,
23195
new.f_charbig = '####updated per update trigger####';
23198
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23199
f_charbig = '####updated per update statement itself####';
23201
# check trigger-9 success: 1
23202
DROP TRIGGER trg_2;
23203
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23204
f_int2 = CAST(f_char1 AS SIGNED INT),
23205
f_charbig = CONCAT('===',f_char1,'===');
23206
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23208
SET new.f_int1 = new.f_int1 + @max_row,
23209
new.f_int2 = new.f_int2 - @max_row,
23210
new.f_charbig = '####updated per update trigger####';
23213
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23214
f_charbig = '####updated per update statement itself####';
23216
# check trigger-10 success: 1
23217
DROP TRIGGER trg_2;
23218
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23219
f_int2 = CAST(f_char1 AS SIGNED INT),
23220
f_charbig = CONCAT('===',f_char1,'===');
23221
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23223
SET new.f_int1 = @my_max1 + @counter,
23224
new.f_int2 = @my_min2 - @counter,
23225
new.f_charbig = '####updated per insert trigger####';
23226
SET @counter = @counter + 1;
23229
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23230
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23231
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23232
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23233
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23235
DROP TRIGGER trg_3;
23237
# check trigger-11 success: 1
23239
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23240
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23241
AND f_charbig = '####updated per insert trigger####';
23242
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23244
SET new.f_int1 = @my_max1 + @counter,
23245
new.f_int2 = @my_min2 - @counter,
23246
new.f_charbig = '####updated per insert trigger####';
23247
SET @counter = @counter + 1;
23250
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23251
INSERT INTO t1 (f_char1, f_char2, f_charbig)
23252
SELECT CAST(f_int1 AS CHAR),
23253
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23254
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23256
DROP TRIGGER trg_3;
23258
# check trigger-12 success: 1
23260
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23261
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23262
AND f_charbig = '####updated per insert trigger####';
23264
Table Op Msg_type Msg_text
23265
test.t1 analyze status OK
23266
CHECK TABLE t1 EXTENDED;
23267
Table Op Msg_type Msg_text
23268
test.t1 check status OK
23269
CHECKSUM TABLE t1 EXTENDED;
23271
test.t1 <some_value>
23273
Table Op Msg_type Msg_text
23274
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
23275
test.t1 optimize status OK
23276
# check layout success: 1
23277
REPAIR TABLE t1 EXTENDED;
23278
Table Op Msg_type Msg_text
23279
test.t1 repair note The storage engine for the table doesn't support repair
23280
# check layout success: 1
23283
# check TRUNCATE success: 1
23284
# check layout success: 1
23285
# End usability test (inc/partition_check.inc)
23292
f_charbig VARCHAR(1000)
23293
, UNIQUE INDEX uidx1 (f_int2,f_int1)
23295
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
23296
(PARTITION parta VALUES LESS THAN (0),
23297
PARTITION partb VALUES LESS THAN (5),
23298
PARTITION partc VALUES LESS THAN (10),
23299
PARTITION partd VALUES LESS THAN (10 + 5),
23300
PARTITION parte VALUES LESS THAN (20),
23301
PARTITION partf VALUES LESS THAN (2147483646));
23302
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23303
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23304
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23305
ALTER TABLE t1 DROP INDEX uidx1;
23306
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23307
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23308
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23309
# Start usability test (inc/partition_check.inc)
23311
SHOW CREATE TABLE t1;
23313
t1 CREATE TABLE `t1` (
23314
`f_int1` int(11) DEFAULT NULL,
23315
`f_int2` int(11) DEFAULT NULL,
23316
`f_char1` char(20) DEFAULT NULL,
23317
`f_char2` char(20) DEFAULT NULL,
23318
`f_charbig` varchar(1000) DEFAULT NULL
23319
) ENGINE=InnoDB DEFAULT CHARSET=latin1
23320
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
23321
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
23322
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
23323
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
23324
PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
23325
PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
23326
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
23328
# check prerequisites-1 success: 1
23329
# check COUNT(*) success: 1
23330
# check MIN/MAX(f_int1) success: 1
23331
# check MIN/MAX(f_int2) success: 1
23332
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23333
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23334
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23335
WHERE f_int1 IN (2,3);
23336
# check prerequisites-3 success: 1
23337
DELETE FROM t1 WHERE f_charbig = 'delete me';
23338
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23339
# check read via f_int1 success: 1
23340
# check read via f_int2 success: 1
23342
# check multiple-1 success: 1
23343
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23345
# check multiple-2 success: 1
23346
INSERT INTO t1 SELECT * FROM t0_template
23347
WHERE MOD(f_int1,3) = 0;
23349
# check multiple-3 success: 1
23350
UPDATE t1 SET f_int1 = f_int1 + @max_row
23351
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23352
AND @max_row_div2 + @max_row_div4;
23354
# check multiple-4 success: 1
23356
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23357
AND @max_row_div2 + @max_row_div4 + @max_row;
23359
# check multiple-5 success: 1
23360
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23362
SET f_int1 = @cur_value , f_int2 = @cur_value,
23363
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23364
f_charbig = '#SINGLE#';
23366
# check single-1 success: 1
23367
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23369
SET f_int1 = @cur_value , f_int2 = @cur_value,
23370
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23371
f_charbig = '#SINGLE#';
23373
# check single-2 success: 1
23374
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23375
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23376
UPDATE t1 SET f_int1 = @cur_value2
23377
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23379
# check single-3 success: 1
23380
SET @cur_value1= -1;
23381
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23382
UPDATE t1 SET f_int1 = @cur_value1
23383
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23385
# check single-4 success: 1
23386
SELECT MAX(f_int1) INTO @cur_value FROM t1;
23387
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23389
# check single-5 success: 1
23390
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23392
# check single-6 success: 1
23393
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23394
ERROR HY000: Table has no partition for value 2147483647
23395
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23396
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23397
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23398
f_charbig = '#NULL#';
23400
SET f_int1 = NULL , f_int2 = -@max_row,
23401
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23402
f_charbig = '#NULL#';
23403
# check null success: 1
23405
# check null-1 success: 1
23406
UPDATE t1 SET f_int1 = -@max_row
23407
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23408
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23410
# check null-2 success: 1
23411
UPDATE t1 SET f_int1 = NULL
23412
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23413
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23415
# check null-3 success: 1
23417
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23418
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23420
# check null-4 success: 1
23422
WHERE f_int1 = 0 AND f_int2 = 0
23423
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23424
AND f_charbig = '#NULL#';
23426
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23427
SELECT f_int1, f_int1, '', '', 'was inserted'
23428
FROM t0_template source_tab
23429
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23431
# check transactions-1 success: 1
23434
# check transactions-2 success: 1
23437
# check transactions-3 success: 1
23438
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23442
# check transactions-4 success: 1
23443
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23444
SELECT f_int1, f_int1, '', '', 'was inserted'
23445
FROM t0_template source_tab
23446
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23448
# check transactions-5 success: 1
23451
# check transactions-6 success: 1
23452
# INFO: Storage engine used for t1 seems to be transactional.
23455
# check transactions-7 success: 1
23456
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23458
SET @@session.sql_mode = 'traditional';
23459
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23460
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23461
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23462
'', '', 'was inserted' FROM t0_template
23463
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23464
ERROR 22012: Division by 0
23467
# check transactions-8 success: 1
23468
# INFO: Storage engine used for t1 seems to be able to revert
23469
# changes made by the failing statement.
23470
SET @@session.sql_mode = '';
23472
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23474
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23476
# check special-1 success: 1
23477
UPDATE t1 SET f_charbig = '';
23479
# check special-2 success: 1
23480
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23481
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23482
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23483
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23484
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23485
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23486
'just inserted' FROM t0_template
23487
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23488
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23490
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23491
f_charbig = 'updated by trigger'
23492
WHERE f_int1 = new.f_int1;
23494
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23495
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23496
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23498
# check trigger-1 success: 1
23499
DROP TRIGGER trg_1;
23500
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23501
f_int2 = CAST(f_char1 AS SIGNED INT),
23502
f_charbig = 'just inserted'
23503
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23505
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23506
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23507
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23508
'just inserted' FROM t0_template
23509
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23510
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23512
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23513
f_charbig = 'updated by trigger'
23514
WHERE f_int1 = new.f_int1;
23516
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23517
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23518
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23520
# check trigger-2 success: 1
23521
DROP TRIGGER trg_1;
23522
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23523
f_int2 = CAST(f_char1 AS SIGNED INT),
23524
f_charbig = 'just inserted'
23525
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23527
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23528
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23529
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23530
'just inserted' FROM t0_template
23531
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23532
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23534
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23535
f_charbig = 'updated by trigger'
23536
WHERE f_int1 = new.f_int1;
23538
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23539
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23541
# check trigger-3 success: 1
23542
DROP TRIGGER trg_1;
23543
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23544
f_int2 = CAST(f_char1 AS SIGNED INT),
23545
f_charbig = 'just inserted'
23546
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23548
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23549
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23550
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23551
'just inserted' FROM t0_template
23552
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23553
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23555
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23556
f_charbig = 'updated by trigger'
23557
WHERE f_int1 = - old.f_int1;
23559
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23560
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23562
# check trigger-4 success: 1
23563
DROP TRIGGER trg_1;
23564
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23565
f_int2 = CAST(f_char1 AS SIGNED INT),
23566
f_charbig = 'just inserted'
23567
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23569
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23570
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23571
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23572
'just inserted' FROM t0_template
23573
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23574
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23576
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23577
f_charbig = 'updated by trigger'
23578
WHERE f_int1 = new.f_int1;
23580
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23581
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23583
# check trigger-5 success: 1
23584
DROP TRIGGER trg_1;
23585
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23586
f_int2 = CAST(f_char1 AS SIGNED INT),
23587
f_charbig = 'just inserted'
23588
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23590
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23591
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23592
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23593
'just inserted' FROM t0_template
23594
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23595
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
23597
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23598
f_charbig = 'updated by trigger'
23599
WHERE f_int1 = - old.f_int1;
23601
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
23602
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23604
# check trigger-6 success: 1
23605
DROP TRIGGER trg_1;
23606
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23607
f_int2 = CAST(f_char1 AS SIGNED INT),
23608
f_charbig = 'just inserted'
23609
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23611
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23612
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23613
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23614
'just inserted' FROM t0_template
23615
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23616
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
23618
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23619
f_charbig = 'updated by trigger'
23620
WHERE f_int1 = - old.f_int1;
23623
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23625
# check trigger-7 success: 1
23626
DROP TRIGGER trg_1;
23627
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23628
f_int2 = CAST(f_char1 AS SIGNED INT),
23629
f_charbig = 'just inserted'
23630
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23632
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23633
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23634
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23635
'just inserted' FROM t0_template
23636
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23637
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
23639
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23640
f_charbig = 'updated by trigger'
23641
WHERE f_int1 = - old.f_int1;
23644
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
23646
# check trigger-8 success: 1
23647
DROP TRIGGER trg_1;
23648
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23649
f_int2 = CAST(f_char1 AS SIGNED INT),
23650
f_charbig = 'just inserted'
23651
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23653
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23655
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23656
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23658
SET new.f_int1 = old.f_int1 + @max_row,
23659
new.f_int2 = old.f_int2 - @max_row,
23660
new.f_charbig = '####updated per update trigger####';
23663
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23664
f_charbig = '####updated per update statement itself####';
23666
# check trigger-9 success: 1
23667
DROP TRIGGER trg_2;
23668
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23669
f_int2 = CAST(f_char1 AS SIGNED INT),
23670
f_charbig = CONCAT('===',f_char1,'===');
23671
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
23673
SET new.f_int1 = new.f_int1 + @max_row,
23674
new.f_int2 = new.f_int2 - @max_row,
23675
new.f_charbig = '####updated per update trigger####';
23678
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
23679
f_charbig = '####updated per update statement itself####';
23681
# check trigger-10 success: 1
23682
DROP TRIGGER trg_2;
23683
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23684
f_int2 = CAST(f_char1 AS SIGNED INT),
23685
f_charbig = CONCAT('===',f_char1,'===');
23686
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23688
SET new.f_int1 = @my_max1 + @counter,
23689
new.f_int2 = @my_min2 - @counter,
23690
new.f_charbig = '####updated per insert trigger####';
23691
SET @counter = @counter + 1;
23694
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23695
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23696
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23697
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23698
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23700
DROP TRIGGER trg_3;
23702
# check trigger-11 success: 1
23704
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23705
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23706
AND f_charbig = '####updated per insert trigger####';
23707
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
23709
SET new.f_int1 = @my_max1 + @counter,
23710
new.f_int2 = @my_min2 - @counter,
23711
new.f_charbig = '####updated per insert trigger####';
23712
SET @counter = @counter + 1;
23715
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
23716
INSERT INTO t1 (f_char1, f_char2, f_charbig)
23717
SELECT CAST(f_int1 AS CHAR),
23718
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
23719
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
23721
DROP TRIGGER trg_3;
23723
# check trigger-12 success: 1
23725
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
23726
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
23727
AND f_charbig = '####updated per insert trigger####';
23729
Table Op Msg_type Msg_text
23730
test.t1 analyze status OK
23731
CHECK TABLE t1 EXTENDED;
23732
Table Op Msg_type Msg_text
23733
test.t1 check status OK
23734
CHECKSUM TABLE t1 EXTENDED;
23736
test.t1 <some_value>
23738
Table Op Msg_type Msg_text
23739
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
23740
test.t1 optimize status OK
23741
# check layout success: 1
23742
REPAIR TABLE t1 EXTENDED;
23743
Table Op Msg_type Msg_text
23744
test.t1 repair note The storage engine for the table doesn't support repair
23745
# check layout success: 1
23748
# check TRUNCATE success: 1
23749
# check layout success: 1
23750
# End usability test (inc/partition_check.inc)
23757
f_charbig VARCHAR(1000)
23758
, UNIQUE INDEX uidx1 (f_int2,f_int1)
23760
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
23761
(PARTITION parta VALUES LESS THAN (0),
23762
PARTITION partb VALUES LESS THAN (5),
23763
PARTITION partc VALUES LESS THAN (10),
23764
PARTITION partd VALUES LESS THAN (2147483646));
23765
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23766
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23767
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
23768
ALTER TABLE t1 DROP INDEX uidx1;
23769
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23770
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
23771
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
23772
# Start usability test (inc/partition_check.inc)
23774
SHOW CREATE TABLE t1;
23776
t1 CREATE TABLE `t1` (
23777
`f_int1` int(11) DEFAULT NULL,
23778
`f_int2` int(11) DEFAULT NULL,
23779
`f_char1` char(20) DEFAULT NULL,
23780
`f_char2` char(20) DEFAULT NULL,
23781
`f_charbig` varchar(1000) DEFAULT NULL
23782
) ENGINE=InnoDB DEFAULT CHARSET=latin1
23783
/*!50100 PARTITION BY RANGE (f_int1)
23784
SUBPARTITION BY HASH (f_int2)
23786
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
23787
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
23788
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
23789
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
23791
# check prerequisites-1 success: 1
23792
# check COUNT(*) success: 1
23793
# check MIN/MAX(f_int1) success: 1
23794
# check MIN/MAX(f_int2) success: 1
23795
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23796
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
23797
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
23798
WHERE f_int1 IN (2,3);
23799
# check prerequisites-3 success: 1
23800
DELETE FROM t1 WHERE f_charbig = 'delete me';
23801
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
23802
# check read via f_int1 success: 1
23803
# check read via f_int2 success: 1
23805
# check multiple-1 success: 1
23806
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
23808
# check multiple-2 success: 1
23809
INSERT INTO t1 SELECT * FROM t0_template
23810
WHERE MOD(f_int1,3) = 0;
23812
# check multiple-3 success: 1
23813
UPDATE t1 SET f_int1 = f_int1 + @max_row
23814
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
23815
AND @max_row_div2 + @max_row_div4;
23817
# check multiple-4 success: 1
23819
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
23820
AND @max_row_div2 + @max_row_div4 + @max_row;
23822
# check multiple-5 success: 1
23823
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
23825
SET f_int1 = @cur_value , f_int2 = @cur_value,
23826
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23827
f_charbig = '#SINGLE#';
23829
# check single-1 success: 1
23830
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
23832
SET f_int1 = @cur_value , f_int2 = @cur_value,
23833
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
23834
f_charbig = '#SINGLE#';
23836
# check single-2 success: 1
23837
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
23838
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
23839
UPDATE t1 SET f_int1 = @cur_value2
23840
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
23842
# check single-3 success: 1
23843
SET @cur_value1= -1;
23844
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
23845
UPDATE t1 SET f_int1 = @cur_value1
23846
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
23848
# check single-4 success: 1
23849
SELECT MAX(f_int1) INTO @cur_value FROM t1;
23850
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
23852
# check single-5 success: 1
23853
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
23855
# check single-6 success: 1
23856
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
23857
ERROR HY000: Table has no partition for value 2147483647
23858
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
23859
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
23860
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
23861
f_charbig = '#NULL#';
23863
SET f_int1 = NULL , f_int2 = -@max_row,
23864
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
23865
f_charbig = '#NULL#';
23866
# check null success: 1
23868
# check null-1 success: 1
23869
UPDATE t1 SET f_int1 = -@max_row
23870
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23871
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23873
# check null-2 success: 1
23874
UPDATE t1 SET f_int1 = NULL
23875
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23876
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23878
# check null-3 success: 1
23880
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
23881
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
23883
# check null-4 success: 1
23885
WHERE f_int1 = 0 AND f_int2 = 0
23886
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
23887
AND f_charbig = '#NULL#';
23889
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23890
SELECT f_int1, f_int1, '', '', 'was inserted'
23891
FROM t0_template source_tab
23892
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23894
# check transactions-1 success: 1
23897
# check transactions-2 success: 1
23900
# check transactions-3 success: 1
23901
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23905
# check transactions-4 success: 1
23906
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23907
SELECT f_int1, f_int1, '', '', 'was inserted'
23908
FROM t0_template source_tab
23909
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23911
# check transactions-5 success: 1
23914
# check transactions-6 success: 1
23915
# INFO: Storage engine used for t1 seems to be transactional.
23918
# check transactions-7 success: 1
23919
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23921
SET @@session.sql_mode = 'traditional';
23922
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
23923
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
23924
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
23925
'', '', 'was inserted' FROM t0_template
23926
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
23927
ERROR 22012: Division by 0
23930
# check transactions-8 success: 1
23931
# INFO: Storage engine used for t1 seems to be able to revert
23932
# changes made by the failing statement.
23933
SET @@session.sql_mode = '';
23935
DELETE FROM t1 WHERE f_charbig = 'was inserted';
23937
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
23939
# check special-1 success: 1
23940
UPDATE t1 SET f_charbig = '';
23942
# check special-2 success: 1
23943
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
23944
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
23945
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
23946
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23947
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23948
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23949
'just inserted' FROM t0_template
23950
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23951
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
23953
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23954
f_charbig = 'updated by trigger'
23955
WHERE f_int1 = new.f_int1;
23957
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23958
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23959
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23961
# check trigger-1 success: 1
23962
DROP TRIGGER trg_1;
23963
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23964
f_int2 = CAST(f_char1 AS SIGNED INT),
23965
f_charbig = 'just inserted'
23966
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23968
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23969
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23970
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23971
'just inserted' FROM t0_template
23972
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23973
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
23975
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23976
f_charbig = 'updated by trigger'
23977
WHERE f_int1 = new.f_int1;
23979
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23980
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
23981
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23983
# check trigger-2 success: 1
23984
DROP TRIGGER trg_1;
23985
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
23986
f_int2 = CAST(f_char1 AS SIGNED INT),
23987
f_charbig = 'just inserted'
23988
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
23990
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23991
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
23992
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
23993
'just inserted' FROM t0_template
23994
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
23995
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
23997
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
23998
f_charbig = 'updated by trigger'
23999
WHERE f_int1 = new.f_int1;
24001
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24002
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24004
# check trigger-3 success: 1
24005
DROP TRIGGER trg_1;
24006
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24007
f_int2 = CAST(f_char1 AS SIGNED INT),
24008
f_charbig = 'just inserted'
24009
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24011
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24012
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24013
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24014
'just inserted' FROM t0_template
24015
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24016
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24018
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24019
f_charbig = 'updated by trigger'
24020
WHERE f_int1 = - old.f_int1;
24022
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24023
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24025
# check trigger-4 success: 1
24026
DROP TRIGGER trg_1;
24027
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24028
f_int2 = CAST(f_char1 AS SIGNED INT),
24029
f_charbig = 'just inserted'
24030
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24032
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24033
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24034
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24035
'just inserted' FROM t0_template
24036
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24037
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24039
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24040
f_charbig = 'updated by trigger'
24041
WHERE f_int1 = new.f_int1;
24043
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24044
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24046
# check trigger-5 success: 1
24047
DROP TRIGGER trg_1;
24048
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24049
f_int2 = CAST(f_char1 AS SIGNED INT),
24050
f_charbig = 'just inserted'
24051
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24053
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24054
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24055
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24056
'just inserted' FROM t0_template
24057
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24058
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24060
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24061
f_charbig = 'updated by trigger'
24062
WHERE f_int1 = - old.f_int1;
24064
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24065
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24067
# check trigger-6 success: 1
24068
DROP TRIGGER trg_1;
24069
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24070
f_int2 = CAST(f_char1 AS SIGNED INT),
24071
f_charbig = 'just inserted'
24072
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24074
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24075
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24076
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24077
'just inserted' FROM t0_template
24078
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24079
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24081
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24082
f_charbig = 'updated by trigger'
24083
WHERE f_int1 = - old.f_int1;
24086
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24088
# check trigger-7 success: 1
24089
DROP TRIGGER trg_1;
24090
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24091
f_int2 = CAST(f_char1 AS SIGNED INT),
24092
f_charbig = 'just inserted'
24093
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24095
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24096
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24097
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24098
'just inserted' FROM t0_template
24099
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24100
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24102
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24103
f_charbig = 'updated by trigger'
24104
WHERE f_int1 = - old.f_int1;
24107
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24109
# check trigger-8 success: 1
24110
DROP TRIGGER trg_1;
24111
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24112
f_int2 = CAST(f_char1 AS SIGNED INT),
24113
f_charbig = 'just inserted'
24114
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24116
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24118
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24119
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24121
SET new.f_int1 = old.f_int1 + @max_row,
24122
new.f_int2 = old.f_int2 - @max_row,
24123
new.f_charbig = '####updated per update trigger####';
24126
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24127
f_charbig = '####updated per update statement itself####';
24129
# check trigger-9 success: 1
24130
DROP TRIGGER trg_2;
24131
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24132
f_int2 = CAST(f_char1 AS SIGNED INT),
24133
f_charbig = CONCAT('===',f_char1,'===');
24134
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24136
SET new.f_int1 = new.f_int1 + @max_row,
24137
new.f_int2 = new.f_int2 - @max_row,
24138
new.f_charbig = '####updated per update trigger####';
24141
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24142
f_charbig = '####updated per update statement itself####';
24144
# check trigger-10 success: 1
24145
DROP TRIGGER trg_2;
24146
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24147
f_int2 = CAST(f_char1 AS SIGNED INT),
24148
f_charbig = CONCAT('===',f_char1,'===');
24149
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24151
SET new.f_int1 = @my_max1 + @counter,
24152
new.f_int2 = @my_min2 - @counter,
24153
new.f_charbig = '####updated per insert trigger####';
24154
SET @counter = @counter + 1;
24157
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24158
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24159
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24160
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24161
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24163
DROP TRIGGER trg_3;
24165
# check trigger-11 success: 1
24167
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24168
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24169
AND f_charbig = '####updated per insert trigger####';
24170
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24172
SET new.f_int1 = @my_max1 + @counter,
24173
new.f_int2 = @my_min2 - @counter,
24174
new.f_charbig = '####updated per insert trigger####';
24175
SET @counter = @counter + 1;
24178
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24179
INSERT INTO t1 (f_char1, f_char2, f_charbig)
24180
SELECT CAST(f_int1 AS CHAR),
24181
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24182
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24184
DROP TRIGGER trg_3;
24186
# check trigger-12 success: 1
24188
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24189
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24190
AND f_charbig = '####updated per insert trigger####';
24192
Table Op Msg_type Msg_text
24193
test.t1 analyze status OK
24194
CHECK TABLE t1 EXTENDED;
24195
Table Op Msg_type Msg_text
24196
test.t1 check status OK
24197
CHECKSUM TABLE t1 EXTENDED;
24199
test.t1 <some_value>
24201
Table Op Msg_type Msg_text
24202
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
24203
test.t1 optimize status OK
24204
# check layout success: 1
24205
REPAIR TABLE t1 EXTENDED;
24206
Table Op Msg_type Msg_text
24207
test.t1 repair note The storage engine for the table doesn't support repair
24208
# check layout success: 1
24211
# check TRUNCATE success: 1
24212
# check layout success: 1
24213
# End usability test (inc/partition_check.inc)
24220
f_charbig VARCHAR(1000)
24221
, UNIQUE INDEX uidx1 (f_int2,f_int1)
24223
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
24224
(PARTITION part1 VALUES LESS THAN (0)
24225
(SUBPARTITION subpart11, SUBPARTITION subpart12),
24226
PARTITION part2 VALUES LESS THAN (5)
24227
(SUBPARTITION subpart21, SUBPARTITION subpart22),
24228
PARTITION part3 VALUES LESS THAN (10)
24229
(SUBPARTITION subpart31, SUBPARTITION subpart32),
24230
PARTITION part4 VALUES LESS THAN (2147483646)
24231
(SUBPARTITION subpart41, SUBPARTITION subpart42));
24232
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24233
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24234
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24235
ALTER TABLE t1 DROP INDEX uidx1;
24236
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24237
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24238
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24239
# Start usability test (inc/partition_check.inc)
24241
SHOW CREATE TABLE t1;
24243
t1 CREATE TABLE `t1` (
24244
`f_int1` int(11) DEFAULT NULL,
24245
`f_int2` int(11) DEFAULT NULL,
24246
`f_char1` char(20) DEFAULT NULL,
24247
`f_char2` char(20) DEFAULT NULL,
24248
`f_charbig` varchar(1000) DEFAULT NULL
24249
) ENGINE=InnoDB DEFAULT CHARSET=latin1
24250
/*!50100 PARTITION BY RANGE (f_int1)
24251
SUBPARTITION BY KEY (f_int2)
24252
(PARTITION part1 VALUES LESS THAN (0)
24253
(SUBPARTITION subpart11 ENGINE = InnoDB,
24254
SUBPARTITION subpart12 ENGINE = InnoDB),
24255
PARTITION part2 VALUES LESS THAN (5)
24256
(SUBPARTITION subpart21 ENGINE = InnoDB,
24257
SUBPARTITION subpart22 ENGINE = InnoDB),
24258
PARTITION part3 VALUES LESS THAN (10)
24259
(SUBPARTITION subpart31 ENGINE = InnoDB,
24260
SUBPARTITION subpart32 ENGINE = InnoDB),
24261
PARTITION part4 VALUES LESS THAN (2147483646)
24262
(SUBPARTITION subpart41 ENGINE = InnoDB,
24263
SUBPARTITION subpart42 ENGINE = InnoDB)) */
24265
# check prerequisites-1 success: 1
24266
# check COUNT(*) success: 1
24267
# check MIN/MAX(f_int1) success: 1
24268
# check MIN/MAX(f_int2) success: 1
24269
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24270
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24271
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24272
WHERE f_int1 IN (2,3);
24273
# check prerequisites-3 success: 1
24274
DELETE FROM t1 WHERE f_charbig = 'delete me';
24275
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
24276
# check read via f_int1 success: 1
24277
# check read via f_int2 success: 1
24279
# check multiple-1 success: 1
24280
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24282
# check multiple-2 success: 1
24283
INSERT INTO t1 SELECT * FROM t0_template
24284
WHERE MOD(f_int1,3) = 0;
24286
# check multiple-3 success: 1
24287
UPDATE t1 SET f_int1 = f_int1 + @max_row
24288
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24289
AND @max_row_div2 + @max_row_div4;
24291
# check multiple-4 success: 1
24293
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24294
AND @max_row_div2 + @max_row_div4 + @max_row;
24296
# check multiple-5 success: 1
24297
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24299
SET f_int1 = @cur_value , f_int2 = @cur_value,
24300
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24301
f_charbig = '#SINGLE#';
24303
# check single-1 success: 1
24304
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24306
SET f_int1 = @cur_value , f_int2 = @cur_value,
24307
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24308
f_charbig = '#SINGLE#';
24310
# check single-2 success: 1
24311
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24312
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24313
UPDATE t1 SET f_int1 = @cur_value2
24314
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24316
# check single-3 success: 1
24317
SET @cur_value1= -1;
24318
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24319
UPDATE t1 SET f_int1 = @cur_value1
24320
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24322
# check single-4 success: 1
24323
SELECT MAX(f_int1) INTO @cur_value FROM t1;
24324
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24326
# check single-5 success: 1
24327
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24329
# check single-6 success: 1
24330
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24331
ERROR HY000: Table has no partition for value 2147483647
24332
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24333
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24334
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24335
f_charbig = '#NULL#';
24337
SET f_int1 = NULL , f_int2 = -@max_row,
24338
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24339
f_charbig = '#NULL#';
24340
# check null success: 1
24342
# check null-1 success: 1
24343
UPDATE t1 SET f_int1 = -@max_row
24344
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24345
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24347
# check null-2 success: 1
24348
UPDATE t1 SET f_int1 = NULL
24349
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24350
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24352
# check null-3 success: 1
24354
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24355
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24357
# check null-4 success: 1
24359
WHERE f_int1 = 0 AND f_int2 = 0
24360
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24361
AND f_charbig = '#NULL#';
24363
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24364
SELECT f_int1, f_int1, '', '', 'was inserted'
24365
FROM t0_template source_tab
24366
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24368
# check transactions-1 success: 1
24371
# check transactions-2 success: 1
24374
# check transactions-3 success: 1
24375
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24379
# check transactions-4 success: 1
24380
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24381
SELECT f_int1, f_int1, '', '', 'was inserted'
24382
FROM t0_template source_tab
24383
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24385
# check transactions-5 success: 1
24388
# check transactions-6 success: 1
24389
# INFO: Storage engine used for t1 seems to be transactional.
24392
# check transactions-7 success: 1
24393
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24395
SET @@session.sql_mode = 'traditional';
24396
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24397
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24398
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24399
'', '', 'was inserted' FROM t0_template
24400
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24401
ERROR 22012: Division by 0
24404
# check transactions-8 success: 1
24405
# INFO: Storage engine used for t1 seems to be able to revert
24406
# changes made by the failing statement.
24407
SET @@session.sql_mode = '';
24409
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24411
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24413
# check special-1 success: 1
24414
UPDATE t1 SET f_charbig = '';
24416
# check special-2 success: 1
24417
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24418
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24419
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24420
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24421
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24422
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24423
'just inserted' FROM t0_template
24424
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24425
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24427
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24428
f_charbig = 'updated by trigger'
24429
WHERE f_int1 = new.f_int1;
24431
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24432
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24433
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24435
# check trigger-1 success: 1
24436
DROP TRIGGER trg_1;
24437
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24438
f_int2 = CAST(f_char1 AS SIGNED INT),
24439
f_charbig = 'just inserted'
24440
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24442
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24443
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24444
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24445
'just inserted' FROM t0_template
24446
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24447
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24449
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24450
f_charbig = 'updated by trigger'
24451
WHERE f_int1 = new.f_int1;
24453
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24454
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24455
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24457
# check trigger-2 success: 1
24458
DROP TRIGGER trg_1;
24459
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24460
f_int2 = CAST(f_char1 AS SIGNED INT),
24461
f_charbig = 'just inserted'
24462
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24464
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24465
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24466
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24467
'just inserted' FROM t0_template
24468
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24469
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24471
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24472
f_charbig = 'updated by trigger'
24473
WHERE f_int1 = new.f_int1;
24475
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24476
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24478
# check trigger-3 success: 1
24479
DROP TRIGGER trg_1;
24480
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24481
f_int2 = CAST(f_char1 AS SIGNED INT),
24482
f_charbig = 'just inserted'
24483
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24485
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24486
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24487
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24488
'just inserted' FROM t0_template
24489
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24490
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24492
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24493
f_charbig = 'updated by trigger'
24494
WHERE f_int1 = - old.f_int1;
24496
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24497
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24499
# check trigger-4 success: 1
24500
DROP TRIGGER trg_1;
24501
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24502
f_int2 = CAST(f_char1 AS SIGNED INT),
24503
f_charbig = 'just inserted'
24504
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24506
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24507
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24508
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24509
'just inserted' FROM t0_template
24510
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24511
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24513
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24514
f_charbig = 'updated by trigger'
24515
WHERE f_int1 = new.f_int1;
24517
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24518
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24520
# check trigger-5 success: 1
24521
DROP TRIGGER trg_1;
24522
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24523
f_int2 = CAST(f_char1 AS SIGNED INT),
24524
f_charbig = 'just inserted'
24525
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24527
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24528
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24529
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24530
'just inserted' FROM t0_template
24531
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24532
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24534
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24535
f_charbig = 'updated by trigger'
24536
WHERE f_int1 = - old.f_int1;
24538
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24539
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24541
# check trigger-6 success: 1
24542
DROP TRIGGER trg_1;
24543
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24544
f_int2 = CAST(f_char1 AS SIGNED INT),
24545
f_charbig = 'just inserted'
24546
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24548
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24549
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24550
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24551
'just inserted' FROM t0_template
24552
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24553
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
24555
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24556
f_charbig = 'updated by trigger'
24557
WHERE f_int1 = - old.f_int1;
24560
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24562
# check trigger-7 success: 1
24563
DROP TRIGGER trg_1;
24564
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24565
f_int2 = CAST(f_char1 AS SIGNED INT),
24566
f_charbig = 'just inserted'
24567
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24569
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24570
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24571
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24572
'just inserted' FROM t0_template
24573
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24574
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
24576
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24577
f_charbig = 'updated by trigger'
24578
WHERE f_int1 = - old.f_int1;
24581
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24583
# check trigger-8 success: 1
24584
DROP TRIGGER trg_1;
24585
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24586
f_int2 = CAST(f_char1 AS SIGNED INT),
24587
f_charbig = 'just inserted'
24588
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24590
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24592
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24593
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24595
SET new.f_int1 = old.f_int1 + @max_row,
24596
new.f_int2 = old.f_int2 - @max_row,
24597
new.f_charbig = '####updated per update trigger####';
24600
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24601
f_charbig = '####updated per update statement itself####';
24603
# check trigger-9 success: 1
24604
DROP TRIGGER trg_2;
24605
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24606
f_int2 = CAST(f_char1 AS SIGNED INT),
24607
f_charbig = CONCAT('===',f_char1,'===');
24608
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
24610
SET new.f_int1 = new.f_int1 + @max_row,
24611
new.f_int2 = new.f_int2 - @max_row,
24612
new.f_charbig = '####updated per update trigger####';
24615
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
24616
f_charbig = '####updated per update statement itself####';
24618
# check trigger-10 success: 1
24619
DROP TRIGGER trg_2;
24620
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24621
f_int2 = CAST(f_char1 AS SIGNED INT),
24622
f_charbig = CONCAT('===',f_char1,'===');
24623
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24625
SET new.f_int1 = @my_max1 + @counter,
24626
new.f_int2 = @my_min2 - @counter,
24627
new.f_charbig = '####updated per insert trigger####';
24628
SET @counter = @counter + 1;
24631
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24632
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24633
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24634
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24635
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24637
DROP TRIGGER trg_3;
24639
# check trigger-11 success: 1
24641
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24642
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24643
AND f_charbig = '####updated per insert trigger####';
24644
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
24646
SET new.f_int1 = @my_max1 + @counter,
24647
new.f_int2 = @my_min2 - @counter,
24648
new.f_charbig = '####updated per insert trigger####';
24649
SET @counter = @counter + 1;
24652
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
24653
INSERT INTO t1 (f_char1, f_char2, f_charbig)
24654
SELECT CAST(f_int1 AS CHAR),
24655
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
24656
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
24658
DROP TRIGGER trg_3;
24660
# check trigger-12 success: 1
24662
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
24663
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
24664
AND f_charbig = '####updated per insert trigger####';
24666
Table Op Msg_type Msg_text
24667
test.t1 analyze status OK
24668
CHECK TABLE t1 EXTENDED;
24669
Table Op Msg_type Msg_text
24670
test.t1 check status OK
24671
CHECKSUM TABLE t1 EXTENDED;
24673
test.t1 <some_value>
24675
Table Op Msg_type Msg_text
24676
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
24677
test.t1 optimize status OK
24678
# check layout success: 1
24679
REPAIR TABLE t1 EXTENDED;
24680
Table Op Msg_type Msg_text
24681
test.t1 repair note The storage engine for the table doesn't support repair
24682
# check layout success: 1
24685
# check TRUNCATE success: 1
24686
# check layout success: 1
24687
# End usability test (inc/partition_check.inc)
24694
f_charbig VARCHAR(1000)
24695
, UNIQUE INDEX uidx1 (f_int2,f_int1)
24697
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
24698
(PARTITION part1 VALUES IN (0)
24699
(SUBPARTITION sp11, SUBPARTITION sp12),
24700
PARTITION part2 VALUES IN (1)
24701
(SUBPARTITION sp21, SUBPARTITION sp22),
24702
PARTITION part3 VALUES IN (2)
24703
(SUBPARTITION sp31, SUBPARTITION sp32),
24704
PARTITION part4 VALUES IN (NULL)
24705
(SUBPARTITION sp41, SUBPARTITION sp42));
24706
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24707
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24708
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
24709
ALTER TABLE t1 DROP INDEX uidx1;
24710
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24711
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
24712
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
24713
# Start usability test (inc/partition_check.inc)
24715
SHOW CREATE TABLE t1;
24717
t1 CREATE TABLE `t1` (
24718
`f_int1` int(11) DEFAULT NULL,
24719
`f_int2` int(11) DEFAULT NULL,
24720
`f_char1` char(20) DEFAULT NULL,
24721
`f_char2` char(20) DEFAULT NULL,
24722
`f_charbig` varchar(1000) DEFAULT NULL
24723
) ENGINE=InnoDB DEFAULT CHARSET=latin1
24724
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
24725
SUBPARTITION BY HASH (f_int2 + 1)
24726
(PARTITION part1 VALUES IN (0)
24727
(SUBPARTITION sp11 ENGINE = InnoDB,
24728
SUBPARTITION sp12 ENGINE = InnoDB),
24729
PARTITION part2 VALUES IN (1)
24730
(SUBPARTITION sp21 ENGINE = InnoDB,
24731
SUBPARTITION sp22 ENGINE = InnoDB),
24732
PARTITION part3 VALUES IN (2)
24733
(SUBPARTITION sp31 ENGINE = InnoDB,
24734
SUBPARTITION sp32 ENGINE = InnoDB),
24735
PARTITION part4 VALUES IN (NULL)
24736
(SUBPARTITION sp41 ENGINE = InnoDB,
24737
SUBPARTITION sp42 ENGINE = InnoDB)) */
24739
# check prerequisites-1 success: 1
24740
# check COUNT(*) success: 1
24741
# check MIN/MAX(f_int1) success: 1
24742
# check MIN/MAX(f_int2) success: 1
24743
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24744
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
24745
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
24746
WHERE f_int1 IN (2,3);
24747
# check prerequisites-3 success: 1
24748
DELETE FROM t1 WHERE f_charbig = 'delete me';
24749
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
24750
# check read via f_int1 success: 1
24751
# check read via f_int2 success: 1
24753
# check multiple-1 success: 1
24754
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
24756
# check multiple-2 success: 1
24757
INSERT INTO t1 SELECT * FROM t0_template
24758
WHERE MOD(f_int1,3) = 0;
24760
# check multiple-3 success: 1
24761
UPDATE t1 SET f_int1 = f_int1 + @max_row
24762
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
24763
AND @max_row_div2 + @max_row_div4;
24765
# check multiple-4 success: 1
24767
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
24768
AND @max_row_div2 + @max_row_div4 + @max_row;
24770
# check multiple-5 success: 1
24771
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
24773
SET f_int1 = @cur_value , f_int2 = @cur_value,
24774
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24775
f_charbig = '#SINGLE#';
24777
# check single-1 success: 1
24778
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
24780
SET f_int1 = @cur_value , f_int2 = @cur_value,
24781
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
24782
f_charbig = '#SINGLE#';
24784
# check single-2 success: 1
24785
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
24786
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
24787
UPDATE t1 SET f_int1 = @cur_value2
24788
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
24790
# check single-3 success: 1
24791
SET @cur_value1= -1;
24792
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
24793
UPDATE t1 SET f_int1 = @cur_value1
24794
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
24796
# check single-4 success: 1
24797
SELECT MAX(f_int1) INTO @cur_value FROM t1;
24798
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
24800
# check single-5 success: 1
24801
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
24803
# check single-6 success: 1
24804
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
24806
# check single-7 success: 1
24807
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
24808
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
24809
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
24810
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
24811
f_charbig = '#NULL#';
24813
SET f_int1 = NULL , f_int2 = -@max_row,
24814
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
24815
f_charbig = '#NULL#';
24816
# check null success: 1
24818
# check null-1 success: 1
24819
UPDATE t1 SET f_int1 = -@max_row
24820
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24821
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24823
# check null-2 success: 1
24824
UPDATE t1 SET f_int1 = NULL
24825
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24826
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24828
# check null-3 success: 1
24830
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
24831
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
24833
# check null-4 success: 1
24835
WHERE f_int1 = 0 AND f_int2 = 0
24836
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
24837
AND f_charbig = '#NULL#';
24839
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24840
SELECT f_int1, f_int1, '', '', 'was inserted'
24841
FROM t0_template source_tab
24842
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24844
# check transactions-1 success: 1
24847
# check transactions-2 success: 1
24850
# check transactions-3 success: 1
24851
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24855
# check transactions-4 success: 1
24856
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24857
SELECT f_int1, f_int1, '', '', 'was inserted'
24858
FROM t0_template source_tab
24859
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24861
# check transactions-5 success: 1
24864
# check transactions-6 success: 1
24865
# INFO: Storage engine used for t1 seems to be transactional.
24868
# check transactions-7 success: 1
24869
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24871
SET @@session.sql_mode = 'traditional';
24872
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
24873
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
24874
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
24875
'', '', 'was inserted' FROM t0_template
24876
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
24877
ERROR 22012: Division by 0
24880
# check transactions-8 success: 1
24881
# INFO: Storage engine used for t1 seems to be able to revert
24882
# changes made by the failing statement.
24883
SET @@session.sql_mode = '';
24885
DELETE FROM t1 WHERE f_charbig = 'was inserted';
24887
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
24889
# check special-1 success: 1
24890
UPDATE t1 SET f_charbig = '';
24892
# check special-2 success: 1
24893
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
24894
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
24895
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
24896
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24897
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24898
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24899
'just inserted' FROM t0_template
24900
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24901
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
24903
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24904
f_charbig = 'updated by trigger'
24905
WHERE f_int1 = new.f_int1;
24907
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24908
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24909
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24911
# check trigger-1 success: 1
24912
DROP TRIGGER trg_1;
24913
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24914
f_int2 = CAST(f_char1 AS SIGNED INT),
24915
f_charbig = 'just inserted'
24916
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24918
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24919
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24920
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24921
'just inserted' FROM t0_template
24922
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24923
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
24925
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24926
f_charbig = 'updated by trigger'
24927
WHERE f_int1 = new.f_int1;
24929
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24930
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
24931
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24933
# check trigger-2 success: 1
24934
DROP TRIGGER trg_1;
24935
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24936
f_int2 = CAST(f_char1 AS SIGNED INT),
24937
f_charbig = 'just inserted'
24938
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24940
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24941
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24942
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24943
'just inserted' FROM t0_template
24944
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24945
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24947
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24948
f_charbig = 'updated by trigger'
24949
WHERE f_int1 = new.f_int1;
24951
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24952
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24954
# check trigger-3 success: 1
24955
DROP TRIGGER trg_1;
24956
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24957
f_int2 = CAST(f_char1 AS SIGNED INT),
24958
f_charbig = 'just inserted'
24959
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24961
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24962
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24963
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24964
'just inserted' FROM t0_template
24965
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24966
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
24968
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24969
f_charbig = 'updated by trigger'
24970
WHERE f_int1 = - old.f_int1;
24972
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24973
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24975
# check trigger-4 success: 1
24976
DROP TRIGGER trg_1;
24977
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24978
f_int2 = CAST(f_char1 AS SIGNED INT),
24979
f_charbig = 'just inserted'
24980
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
24982
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24983
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
24984
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
24985
'just inserted' FROM t0_template
24986
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
24987
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
24989
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
24990
f_charbig = 'updated by trigger'
24991
WHERE f_int1 = new.f_int1;
24993
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
24994
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
24996
# check trigger-5 success: 1
24997
DROP TRIGGER trg_1;
24998
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
24999
f_int2 = CAST(f_char1 AS SIGNED INT),
25000
f_charbig = 'just inserted'
25001
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25003
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25004
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25005
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25006
'just inserted' FROM t0_template
25007
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25008
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25010
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25011
f_charbig = 'updated by trigger'
25012
WHERE f_int1 = - old.f_int1;
25014
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25015
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25017
# check trigger-6 success: 1
25018
DROP TRIGGER trg_1;
25019
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25020
f_int2 = CAST(f_char1 AS SIGNED INT),
25021
f_charbig = 'just inserted'
25022
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25024
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25025
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25026
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25027
'just inserted' FROM t0_template
25028
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25029
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25031
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25032
f_charbig = 'updated by trigger'
25033
WHERE f_int1 = - old.f_int1;
25036
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25038
# check trigger-7 success: 1
25039
DROP TRIGGER trg_1;
25040
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25041
f_int2 = CAST(f_char1 AS SIGNED INT),
25042
f_charbig = 'just inserted'
25043
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25045
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25046
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25047
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25048
'just inserted' FROM t0_template
25049
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25050
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25052
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25053
f_charbig = 'updated by trigger'
25054
WHERE f_int1 = - old.f_int1;
25057
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25059
# check trigger-8 success: 1
25060
DROP TRIGGER trg_1;
25061
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25062
f_int2 = CAST(f_char1 AS SIGNED INT),
25063
f_charbig = 'just inserted'
25064
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25066
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25068
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25069
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25071
SET new.f_int1 = old.f_int1 + @max_row,
25072
new.f_int2 = old.f_int2 - @max_row,
25073
new.f_charbig = '####updated per update trigger####';
25076
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25077
f_charbig = '####updated per update statement itself####';
25079
# check trigger-9 success: 1
25080
DROP TRIGGER trg_2;
25081
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25082
f_int2 = CAST(f_char1 AS SIGNED INT),
25083
f_charbig = CONCAT('===',f_char1,'===');
25084
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25086
SET new.f_int1 = new.f_int1 + @max_row,
25087
new.f_int2 = new.f_int2 - @max_row,
25088
new.f_charbig = '####updated per update trigger####';
25091
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25092
f_charbig = '####updated per update statement itself####';
25094
# check trigger-10 success: 1
25095
DROP TRIGGER trg_2;
25096
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25097
f_int2 = CAST(f_char1 AS SIGNED INT),
25098
f_charbig = CONCAT('===',f_char1,'===');
25099
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25101
SET new.f_int1 = @my_max1 + @counter,
25102
new.f_int2 = @my_min2 - @counter,
25103
new.f_charbig = '####updated per insert trigger####';
25104
SET @counter = @counter + 1;
25107
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25108
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25109
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25110
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25111
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25113
DROP TRIGGER trg_3;
25115
# check trigger-11 success: 1
25117
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25118
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25119
AND f_charbig = '####updated per insert trigger####';
25120
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25122
SET new.f_int1 = @my_max1 + @counter,
25123
new.f_int2 = @my_min2 - @counter,
25124
new.f_charbig = '####updated per insert trigger####';
25125
SET @counter = @counter + 1;
25128
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25129
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25130
SELECT CAST(f_int1 AS CHAR),
25131
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25132
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25134
DROP TRIGGER trg_3;
25136
# check trigger-12 success: 1
25138
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25139
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25140
AND f_charbig = '####updated per insert trigger####';
25142
Table Op Msg_type Msg_text
25143
test.t1 analyze status OK
25144
CHECK TABLE t1 EXTENDED;
25145
Table Op Msg_type Msg_text
25146
test.t1 check status OK
25147
CHECKSUM TABLE t1 EXTENDED;
25149
test.t1 <some_value>
25151
Table Op Msg_type Msg_text
25152
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
25153
test.t1 optimize status OK
25154
# check layout success: 1
25155
REPAIR TABLE t1 EXTENDED;
25156
Table Op Msg_type Msg_text
25157
test.t1 repair note The storage engine for the table doesn't support repair
25158
# check layout success: 1
25161
# check TRUNCATE success: 1
25162
# check layout success: 1
25163
# End usability test (inc/partition_check.inc)
25170
f_charbig VARCHAR(1000)
25171
, UNIQUE INDEX uidx1 (f_int2,f_int1)
25173
PARTITION BY LIST(ABS(MOD(f_int1,2)))
25174
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
25175
(PARTITION part1 VALUES IN (0),
25176
PARTITION part2 VALUES IN (1),
25177
PARTITION part3 VALUES IN (NULL));
25178
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25179
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25180
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25181
ALTER TABLE t1 DROP INDEX uidx1;
25182
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25183
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25184
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25185
# Start usability test (inc/partition_check.inc)
25187
SHOW CREATE TABLE t1;
25189
t1 CREATE TABLE `t1` (
25190
`f_int1` int(11) DEFAULT NULL,
25191
`f_int2` int(11) DEFAULT NULL,
25192
`f_char1` char(20) DEFAULT NULL,
25193
`f_char2` char(20) DEFAULT NULL,
25194
`f_charbig` varchar(1000) DEFAULT NULL
25195
) ENGINE=InnoDB DEFAULT CHARSET=latin1
25196
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
25197
SUBPARTITION BY KEY (f_int2)
25199
(PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
25200
PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
25201
PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
25203
# check prerequisites-1 success: 1
25204
# check COUNT(*) success: 1
25205
# check MIN/MAX(f_int1) success: 1
25206
# check MIN/MAX(f_int2) success: 1
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), 'delete me' FROM t0_template
25210
WHERE f_int1 IN (2,3);
25211
# check prerequisites-3 success: 1
25212
DELETE FROM t1 WHERE f_charbig = 'delete me';
25213
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25214
# check read via f_int1 success: 1
25215
# check read via f_int2 success: 1
25217
# check multiple-1 success: 1
25218
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25220
# check multiple-2 success: 1
25221
INSERT INTO t1 SELECT * FROM t0_template
25222
WHERE MOD(f_int1,3) = 0;
25224
# check multiple-3 success: 1
25225
UPDATE t1 SET f_int1 = f_int1 + @max_row
25226
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25227
AND @max_row_div2 + @max_row_div4;
25229
# check multiple-4 success: 1
25231
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25232
AND @max_row_div2 + @max_row_div4 + @max_row;
25234
# check multiple-5 success: 1
25235
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25237
SET f_int1 = @cur_value , f_int2 = @cur_value,
25238
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25239
f_charbig = '#SINGLE#';
25241
# check single-1 success: 1
25242
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25244
SET f_int1 = @cur_value , f_int2 = @cur_value,
25245
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25246
f_charbig = '#SINGLE#';
25248
# check single-2 success: 1
25249
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25250
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25251
UPDATE t1 SET f_int1 = @cur_value2
25252
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25254
# check single-3 success: 1
25255
SET @cur_value1= -1;
25256
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25257
UPDATE t1 SET f_int1 = @cur_value1
25258
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25260
# check single-4 success: 1
25261
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25262
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25264
# check single-5 success: 1
25265
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25267
# check single-6 success: 1
25268
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25270
# check single-7 success: 1
25271
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25272
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25273
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25274
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25275
f_charbig = '#NULL#';
25277
SET f_int1 = NULL , f_int2 = -@max_row,
25278
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25279
f_charbig = '#NULL#';
25280
# check null success: 1
25282
# check null-1 success: 1
25283
UPDATE t1 SET f_int1 = -@max_row
25284
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25285
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25287
# check null-2 success: 1
25288
UPDATE t1 SET f_int1 = NULL
25289
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25290
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25292
# check null-3 success: 1
25294
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
25295
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
25297
# check null-4 success: 1
25299
WHERE f_int1 = 0 AND f_int2 = 0
25300
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25301
AND f_charbig = '#NULL#';
25303
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25304
SELECT f_int1, f_int1, '', '', 'was inserted'
25305
FROM t0_template source_tab
25306
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25308
# check transactions-1 success: 1
25311
# check transactions-2 success: 1
25314
# check transactions-3 success: 1
25315
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25319
# check transactions-4 success: 1
25320
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25321
SELECT f_int1, f_int1, '', '', 'was inserted'
25322
FROM t0_template source_tab
25323
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25325
# check transactions-5 success: 1
25328
# check transactions-6 success: 1
25329
# INFO: Storage engine used for t1 seems to be transactional.
25332
# check transactions-7 success: 1
25333
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25335
SET @@session.sql_mode = 'traditional';
25336
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25337
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25338
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25339
'', '', 'was inserted' FROM t0_template
25340
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25341
ERROR 22012: Division by 0
25344
# check transactions-8 success: 1
25345
# INFO: Storage engine used for t1 seems to be able to revert
25346
# changes made by the failing statement.
25347
SET @@session.sql_mode = '';
25349
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25351
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25353
# check special-1 success: 1
25354
UPDATE t1 SET f_charbig = '';
25356
# check special-2 success: 1
25357
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25358
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25359
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25360
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25361
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25362
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25363
'just inserted' FROM t0_template
25364
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25365
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25367
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25368
f_charbig = 'updated by trigger'
25369
WHERE f_int1 = new.f_int1;
25371
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25372
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25373
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25375
# check trigger-1 success: 1
25376
DROP TRIGGER trg_1;
25377
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25378
f_int2 = CAST(f_char1 AS SIGNED INT),
25379
f_charbig = 'just inserted'
25380
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25382
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25383
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25384
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25385
'just inserted' FROM t0_template
25386
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25387
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25389
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25390
f_charbig = 'updated by trigger'
25391
WHERE f_int1 = new.f_int1;
25393
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25394
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25395
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25397
# check trigger-2 success: 1
25398
DROP TRIGGER trg_1;
25399
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25400
f_int2 = CAST(f_char1 AS SIGNED INT),
25401
f_charbig = 'just inserted'
25402
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25404
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25405
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25406
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25407
'just inserted' FROM t0_template
25408
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25409
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25411
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25412
f_charbig = 'updated by trigger'
25413
WHERE f_int1 = new.f_int1;
25415
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25416
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25418
# check trigger-3 success: 1
25419
DROP TRIGGER trg_1;
25420
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25421
f_int2 = CAST(f_char1 AS SIGNED INT),
25422
f_charbig = 'just inserted'
25423
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25425
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25426
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25427
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25428
'just inserted' FROM t0_template
25429
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25430
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25432
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25433
f_charbig = 'updated by trigger'
25434
WHERE f_int1 = - old.f_int1;
25436
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25437
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25439
# check trigger-4 success: 1
25440
DROP TRIGGER trg_1;
25441
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25442
f_int2 = CAST(f_char1 AS SIGNED INT),
25443
f_charbig = 'just inserted'
25444
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25446
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25447
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25448
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25449
'just inserted' FROM t0_template
25450
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25451
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25453
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25454
f_charbig = 'updated by trigger'
25455
WHERE f_int1 = new.f_int1;
25457
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25458
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25460
# check trigger-5 success: 1
25461
DROP TRIGGER trg_1;
25462
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25463
f_int2 = CAST(f_char1 AS SIGNED INT),
25464
f_charbig = 'just inserted'
25465
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25467
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25468
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25469
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25470
'just inserted' FROM t0_template
25471
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25472
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25474
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25475
f_charbig = 'updated by trigger'
25476
WHERE f_int1 = - old.f_int1;
25478
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25479
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25481
# check trigger-6 success: 1
25482
DROP TRIGGER trg_1;
25483
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25484
f_int2 = CAST(f_char1 AS SIGNED INT),
25485
f_charbig = 'just inserted'
25486
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25488
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25489
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25490
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25491
'just inserted' FROM t0_template
25492
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25493
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25495
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25496
f_charbig = 'updated by trigger'
25497
WHERE f_int1 = - old.f_int1;
25500
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25502
# check trigger-7 success: 1
25503
DROP TRIGGER trg_1;
25504
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25505
f_int2 = CAST(f_char1 AS SIGNED INT),
25506
f_charbig = 'just inserted'
25507
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25509
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25510
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25511
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25512
'just inserted' FROM t0_template
25513
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25514
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25516
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25517
f_charbig = 'updated by trigger'
25518
WHERE f_int1 = - old.f_int1;
25521
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25523
# check trigger-8 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;
25532
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25533
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25535
SET new.f_int1 = old.f_int1 + @max_row,
25536
new.f_int2 = old.f_int2 - @max_row,
25537
new.f_charbig = '####updated per update trigger####';
25540
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25541
f_charbig = '####updated per update statement itself####';
25543
# check trigger-9 success: 1
25544
DROP TRIGGER trg_2;
25545
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25546
f_int2 = CAST(f_char1 AS SIGNED INT),
25547
f_charbig = CONCAT('===',f_char1,'===');
25548
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25550
SET new.f_int1 = new.f_int1 + @max_row,
25551
new.f_int2 = new.f_int2 - @max_row,
25552
new.f_charbig = '####updated per update trigger####';
25555
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25556
f_charbig = '####updated per update statement itself####';
25558
# check trigger-10 success: 1
25559
DROP TRIGGER trg_2;
25560
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25561
f_int2 = CAST(f_char1 AS SIGNED INT),
25562
f_charbig = CONCAT('===',f_char1,'===');
25563
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25565
SET new.f_int1 = @my_max1 + @counter,
25566
new.f_int2 = @my_min2 - @counter,
25567
new.f_charbig = '####updated per insert trigger####';
25568
SET @counter = @counter + 1;
25571
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25572
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25573
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25574
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25575
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25577
DROP TRIGGER trg_3;
25579
# check trigger-11 success: 1
25581
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25582
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25583
AND f_charbig = '####updated per insert trigger####';
25584
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
25586
SET new.f_int1 = @my_max1 + @counter,
25587
new.f_int2 = @my_min2 - @counter,
25588
new.f_charbig = '####updated per insert trigger####';
25589
SET @counter = @counter + 1;
25592
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
25593
INSERT INTO t1 (f_char1, f_char2, f_charbig)
25594
SELECT CAST(f_int1 AS CHAR),
25595
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
25596
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
25598
DROP TRIGGER trg_3;
25600
# check trigger-12 success: 1
25602
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
25603
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
25604
AND f_charbig = '####updated per insert trigger####';
25606
Table Op Msg_type Msg_text
25607
test.t1 analyze status OK
25608
CHECK TABLE t1 EXTENDED;
25609
Table Op Msg_type Msg_text
25610
test.t1 check status OK
25611
CHECKSUM TABLE t1 EXTENDED;
25613
test.t1 <some_value>
25615
Table Op Msg_type Msg_text
25616
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
25617
test.t1 optimize status OK
25618
# check layout success: 1
25619
REPAIR TABLE t1 EXTENDED;
25620
Table Op Msg_type Msg_text
25621
test.t1 repair note The storage engine for the table doesn't support repair
25622
# check layout success: 1
25625
# check TRUNCATE success: 1
25626
# check layout success: 1
25627
# End usability test (inc/partition_check.inc)
25629
# 2.2.3 DROP PRIMARY KEY + UNIQUE INDEX consisting of two columns
25630
DROP TABLE IF EXISTS t1;
25636
f_charbig VARCHAR(1000)
25637
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
25639
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
25640
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25641
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25642
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
25643
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
25644
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25645
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
25646
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
25647
# Start usability test (inc/partition_check.inc)
25649
SHOW CREATE TABLE t1;
25651
t1 CREATE TABLE `t1` (
25652
`f_int1` int(11) NOT NULL DEFAULT '0',
25653
`f_int2` int(11) NOT NULL DEFAULT '0',
25654
`f_char1` char(20) DEFAULT NULL,
25655
`f_char2` char(20) DEFAULT NULL,
25656
`f_charbig` varchar(1000) DEFAULT NULL
25657
) ENGINE=InnoDB DEFAULT CHARSET=latin1
25658
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
25661
# check prerequisites-1 success: 1
25662
# check COUNT(*) success: 1
25663
# check MIN/MAX(f_int1) success: 1
25664
# check MIN/MAX(f_int2) success: 1
25665
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25666
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
25667
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
25668
WHERE f_int1 IN (2,3);
25669
# check prerequisites-3 success: 1
25670
DELETE FROM t1 WHERE f_charbig = 'delete me';
25671
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
25672
# check read via f_int1 success: 1
25673
# check read via f_int2 success: 1
25675
# check multiple-1 success: 1
25676
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
25678
# check multiple-2 success: 1
25679
INSERT INTO t1 SELECT * FROM t0_template
25680
WHERE MOD(f_int1,3) = 0;
25682
# check multiple-3 success: 1
25683
UPDATE t1 SET f_int1 = f_int1 + @max_row
25684
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
25685
AND @max_row_div2 + @max_row_div4;
25687
# check multiple-4 success: 1
25689
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
25690
AND @max_row_div2 + @max_row_div4 + @max_row;
25692
# check multiple-5 success: 1
25693
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
25695
SET f_int1 = @cur_value , f_int2 = @cur_value,
25696
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25697
f_charbig = '#SINGLE#';
25699
# check single-1 success: 1
25700
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
25702
SET f_int1 = @cur_value , f_int2 = @cur_value,
25703
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
25704
f_charbig = '#SINGLE#';
25706
# check single-2 success: 1
25707
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
25708
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
25709
UPDATE t1 SET f_int1 = @cur_value2
25710
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
25712
# check single-3 success: 1
25713
SET @cur_value1= -1;
25714
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
25715
UPDATE t1 SET f_int1 = @cur_value1
25716
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
25718
# check single-4 success: 1
25719
SELECT MAX(f_int1) INTO @cur_value FROM t1;
25720
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
25722
# check single-5 success: 1
25723
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
25725
# check single-6 success: 1
25726
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
25728
# check single-7 success: 1
25729
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
25730
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
25731
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
25732
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
25733
f_charbig = '#NULL#';
25735
SET f_int1 = NULL , f_int2 = -@max_row,
25736
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
25737
f_charbig = '#NULL#';
25738
ERROR 23000: Column 'f_int1' cannot be null
25739
# check null success: 1
25741
WHERE f_int1 = 0 AND f_int2 = 0
25742
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
25743
AND f_charbig = '#NULL#';
25745
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25746
SELECT f_int1, f_int1, '', '', 'was inserted'
25747
FROM t0_template source_tab
25748
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25750
# check transactions-1 success: 1
25753
# check transactions-2 success: 1
25756
# check transactions-3 success: 1
25757
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25761
# check transactions-4 success: 1
25762
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25763
SELECT f_int1, f_int1, '', '', 'was inserted'
25764
FROM t0_template source_tab
25765
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25767
# check transactions-5 success: 1
25770
# check transactions-6 success: 1
25771
# INFO: Storage engine used for t1 seems to be transactional.
25774
# check transactions-7 success: 1
25775
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25777
SET @@session.sql_mode = 'traditional';
25778
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
25779
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
25780
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
25781
'', '', 'was inserted' FROM t0_template
25782
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
25783
ERROR 22012: Division by 0
25786
# check transactions-8 success: 1
25787
# INFO: Storage engine used for t1 seems to be able to revert
25788
# changes made by the failing statement.
25789
SET @@session.sql_mode = '';
25791
DELETE FROM t1 WHERE f_charbig = 'was inserted';
25793
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
25795
# check special-1 success: 1
25796
UPDATE t1 SET f_charbig = '';
25798
# check special-2 success: 1
25799
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
25800
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
25801
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
25802
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25803
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25804
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25805
'just inserted' FROM t0_template
25806
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25807
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
25809
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25810
f_charbig = 'updated by trigger'
25811
WHERE f_int1 = new.f_int1;
25813
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25814
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25815
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25817
# check trigger-1 success: 1
25818
DROP TRIGGER trg_1;
25819
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25820
f_int2 = CAST(f_char1 AS SIGNED INT),
25821
f_charbig = 'just inserted'
25822
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25824
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25825
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25826
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25827
'just inserted' FROM t0_template
25828
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25829
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
25831
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25832
f_charbig = 'updated by trigger'
25833
WHERE f_int1 = new.f_int1;
25835
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25836
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
25837
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25839
# check trigger-2 success: 1
25840
DROP TRIGGER trg_1;
25841
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25842
f_int2 = CAST(f_char1 AS SIGNED INT),
25843
f_charbig = 'just inserted'
25844
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25846
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25847
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25848
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25849
'just inserted' FROM t0_template
25850
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25851
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25853
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25854
f_charbig = 'updated by trigger'
25855
WHERE f_int1 = new.f_int1;
25857
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25858
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25860
# check trigger-3 success: 1
25861
DROP TRIGGER trg_1;
25862
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25863
f_int2 = CAST(f_char1 AS SIGNED INT),
25864
f_charbig = 'just inserted'
25865
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25867
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25868
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25869
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25870
'just inserted' FROM t0_template
25871
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25872
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
25874
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25875
f_charbig = 'updated by trigger'
25876
WHERE f_int1 = - old.f_int1;
25878
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25879
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25881
# check trigger-4 success: 1
25882
DROP TRIGGER trg_1;
25883
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25884
f_int2 = CAST(f_char1 AS SIGNED INT),
25885
f_charbig = 'just inserted'
25886
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25888
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25889
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25890
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25891
'just inserted' FROM t0_template
25892
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25893
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25895
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25896
f_charbig = 'updated by trigger'
25897
WHERE f_int1 = new.f_int1;
25899
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25900
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25902
# check trigger-5 success: 1
25903
DROP TRIGGER trg_1;
25904
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25905
f_int2 = CAST(f_char1 AS SIGNED INT),
25906
f_charbig = 'just inserted'
25907
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25909
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25910
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25911
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25912
'just inserted' FROM t0_template
25913
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25914
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
25916
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25917
f_charbig = 'updated by trigger'
25918
WHERE f_int1 = - old.f_int1;
25920
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
25921
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25923
# check trigger-6 success: 1
25924
DROP TRIGGER trg_1;
25925
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25926
f_int2 = CAST(f_char1 AS SIGNED INT),
25927
f_charbig = 'just inserted'
25928
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25930
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25931
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25932
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25933
'just inserted' FROM t0_template
25934
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25935
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
25937
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25938
f_charbig = 'updated by trigger'
25939
WHERE f_int1 = - old.f_int1;
25942
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25944
# check trigger-7 success: 1
25945
DROP TRIGGER trg_1;
25946
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25947
f_int2 = CAST(f_char1 AS SIGNED INT),
25948
f_charbig = 'just inserted'
25949
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25951
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25952
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
25953
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
25954
'just inserted' FROM t0_template
25955
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25956
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
25958
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
25959
f_charbig = 'updated by trigger'
25960
WHERE f_int1 = - old.f_int1;
25963
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
25965
# check trigger-8 success: 1
25966
DROP TRIGGER trg_1;
25967
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25968
f_int2 = CAST(f_char1 AS SIGNED INT),
25969
f_charbig = 'just inserted'
25970
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
25972
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25974
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
25975
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25977
SET new.f_int1 = old.f_int1 + @max_row,
25978
new.f_int2 = old.f_int2 - @max_row,
25979
new.f_charbig = '####updated per update trigger####';
25982
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25983
f_charbig = '####updated per update statement itself####';
25985
# check trigger-9 success: 1
25986
DROP TRIGGER trg_2;
25987
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
25988
f_int2 = CAST(f_char1 AS SIGNED INT),
25989
f_charbig = CONCAT('===',f_char1,'===');
25990
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
25992
SET new.f_int1 = new.f_int1 + @max_row,
25993
new.f_int2 = new.f_int2 - @max_row,
25994
new.f_charbig = '####updated per update trigger####';
25997
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
25998
f_charbig = '####updated per update statement itself####';
26000
# check trigger-10 success: 1
26001
DROP TRIGGER trg_2;
26002
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26003
f_int2 = CAST(f_char1 AS SIGNED INT),
26004
f_charbig = CONCAT('===',f_char1,'===');
26005
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26007
SET new.f_int1 = @my_max1 + @counter,
26008
new.f_int2 = @my_min2 - @counter,
26009
new.f_charbig = '####updated per insert trigger####';
26010
SET @counter = @counter + 1;
26013
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26014
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26015
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26016
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26017
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26019
DROP TRIGGER trg_3;
26021
# check trigger-11 success: 1
26023
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26024
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26025
AND f_charbig = '####updated per insert trigger####';
26026
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26028
SET new.f_int1 = @my_max1 + @counter,
26029
new.f_int2 = @my_min2 - @counter,
26030
new.f_charbig = '####updated per insert trigger####';
26031
SET @counter = @counter + 1;
26034
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26035
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26036
SELECT CAST(f_int1 AS CHAR),
26037
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26038
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26040
DROP TRIGGER trg_3;
26042
# check trigger-12 success: 1
26044
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26045
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26046
AND f_charbig = '####updated per insert trigger####';
26048
Table Op Msg_type Msg_text
26049
test.t1 analyze status OK
26050
CHECK TABLE t1 EXTENDED;
26051
Table Op Msg_type Msg_text
26052
test.t1 check status OK
26053
CHECKSUM TABLE t1 EXTENDED;
26055
test.t1 <some_value>
26057
Table Op Msg_type Msg_text
26058
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
26059
test.t1 optimize status OK
26060
# check layout success: 1
26061
REPAIR TABLE t1 EXTENDED;
26062
Table Op Msg_type Msg_text
26063
test.t1 repair note The storage engine for the table doesn't support repair
26064
# check layout success: 1
26067
# check TRUNCATE success: 1
26068
# check layout success: 1
26069
# End usability test (inc/partition_check.inc)
26076
f_charbig VARCHAR(1000)
26077
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
26079
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
26080
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26081
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26082
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26083
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
26084
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26085
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26086
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26087
# Start usability test (inc/partition_check.inc)
26089
SHOW CREATE TABLE t1;
26091
t1 CREATE TABLE `t1` (
26092
`f_int1` int(11) NOT NULL DEFAULT '0',
26093
`f_int2` int(11) NOT NULL DEFAULT '0',
26094
`f_char1` char(20) DEFAULT NULL,
26095
`f_char2` char(20) DEFAULT NULL,
26096
`f_charbig` varchar(1000) DEFAULT NULL
26097
) ENGINE=InnoDB DEFAULT CHARSET=latin1
26098
/*!50100 PARTITION BY KEY (f_int1,f_int2)
26101
# check prerequisites-1 success: 1
26102
# check COUNT(*) success: 1
26103
# check MIN/MAX(f_int1) success: 1
26104
# check MIN/MAX(f_int2) success: 1
26105
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26106
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26107
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26108
WHERE f_int1 IN (2,3);
26109
# check prerequisites-3 success: 1
26110
DELETE FROM t1 WHERE f_charbig = 'delete me';
26111
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26112
# check read via f_int1 success: 1
26113
# check read via f_int2 success: 1
26115
# check multiple-1 success: 1
26116
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26118
# check multiple-2 success: 1
26119
INSERT INTO t1 SELECT * FROM t0_template
26120
WHERE MOD(f_int1,3) = 0;
26122
# check multiple-3 success: 1
26123
UPDATE t1 SET f_int1 = f_int1 + @max_row
26124
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26125
AND @max_row_div2 + @max_row_div4;
26127
# check multiple-4 success: 1
26129
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26130
AND @max_row_div2 + @max_row_div4 + @max_row;
26132
# check multiple-5 success: 1
26133
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26135
SET f_int1 = @cur_value , f_int2 = @cur_value,
26136
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26137
f_charbig = '#SINGLE#';
26139
# check single-1 success: 1
26140
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26142
SET f_int1 = @cur_value , f_int2 = @cur_value,
26143
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26144
f_charbig = '#SINGLE#';
26146
# check single-2 success: 1
26147
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26148
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26149
UPDATE t1 SET f_int1 = @cur_value2
26150
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26152
# check single-3 success: 1
26153
SET @cur_value1= -1;
26154
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26155
UPDATE t1 SET f_int1 = @cur_value1
26156
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26158
# check single-4 success: 1
26159
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26160
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26162
# check single-5 success: 1
26163
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26165
# check single-6 success: 1
26166
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26168
# check single-7 success: 1
26169
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
26170
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26171
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26172
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26173
f_charbig = '#NULL#';
26175
SET f_int1 = NULL , f_int2 = -@max_row,
26176
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26177
f_charbig = '#NULL#';
26178
ERROR 23000: Column 'f_int1' cannot be null
26179
# check null success: 1
26181
WHERE f_int1 = 0 AND f_int2 = 0
26182
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26183
AND f_charbig = '#NULL#';
26185
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26186
SELECT f_int1, f_int1, '', '', 'was inserted'
26187
FROM t0_template source_tab
26188
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26190
# check transactions-1 success: 1
26193
# check transactions-2 success: 1
26196
# check transactions-3 success: 1
26197
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26201
# check transactions-4 success: 1
26202
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26203
SELECT f_int1, f_int1, '', '', 'was inserted'
26204
FROM t0_template source_tab
26205
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26207
# check transactions-5 success: 1
26210
# check transactions-6 success: 1
26211
# INFO: Storage engine used for t1 seems to be transactional.
26214
# check transactions-7 success: 1
26215
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26217
SET @@session.sql_mode = 'traditional';
26218
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26219
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26220
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26221
'', '', 'was inserted' FROM t0_template
26222
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26223
ERROR 22012: Division by 0
26226
# check transactions-8 success: 1
26227
# INFO: Storage engine used for t1 seems to be able to revert
26228
# changes made by the failing statement.
26229
SET @@session.sql_mode = '';
26231
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26233
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26235
# check special-1 success: 1
26236
UPDATE t1 SET f_charbig = '';
26238
# check special-2 success: 1
26239
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26240
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26241
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26242
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26243
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26244
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26245
'just inserted' FROM t0_template
26246
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26247
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26249
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26250
f_charbig = 'updated by trigger'
26251
WHERE f_int1 = new.f_int1;
26253
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26254
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26255
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26257
# check trigger-1 success: 1
26258
DROP TRIGGER trg_1;
26259
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26260
f_int2 = CAST(f_char1 AS SIGNED INT),
26261
f_charbig = 'just inserted'
26262
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26264
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26265
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26266
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26267
'just inserted' FROM t0_template
26268
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26269
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26271
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26272
f_charbig = 'updated by trigger'
26273
WHERE f_int1 = new.f_int1;
26275
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26276
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26277
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26279
# check trigger-2 success: 1
26280
DROP TRIGGER trg_1;
26281
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26282
f_int2 = CAST(f_char1 AS SIGNED INT),
26283
f_charbig = 'just inserted'
26284
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26286
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26287
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26288
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26289
'just inserted' FROM t0_template
26290
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26291
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26293
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26294
f_charbig = 'updated by trigger'
26295
WHERE f_int1 = new.f_int1;
26297
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26298
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26300
# check trigger-3 success: 1
26301
DROP TRIGGER trg_1;
26302
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26303
f_int2 = CAST(f_char1 AS SIGNED INT),
26304
f_charbig = 'just inserted'
26305
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26307
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26308
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26309
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26310
'just inserted' FROM t0_template
26311
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26312
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26314
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26315
f_charbig = 'updated by trigger'
26316
WHERE f_int1 = - old.f_int1;
26318
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26319
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26321
# check trigger-4 success: 1
26322
DROP TRIGGER trg_1;
26323
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26324
f_int2 = CAST(f_char1 AS SIGNED INT),
26325
f_charbig = 'just inserted'
26326
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26328
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26329
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26330
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26331
'just inserted' FROM t0_template
26332
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26333
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26335
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26336
f_charbig = 'updated by trigger'
26337
WHERE f_int1 = new.f_int1;
26339
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26340
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26342
# check trigger-5 success: 1
26343
DROP TRIGGER trg_1;
26344
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26345
f_int2 = CAST(f_char1 AS SIGNED INT),
26346
f_charbig = 'just inserted'
26347
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26349
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26350
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26351
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26352
'just inserted' FROM t0_template
26353
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26354
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26356
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26357
f_charbig = 'updated by trigger'
26358
WHERE f_int1 = - old.f_int1;
26360
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26361
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26363
# check trigger-6 success: 1
26364
DROP TRIGGER trg_1;
26365
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26366
f_int2 = CAST(f_char1 AS SIGNED INT),
26367
f_charbig = 'just inserted'
26368
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26370
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26371
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26372
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26373
'just inserted' FROM t0_template
26374
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26375
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26377
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26378
f_charbig = 'updated by trigger'
26379
WHERE f_int1 = - old.f_int1;
26382
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26384
# check trigger-7 success: 1
26385
DROP TRIGGER trg_1;
26386
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26387
f_int2 = CAST(f_char1 AS SIGNED INT),
26388
f_charbig = 'just inserted'
26389
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26391
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26392
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26393
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26394
'just inserted' FROM t0_template
26395
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26396
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26398
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26399
f_charbig = 'updated by trigger'
26400
WHERE f_int1 = - old.f_int1;
26403
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26405
# check trigger-8 success: 1
26406
DROP TRIGGER trg_1;
26407
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26408
f_int2 = CAST(f_char1 AS SIGNED INT),
26409
f_charbig = 'just inserted'
26410
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26412
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26414
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26415
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26417
SET new.f_int1 = old.f_int1 + @max_row,
26418
new.f_int2 = old.f_int2 - @max_row,
26419
new.f_charbig = '####updated per update trigger####';
26422
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26423
f_charbig = '####updated per update statement itself####';
26425
# check trigger-9 success: 1
26426
DROP TRIGGER trg_2;
26427
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26428
f_int2 = CAST(f_char1 AS SIGNED INT),
26429
f_charbig = CONCAT('===',f_char1,'===');
26430
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26432
SET new.f_int1 = new.f_int1 + @max_row,
26433
new.f_int2 = new.f_int2 - @max_row,
26434
new.f_charbig = '####updated per update trigger####';
26437
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26438
f_charbig = '####updated per update statement itself####';
26440
# check trigger-10 success: 1
26441
DROP TRIGGER trg_2;
26442
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26443
f_int2 = CAST(f_char1 AS SIGNED INT),
26444
f_charbig = CONCAT('===',f_char1,'===');
26445
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26447
SET new.f_int1 = @my_max1 + @counter,
26448
new.f_int2 = @my_min2 - @counter,
26449
new.f_charbig = '####updated per insert trigger####';
26450
SET @counter = @counter + 1;
26453
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26454
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26455
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26456
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26457
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26459
DROP TRIGGER trg_3;
26461
# check trigger-11 success: 1
26463
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26464
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26465
AND f_charbig = '####updated per insert trigger####';
26466
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26468
SET new.f_int1 = @my_max1 + @counter,
26469
new.f_int2 = @my_min2 - @counter,
26470
new.f_charbig = '####updated per insert trigger####';
26471
SET @counter = @counter + 1;
26474
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26475
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26476
SELECT CAST(f_int1 AS CHAR),
26477
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26478
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26480
DROP TRIGGER trg_3;
26482
# check trigger-12 success: 1
26484
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26485
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26486
AND f_charbig = '####updated per insert trigger####';
26488
Table Op Msg_type Msg_text
26489
test.t1 analyze status OK
26490
CHECK TABLE t1 EXTENDED;
26491
Table Op Msg_type Msg_text
26492
test.t1 check status OK
26493
CHECKSUM TABLE t1 EXTENDED;
26495
test.t1 <some_value>
26497
Table Op Msg_type Msg_text
26498
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
26499
test.t1 optimize status OK
26500
# check layout success: 1
26501
REPAIR TABLE t1 EXTENDED;
26502
Table Op Msg_type Msg_text
26503
test.t1 repair note The storage engine for the table doesn't support repair
26504
# check layout success: 1
26507
# check TRUNCATE success: 1
26508
# check layout success: 1
26509
# End usability test (inc/partition_check.inc)
26516
f_charbig VARCHAR(1000)
26517
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
26519
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
26520
(PARTITION part_3 VALUES IN (-3),
26521
PARTITION part_2 VALUES IN (-2),
26522
PARTITION part_1 VALUES IN (-1),
26523
PARTITION part_N VALUES IN (NULL),
26524
PARTITION part0 VALUES IN (0),
26525
PARTITION part1 VALUES IN (1),
26526
PARTITION part2 VALUES IN (2),
26527
PARTITION part3 VALUES IN (3));
26528
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26529
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26530
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26531
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
26532
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26533
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26534
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26535
# Start usability test (inc/partition_check.inc)
26537
SHOW CREATE TABLE t1;
26539
t1 CREATE TABLE `t1` (
26540
`f_int1` int(11) NOT NULL DEFAULT '0',
26541
`f_int2` int(11) NOT NULL DEFAULT '0',
26542
`f_char1` char(20) DEFAULT NULL,
26543
`f_char2` char(20) DEFAULT NULL,
26544
`f_charbig` varchar(1000) DEFAULT NULL
26545
) ENGINE=InnoDB DEFAULT CHARSET=latin1
26546
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
26547
(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
26548
PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
26549
PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
26550
PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
26551
PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
26552
PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
26553
PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
26554
PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
26556
# check prerequisites-1 success: 1
26557
# check COUNT(*) success: 1
26558
# check MIN/MAX(f_int1) success: 1
26559
# check MIN/MAX(f_int2) success: 1
26560
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26561
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26562
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
26563
WHERE f_int1 IN (2,3);
26564
# check prerequisites-3 success: 1
26565
DELETE FROM t1 WHERE f_charbig = 'delete me';
26566
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
26567
# check read via f_int1 success: 1
26568
# check read via f_int2 success: 1
26570
# check multiple-1 success: 1
26571
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
26573
# check multiple-2 success: 1
26574
INSERT INTO t1 SELECT * FROM t0_template
26575
WHERE MOD(f_int1,3) = 0;
26577
# check multiple-3 success: 1
26578
UPDATE t1 SET f_int1 = f_int1 + @max_row
26579
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
26580
AND @max_row_div2 + @max_row_div4;
26582
# check multiple-4 success: 1
26584
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
26585
AND @max_row_div2 + @max_row_div4 + @max_row;
26587
# check multiple-5 success: 1
26588
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
26590
SET f_int1 = @cur_value , f_int2 = @cur_value,
26591
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26592
f_charbig = '#SINGLE#';
26594
# check single-1 success: 1
26595
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
26597
SET f_int1 = @cur_value , f_int2 = @cur_value,
26598
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
26599
f_charbig = '#SINGLE#';
26601
# check single-2 success: 1
26602
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
26603
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
26604
UPDATE t1 SET f_int1 = @cur_value2
26605
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
26607
# check single-3 success: 1
26608
SET @cur_value1= -1;
26609
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
26610
UPDATE t1 SET f_int1 = @cur_value1
26611
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
26613
# check single-4 success: 1
26614
SELECT MAX(f_int1) INTO @cur_value FROM t1;
26615
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
26617
# check single-5 success: 1
26618
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
26620
# check single-6 success: 1
26621
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
26623
# check single-7 success: 1
26624
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
26625
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
26626
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
26627
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
26628
f_charbig = '#NULL#';
26630
SET f_int1 = NULL , f_int2 = -@max_row,
26631
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
26632
f_charbig = '#NULL#';
26633
ERROR 23000: Column 'f_int1' cannot be null
26634
# check null success: 1
26636
WHERE f_int1 = 0 AND f_int2 = 0
26637
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
26638
AND f_charbig = '#NULL#';
26640
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26641
SELECT f_int1, f_int1, '', '', 'was inserted'
26642
FROM t0_template source_tab
26643
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26645
# check transactions-1 success: 1
26648
# check transactions-2 success: 1
26651
# check transactions-3 success: 1
26652
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26656
# check transactions-4 success: 1
26657
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26658
SELECT f_int1, f_int1, '', '', 'was inserted'
26659
FROM t0_template source_tab
26660
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26662
# check transactions-5 success: 1
26665
# check transactions-6 success: 1
26666
# INFO: Storage engine used for t1 seems to be transactional.
26669
# check transactions-7 success: 1
26670
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26672
SET @@session.sql_mode = 'traditional';
26673
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
26674
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26675
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
26676
'', '', 'was inserted' FROM t0_template
26677
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
26678
ERROR 22012: Division by 0
26681
# check transactions-8 success: 1
26682
# INFO: Storage engine used for t1 seems to be able to revert
26683
# changes made by the failing statement.
26684
SET @@session.sql_mode = '';
26686
DELETE FROM t1 WHERE f_charbig = 'was inserted';
26688
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
26690
# check special-1 success: 1
26691
UPDATE t1 SET f_charbig = '';
26693
# check special-2 success: 1
26694
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
26695
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26696
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
26697
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26698
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26699
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26700
'just inserted' FROM t0_template
26701
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26702
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
26704
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26705
f_charbig = 'updated by trigger'
26706
WHERE f_int1 = new.f_int1;
26708
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26709
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26710
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26712
# check trigger-1 success: 1
26713
DROP TRIGGER trg_1;
26714
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26715
f_int2 = CAST(f_char1 AS SIGNED INT),
26716
f_charbig = 'just inserted'
26717
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26719
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26720
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26721
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26722
'just inserted' FROM t0_template
26723
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26724
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
26726
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26727
f_charbig = 'updated by trigger'
26728
WHERE f_int1 = new.f_int1;
26730
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26731
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
26732
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26734
# check trigger-2 success: 1
26735
DROP TRIGGER trg_1;
26736
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26737
f_int2 = CAST(f_char1 AS SIGNED INT),
26738
f_charbig = 'just inserted'
26739
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26741
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26742
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26743
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26744
'just inserted' FROM t0_template
26745
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26746
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26748
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26749
f_charbig = 'updated by trigger'
26750
WHERE f_int1 = new.f_int1;
26752
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26753
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26755
# check trigger-3 success: 1
26756
DROP TRIGGER trg_1;
26757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26758
f_int2 = CAST(f_char1 AS SIGNED INT),
26759
f_charbig = 'just inserted'
26760
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26762
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26763
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26764
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26765
'just inserted' FROM t0_template
26766
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26767
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
26769
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26770
f_charbig = 'updated by trigger'
26771
WHERE f_int1 = - old.f_int1;
26773
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26774
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26776
# check trigger-4 success: 1
26777
DROP TRIGGER trg_1;
26778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26779
f_int2 = CAST(f_char1 AS SIGNED INT),
26780
f_charbig = 'just inserted'
26781
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26783
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26784
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26785
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26786
'just inserted' FROM t0_template
26787
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26788
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26790
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26791
f_charbig = 'updated by trigger'
26792
WHERE f_int1 = new.f_int1;
26794
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26795
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26797
# check trigger-5 success: 1
26798
DROP TRIGGER trg_1;
26799
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26800
f_int2 = CAST(f_char1 AS SIGNED INT),
26801
f_charbig = 'just inserted'
26802
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26804
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26805
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26806
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26807
'just inserted' FROM t0_template
26808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26809
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
26811
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26812
f_charbig = 'updated by trigger'
26813
WHERE f_int1 = - old.f_int1;
26815
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
26816
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26818
# check trigger-6 success: 1
26819
DROP TRIGGER trg_1;
26820
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26821
f_int2 = CAST(f_char1 AS SIGNED INT),
26822
f_charbig = 'just inserted'
26823
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26825
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26826
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26827
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26828
'just inserted' FROM t0_template
26829
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26830
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
26832
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26833
f_charbig = 'updated by trigger'
26834
WHERE f_int1 = - old.f_int1;
26837
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26839
# check trigger-7 success: 1
26840
DROP TRIGGER trg_1;
26841
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26842
f_int2 = CAST(f_char1 AS SIGNED INT),
26843
f_charbig = 'just inserted'
26844
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26846
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26847
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
26848
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
26849
'just inserted' FROM t0_template
26850
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26851
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
26853
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
26854
f_charbig = 'updated by trigger'
26855
WHERE f_int1 = - old.f_int1;
26858
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
26860
# check trigger-8 success: 1
26861
DROP TRIGGER trg_1;
26862
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26863
f_int2 = CAST(f_char1 AS SIGNED INT),
26864
f_charbig = 'just inserted'
26865
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
26867
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26869
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
26870
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26872
SET new.f_int1 = old.f_int1 + @max_row,
26873
new.f_int2 = old.f_int2 - @max_row,
26874
new.f_charbig = '####updated per update trigger####';
26877
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26878
f_charbig = '####updated per update statement itself####';
26880
# check trigger-9 success: 1
26881
DROP TRIGGER trg_2;
26882
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26883
f_int2 = CAST(f_char1 AS SIGNED INT),
26884
f_charbig = CONCAT('===',f_char1,'===');
26885
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
26887
SET new.f_int1 = new.f_int1 + @max_row,
26888
new.f_int2 = new.f_int2 - @max_row,
26889
new.f_charbig = '####updated per update trigger####';
26892
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
26893
f_charbig = '####updated per update statement itself####';
26895
# check trigger-10 success: 1
26896
DROP TRIGGER trg_2;
26897
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
26898
f_int2 = CAST(f_char1 AS SIGNED INT),
26899
f_charbig = CONCAT('===',f_char1,'===');
26900
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26902
SET new.f_int1 = @my_max1 + @counter,
26903
new.f_int2 = @my_min2 - @counter,
26904
new.f_charbig = '####updated per insert trigger####';
26905
SET @counter = @counter + 1;
26908
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26909
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
26910
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
26911
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26912
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26914
DROP TRIGGER trg_3;
26916
# check trigger-11 success: 1
26918
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26919
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26920
AND f_charbig = '####updated per insert trigger####';
26921
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
26923
SET new.f_int1 = @my_max1 + @counter,
26924
new.f_int2 = @my_min2 - @counter,
26925
new.f_charbig = '####updated per insert trigger####';
26926
SET @counter = @counter + 1;
26929
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
26930
INSERT INTO t1 (f_char1, f_char2, f_charbig)
26931
SELECT CAST(f_int1 AS CHAR),
26932
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
26933
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
26935
DROP TRIGGER trg_3;
26937
# check trigger-12 success: 1
26939
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
26940
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
26941
AND f_charbig = '####updated per insert trigger####';
26943
Table Op Msg_type Msg_text
26944
test.t1 analyze status OK
26945
CHECK TABLE t1 EXTENDED;
26946
Table Op Msg_type Msg_text
26947
test.t1 check status OK
26948
CHECKSUM TABLE t1 EXTENDED;
26950
test.t1 <some_value>
26952
Table Op Msg_type Msg_text
26953
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
26954
test.t1 optimize status OK
26955
# check layout success: 1
26956
REPAIR TABLE t1 EXTENDED;
26957
Table Op Msg_type Msg_text
26958
test.t1 repair note The storage engine for the table doesn't support repair
26959
# check layout success: 1
26962
# check TRUNCATE success: 1
26963
# check layout success: 1
26964
# End usability test (inc/partition_check.inc)
26971
f_charbig VARCHAR(1000)
26972
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
26974
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
26975
(PARTITION parta VALUES LESS THAN (0),
26976
PARTITION partb VALUES LESS THAN (5),
26977
PARTITION partc VALUES LESS THAN (10),
26978
PARTITION partd VALUES LESS THAN (10 + 5),
26979
PARTITION parte VALUES LESS THAN (20),
26980
PARTITION partf VALUES LESS THAN (2147483646));
26981
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26982
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26983
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
26984
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
26985
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
26986
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
26987
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
26988
# Start usability test (inc/partition_check.inc)
26990
SHOW CREATE TABLE t1;
26992
t1 CREATE TABLE `t1` (
26993
`f_int1` int(11) NOT NULL DEFAULT '0',
26994
`f_int2` int(11) NOT NULL DEFAULT '0',
26995
`f_char1` char(20) DEFAULT NULL,
26996
`f_char2` char(20) DEFAULT NULL,
26997
`f_charbig` varchar(1000) DEFAULT NULL
26998
) ENGINE=InnoDB DEFAULT CHARSET=latin1
26999
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
27000
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
27001
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
27002
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
27003
PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
27004
PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
27005
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
27007
# check prerequisites-1 success: 1
27008
# check COUNT(*) success: 1
27009
# check MIN/MAX(f_int1) success: 1
27010
# check MIN/MAX(f_int2) success: 1
27011
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27012
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27013
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27014
WHERE f_int1 IN (2,3);
27015
# check prerequisites-3 success: 1
27016
DELETE FROM t1 WHERE f_charbig = 'delete me';
27017
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
27018
# check read via f_int1 success: 1
27019
# check read via f_int2 success: 1
27021
# check multiple-1 success: 1
27022
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27024
# check multiple-2 success: 1
27025
INSERT INTO t1 SELECT * FROM t0_template
27026
WHERE MOD(f_int1,3) = 0;
27028
# check multiple-3 success: 1
27029
UPDATE t1 SET f_int1 = f_int1 + @max_row
27030
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27031
AND @max_row_div2 + @max_row_div4;
27033
# check multiple-4 success: 1
27035
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27036
AND @max_row_div2 + @max_row_div4 + @max_row;
27038
# check multiple-5 success: 1
27039
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27041
SET f_int1 = @cur_value , f_int2 = @cur_value,
27042
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27043
f_charbig = '#SINGLE#';
27045
# check single-1 success: 1
27046
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27048
SET f_int1 = @cur_value , f_int2 = @cur_value,
27049
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27050
f_charbig = '#SINGLE#';
27052
# check single-2 success: 1
27053
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27054
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27055
UPDATE t1 SET f_int1 = @cur_value2
27056
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27058
# check single-3 success: 1
27059
SET @cur_value1= -1;
27060
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27061
UPDATE t1 SET f_int1 = @cur_value1
27062
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27064
# check single-4 success: 1
27065
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27066
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27068
# check single-5 success: 1
27069
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27071
# check single-6 success: 1
27072
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27073
ERROR HY000: Table has no partition for value 2147483647
27074
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27075
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27076
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27077
f_charbig = '#NULL#';
27079
SET f_int1 = NULL , f_int2 = -@max_row,
27080
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27081
f_charbig = '#NULL#';
27082
ERROR 23000: Column 'f_int1' cannot be null
27083
# check null success: 1
27085
WHERE f_int1 = 0 AND f_int2 = 0
27086
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27087
AND f_charbig = '#NULL#';
27089
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27090
SELECT f_int1, f_int1, '', '', 'was inserted'
27091
FROM t0_template source_tab
27092
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27094
# check transactions-1 success: 1
27097
# check transactions-2 success: 1
27100
# check transactions-3 success: 1
27101
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27105
# check transactions-4 success: 1
27106
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27107
SELECT f_int1, f_int1, '', '', 'was inserted'
27108
FROM t0_template source_tab
27109
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27111
# check transactions-5 success: 1
27114
# check transactions-6 success: 1
27115
# INFO: Storage engine used for t1 seems to be transactional.
27118
# check transactions-7 success: 1
27119
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27121
SET @@session.sql_mode = 'traditional';
27122
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27123
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27124
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27125
'', '', 'was inserted' FROM t0_template
27126
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27127
ERROR 22012: Division by 0
27130
# check transactions-8 success: 1
27131
# INFO: Storage engine used for t1 seems to be able to revert
27132
# changes made by the failing statement.
27133
SET @@session.sql_mode = '';
27135
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27137
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27139
# check special-1 success: 1
27140
UPDATE t1 SET f_charbig = '';
27142
# check special-2 success: 1
27143
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27144
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27145
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27146
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27147
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27148
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27149
'just inserted' FROM t0_template
27150
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27151
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27153
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27154
f_charbig = 'updated by trigger'
27155
WHERE f_int1 = new.f_int1;
27157
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27158
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27159
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27161
# check trigger-1 success: 1
27162
DROP TRIGGER trg_1;
27163
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27164
f_int2 = CAST(f_char1 AS SIGNED INT),
27165
f_charbig = 'just inserted'
27166
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27168
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27169
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27170
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27171
'just inserted' FROM t0_template
27172
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27173
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27175
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27176
f_charbig = 'updated by trigger'
27177
WHERE f_int1 = new.f_int1;
27179
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27180
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27181
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27183
# check trigger-2 success: 1
27184
DROP TRIGGER trg_1;
27185
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27186
f_int2 = CAST(f_char1 AS SIGNED INT),
27187
f_charbig = 'just inserted'
27188
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27190
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27191
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27192
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27193
'just inserted' FROM t0_template
27194
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27195
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27197
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27198
f_charbig = 'updated by trigger'
27199
WHERE f_int1 = new.f_int1;
27201
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27202
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27204
# check trigger-3 success: 1
27205
DROP TRIGGER trg_1;
27206
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27207
f_int2 = CAST(f_char1 AS SIGNED INT),
27208
f_charbig = 'just inserted'
27209
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27211
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27212
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27213
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27214
'just inserted' FROM t0_template
27215
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27216
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27218
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27219
f_charbig = 'updated by trigger'
27220
WHERE f_int1 = - old.f_int1;
27222
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27223
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27225
# check trigger-4 success: 1
27226
DROP TRIGGER trg_1;
27227
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27228
f_int2 = CAST(f_char1 AS SIGNED INT),
27229
f_charbig = 'just inserted'
27230
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27232
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27233
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27234
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27235
'just inserted' FROM t0_template
27236
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27237
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27239
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27240
f_charbig = 'updated by trigger'
27241
WHERE f_int1 = new.f_int1;
27243
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27244
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27246
# check trigger-5 success: 1
27247
DROP TRIGGER trg_1;
27248
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27249
f_int2 = CAST(f_char1 AS SIGNED INT),
27250
f_charbig = 'just inserted'
27251
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27253
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27254
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27255
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27256
'just inserted' FROM t0_template
27257
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27258
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27260
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27261
f_charbig = 'updated by trigger'
27262
WHERE f_int1 = - old.f_int1;
27264
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27265
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27267
# check trigger-6 success: 1
27268
DROP TRIGGER trg_1;
27269
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27270
f_int2 = CAST(f_char1 AS SIGNED INT),
27271
f_charbig = 'just inserted'
27272
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27274
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27275
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27276
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27277
'just inserted' FROM t0_template
27278
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27279
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27281
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27282
f_charbig = 'updated by trigger'
27283
WHERE f_int1 = - old.f_int1;
27286
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27288
# check trigger-7 success: 1
27289
DROP TRIGGER trg_1;
27290
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27291
f_int2 = CAST(f_char1 AS SIGNED INT),
27292
f_charbig = 'just inserted'
27293
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27295
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27296
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27297
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27298
'just inserted' FROM t0_template
27299
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27300
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27302
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27303
f_charbig = 'updated by trigger'
27304
WHERE f_int1 = - old.f_int1;
27307
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27309
# check trigger-8 success: 1
27310
DROP TRIGGER trg_1;
27311
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27312
f_int2 = CAST(f_char1 AS SIGNED INT),
27313
f_charbig = 'just inserted'
27314
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27316
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27319
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27321
SET new.f_int1 = old.f_int1 + @max_row,
27322
new.f_int2 = old.f_int2 - @max_row,
27323
new.f_charbig = '####updated per update trigger####';
27326
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27327
f_charbig = '####updated per update statement itself####';
27329
# check trigger-9 success: 1
27330
DROP TRIGGER trg_2;
27331
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27332
f_int2 = CAST(f_char1 AS SIGNED INT),
27333
f_charbig = CONCAT('===',f_char1,'===');
27334
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27336
SET new.f_int1 = new.f_int1 + @max_row,
27337
new.f_int2 = new.f_int2 - @max_row,
27338
new.f_charbig = '####updated per update trigger####';
27341
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27342
f_charbig = '####updated per update statement itself####';
27344
# check trigger-10 success: 1
27345
DROP TRIGGER trg_2;
27346
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27347
f_int2 = CAST(f_char1 AS SIGNED INT),
27348
f_charbig = CONCAT('===',f_char1,'===');
27349
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27351
SET new.f_int1 = @my_max1 + @counter,
27352
new.f_int2 = @my_min2 - @counter,
27353
new.f_charbig = '####updated per insert trigger####';
27354
SET @counter = @counter + 1;
27357
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27358
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27359
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27360
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27361
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27363
DROP TRIGGER trg_3;
27365
# check trigger-11 success: 1
27367
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27368
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27369
AND f_charbig = '####updated per insert trigger####';
27370
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27372
SET new.f_int1 = @my_max1 + @counter,
27373
new.f_int2 = @my_min2 - @counter,
27374
new.f_charbig = '####updated per insert trigger####';
27375
SET @counter = @counter + 1;
27378
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27379
INSERT INTO t1 (f_char1, f_char2, f_charbig)
27380
SELECT CAST(f_int1 AS CHAR),
27381
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27382
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27384
DROP TRIGGER trg_3;
27386
# check trigger-12 success: 1
27388
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27389
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27390
AND f_charbig = '####updated per insert trigger####';
27392
Table Op Msg_type Msg_text
27393
test.t1 analyze status OK
27394
CHECK TABLE t1 EXTENDED;
27395
Table Op Msg_type Msg_text
27396
test.t1 check status OK
27397
CHECKSUM TABLE t1 EXTENDED;
27399
test.t1 <some_value>
27401
Table Op Msg_type Msg_text
27402
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
27403
test.t1 optimize status OK
27404
# check layout success: 1
27405
REPAIR TABLE t1 EXTENDED;
27406
Table Op Msg_type Msg_text
27407
test.t1 repair note The storage engine for the table doesn't support repair
27408
# check layout success: 1
27411
# check TRUNCATE success: 1
27412
# check layout success: 1
27413
# End usability test (inc/partition_check.inc)
27420
f_charbig VARCHAR(1000)
27421
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
27423
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
27424
(PARTITION parta VALUES LESS THAN (0),
27425
PARTITION partb VALUES LESS THAN (5),
27426
PARTITION partc VALUES LESS THAN (10),
27427
PARTITION partd VALUES LESS THAN (2147483646));
27428
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27429
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27430
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27431
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
27432
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27433
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27434
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27435
# Start usability test (inc/partition_check.inc)
27437
SHOW CREATE TABLE t1;
27439
t1 CREATE TABLE `t1` (
27440
`f_int1` int(11) NOT NULL DEFAULT '0',
27441
`f_int2` int(11) NOT NULL DEFAULT '0',
27442
`f_char1` char(20) DEFAULT NULL,
27443
`f_char2` char(20) DEFAULT NULL,
27444
`f_charbig` varchar(1000) DEFAULT NULL
27445
) ENGINE=InnoDB DEFAULT CHARSET=latin1
27446
/*!50100 PARTITION BY RANGE (f_int1)
27447
SUBPARTITION BY HASH (f_int2)
27449
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
27450
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
27451
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
27452
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
27454
# check prerequisites-1 success: 1
27455
# check COUNT(*) success: 1
27456
# check MIN/MAX(f_int1) success: 1
27457
# check MIN/MAX(f_int2) success: 1
27458
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27459
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27460
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27461
WHERE f_int1 IN (2,3);
27462
# check prerequisites-3 success: 1
27463
DELETE FROM t1 WHERE f_charbig = 'delete me';
27464
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
27465
# check read via f_int1 success: 1
27466
# check read via f_int2 success: 1
27468
# check multiple-1 success: 1
27469
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27471
# check multiple-2 success: 1
27472
INSERT INTO t1 SELECT * FROM t0_template
27473
WHERE MOD(f_int1,3) = 0;
27475
# check multiple-3 success: 1
27476
UPDATE t1 SET f_int1 = f_int1 + @max_row
27477
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27478
AND @max_row_div2 + @max_row_div4;
27480
# check multiple-4 success: 1
27482
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27483
AND @max_row_div2 + @max_row_div4 + @max_row;
27485
# check multiple-5 success: 1
27486
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27488
SET f_int1 = @cur_value , f_int2 = @cur_value,
27489
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27490
f_charbig = '#SINGLE#';
27492
# check single-1 success: 1
27493
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27495
SET f_int1 = @cur_value , f_int2 = @cur_value,
27496
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27497
f_charbig = '#SINGLE#';
27499
# check single-2 success: 1
27500
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27501
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27502
UPDATE t1 SET f_int1 = @cur_value2
27503
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27505
# check single-3 success: 1
27506
SET @cur_value1= -1;
27507
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27508
UPDATE t1 SET f_int1 = @cur_value1
27509
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27511
# check single-4 success: 1
27512
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27513
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27515
# check single-5 success: 1
27516
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27518
# check single-6 success: 1
27519
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27520
ERROR HY000: Table has no partition for value 2147483647
27521
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27522
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27523
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27524
f_charbig = '#NULL#';
27526
SET f_int1 = NULL , f_int2 = -@max_row,
27527
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27528
f_charbig = '#NULL#';
27529
ERROR 23000: Column 'f_int1' cannot be null
27530
# check null success: 1
27532
WHERE f_int1 = 0 AND f_int2 = 0
27533
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27534
AND f_charbig = '#NULL#';
27536
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27537
SELECT f_int1, f_int1, '', '', 'was inserted'
27538
FROM t0_template source_tab
27539
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27541
# check transactions-1 success: 1
27544
# check transactions-2 success: 1
27547
# check transactions-3 success: 1
27548
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27552
# check transactions-4 success: 1
27553
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27554
SELECT f_int1, f_int1, '', '', 'was inserted'
27555
FROM t0_template source_tab
27556
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27558
# check transactions-5 success: 1
27561
# check transactions-6 success: 1
27562
# INFO: Storage engine used for t1 seems to be transactional.
27565
# check transactions-7 success: 1
27566
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27568
SET @@session.sql_mode = 'traditional';
27569
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
27570
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27571
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
27572
'', '', 'was inserted' FROM t0_template
27573
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27574
ERROR 22012: Division by 0
27577
# check transactions-8 success: 1
27578
# INFO: Storage engine used for t1 seems to be able to revert
27579
# changes made by the failing statement.
27580
SET @@session.sql_mode = '';
27582
DELETE FROM t1 WHERE f_charbig = 'was inserted';
27584
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
27586
# check special-1 success: 1
27587
UPDATE t1 SET f_charbig = '';
27589
# check special-2 success: 1
27590
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
27591
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27592
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
27593
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27594
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27595
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27596
'just inserted' FROM t0_template
27597
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27598
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
27600
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27601
f_charbig = 'updated by trigger'
27602
WHERE f_int1 = new.f_int1;
27604
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27605
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27606
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27608
# check trigger-1 success: 1
27609
DROP TRIGGER trg_1;
27610
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27611
f_int2 = CAST(f_char1 AS SIGNED INT),
27612
f_charbig = 'just inserted'
27613
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27615
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27616
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27617
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27618
'just inserted' FROM t0_template
27619
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27620
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
27622
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27623
f_charbig = 'updated by trigger'
27624
WHERE f_int1 = new.f_int1;
27626
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27627
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
27628
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27630
# check trigger-2 success: 1
27631
DROP TRIGGER trg_1;
27632
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27633
f_int2 = CAST(f_char1 AS SIGNED INT),
27634
f_charbig = 'just inserted'
27635
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27637
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27638
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27639
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27640
'just inserted' FROM t0_template
27641
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27642
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27644
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27645
f_charbig = 'updated by trigger'
27646
WHERE f_int1 = new.f_int1;
27648
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27649
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27651
# check trigger-3 success: 1
27652
DROP TRIGGER trg_1;
27653
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27654
f_int2 = CAST(f_char1 AS SIGNED INT),
27655
f_charbig = 'just inserted'
27656
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27658
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27659
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27660
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27661
'just inserted' FROM t0_template
27662
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27663
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
27665
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27666
f_charbig = 'updated by trigger'
27667
WHERE f_int1 = - old.f_int1;
27669
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27670
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27672
# check trigger-4 success: 1
27673
DROP TRIGGER trg_1;
27674
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27675
f_int2 = CAST(f_char1 AS SIGNED INT),
27676
f_charbig = 'just inserted'
27677
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27679
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27680
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27681
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27682
'just inserted' FROM t0_template
27683
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27684
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27686
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27687
f_charbig = 'updated by trigger'
27688
WHERE f_int1 = new.f_int1;
27690
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27691
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27693
# check trigger-5 success: 1
27694
DROP TRIGGER trg_1;
27695
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27696
f_int2 = CAST(f_char1 AS SIGNED INT),
27697
f_charbig = 'just inserted'
27698
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27700
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27701
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27702
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27703
'just inserted' FROM t0_template
27704
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27705
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
27707
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27708
f_charbig = 'updated by trigger'
27709
WHERE f_int1 = - old.f_int1;
27711
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
27712
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27714
# check trigger-6 success: 1
27715
DROP TRIGGER trg_1;
27716
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27717
f_int2 = CAST(f_char1 AS SIGNED INT),
27718
f_charbig = 'just inserted'
27719
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27721
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27722
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27723
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27724
'just inserted' FROM t0_template
27725
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27726
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
27728
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27729
f_charbig = 'updated by trigger'
27730
WHERE f_int1 = - old.f_int1;
27733
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27735
# check trigger-7 success: 1
27736
DROP TRIGGER trg_1;
27737
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27738
f_int2 = CAST(f_char1 AS SIGNED INT),
27739
f_charbig = 'just inserted'
27740
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27742
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27743
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
27744
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
27745
'just inserted' FROM t0_template
27746
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27747
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
27749
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
27750
f_charbig = 'updated by trigger'
27751
WHERE f_int1 = - old.f_int1;
27754
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
27756
# check trigger-8 success: 1
27757
DROP TRIGGER trg_1;
27758
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27759
f_int2 = CAST(f_char1 AS SIGNED INT),
27760
f_charbig = 'just inserted'
27761
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
27763
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27765
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
27766
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27768
SET new.f_int1 = old.f_int1 + @max_row,
27769
new.f_int2 = old.f_int2 - @max_row,
27770
new.f_charbig = '####updated per update trigger####';
27773
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27774
f_charbig = '####updated per update statement itself####';
27776
# check trigger-9 success: 1
27777
DROP TRIGGER trg_2;
27778
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27779
f_int2 = CAST(f_char1 AS SIGNED INT),
27780
f_charbig = CONCAT('===',f_char1,'===');
27781
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
27783
SET new.f_int1 = new.f_int1 + @max_row,
27784
new.f_int2 = new.f_int2 - @max_row,
27785
new.f_charbig = '####updated per update trigger####';
27788
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
27789
f_charbig = '####updated per update statement itself####';
27791
# check trigger-10 success: 1
27792
DROP TRIGGER trg_2;
27793
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
27794
f_int2 = CAST(f_char1 AS SIGNED INT),
27795
f_charbig = CONCAT('===',f_char1,'===');
27796
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27798
SET new.f_int1 = @my_max1 + @counter,
27799
new.f_int2 = @my_min2 - @counter,
27800
new.f_charbig = '####updated per insert trigger####';
27801
SET @counter = @counter + 1;
27804
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27805
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27806
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27807
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27808
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27810
DROP TRIGGER trg_3;
27812
# check trigger-11 success: 1
27814
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27815
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27816
AND f_charbig = '####updated per insert trigger####';
27817
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
27819
SET new.f_int1 = @my_max1 + @counter,
27820
new.f_int2 = @my_min2 - @counter,
27821
new.f_charbig = '####updated per insert trigger####';
27822
SET @counter = @counter + 1;
27825
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
27826
INSERT INTO t1 (f_char1, f_char2, f_charbig)
27827
SELECT CAST(f_int1 AS CHAR),
27828
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
27829
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
27831
DROP TRIGGER trg_3;
27833
# check trigger-12 success: 1
27835
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
27836
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
27837
AND f_charbig = '####updated per insert trigger####';
27839
Table Op Msg_type Msg_text
27840
test.t1 analyze status OK
27841
CHECK TABLE t1 EXTENDED;
27842
Table Op Msg_type Msg_text
27843
test.t1 check status OK
27844
CHECKSUM TABLE t1 EXTENDED;
27846
test.t1 <some_value>
27848
Table Op Msg_type Msg_text
27849
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
27850
test.t1 optimize status OK
27851
# check layout success: 1
27852
REPAIR TABLE t1 EXTENDED;
27853
Table Op Msg_type Msg_text
27854
test.t1 repair note The storage engine for the table doesn't support repair
27855
# check layout success: 1
27858
# check TRUNCATE success: 1
27859
# check layout success: 1
27860
# End usability test (inc/partition_check.inc)
27867
f_charbig VARCHAR(1000)
27868
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
27870
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
27871
(PARTITION part1 VALUES LESS THAN (0)
27872
(SUBPARTITION subpart11, SUBPARTITION subpart12),
27873
PARTITION part2 VALUES LESS THAN (5)
27874
(SUBPARTITION subpart21, SUBPARTITION subpart22),
27875
PARTITION part3 VALUES LESS THAN (10)
27876
(SUBPARTITION subpart31, SUBPARTITION subpart32),
27877
PARTITION part4 VALUES LESS THAN (2147483646)
27878
(SUBPARTITION subpart41, SUBPARTITION subpart42));
27879
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27880
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27881
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
27882
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
27883
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
27884
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
27885
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
27886
# Start usability test (inc/partition_check.inc)
27888
SHOW CREATE TABLE t1;
27890
t1 CREATE TABLE `t1` (
27891
`f_int1` int(11) NOT NULL DEFAULT '0',
27892
`f_int2` int(11) NOT NULL DEFAULT '0',
27893
`f_char1` char(20) DEFAULT NULL,
27894
`f_char2` char(20) DEFAULT NULL,
27895
`f_charbig` varchar(1000) DEFAULT NULL
27896
) ENGINE=InnoDB DEFAULT CHARSET=latin1
27897
/*!50100 PARTITION BY RANGE (f_int1)
27898
SUBPARTITION BY KEY (f_int2)
27899
(PARTITION part1 VALUES LESS THAN (0)
27900
(SUBPARTITION subpart11 ENGINE = InnoDB,
27901
SUBPARTITION subpart12 ENGINE = InnoDB),
27902
PARTITION part2 VALUES LESS THAN (5)
27903
(SUBPARTITION subpart21 ENGINE = InnoDB,
27904
SUBPARTITION subpart22 ENGINE = InnoDB),
27905
PARTITION part3 VALUES LESS THAN (10)
27906
(SUBPARTITION subpart31 ENGINE = InnoDB,
27907
SUBPARTITION subpart32 ENGINE = InnoDB),
27908
PARTITION part4 VALUES LESS THAN (2147483646)
27909
(SUBPARTITION subpart41 ENGINE = InnoDB,
27910
SUBPARTITION subpart42 ENGINE = InnoDB)) */
27912
# check prerequisites-1 success: 1
27913
# check COUNT(*) success: 1
27914
# check MIN/MAX(f_int1) success: 1
27915
# check MIN/MAX(f_int2) success: 1
27916
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27917
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
27918
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
27919
WHERE f_int1 IN (2,3);
27920
# check prerequisites-3 success: 1
27921
DELETE FROM t1 WHERE f_charbig = 'delete me';
27922
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
27923
# check read via f_int1 success: 1
27924
# check read via f_int2 success: 1
27926
# check multiple-1 success: 1
27927
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
27929
# check multiple-2 success: 1
27930
INSERT INTO t1 SELECT * FROM t0_template
27931
WHERE MOD(f_int1,3) = 0;
27933
# check multiple-3 success: 1
27934
UPDATE t1 SET f_int1 = f_int1 + @max_row
27935
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
27936
AND @max_row_div2 + @max_row_div4;
27938
# check multiple-4 success: 1
27940
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
27941
AND @max_row_div2 + @max_row_div4 + @max_row;
27943
# check multiple-5 success: 1
27944
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
27946
SET f_int1 = @cur_value , f_int2 = @cur_value,
27947
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27948
f_charbig = '#SINGLE#';
27950
# check single-1 success: 1
27951
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
27953
SET f_int1 = @cur_value , f_int2 = @cur_value,
27954
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
27955
f_charbig = '#SINGLE#';
27957
# check single-2 success: 1
27958
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
27959
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
27960
UPDATE t1 SET f_int1 = @cur_value2
27961
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
27963
# check single-3 success: 1
27964
SET @cur_value1= -1;
27965
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
27966
UPDATE t1 SET f_int1 = @cur_value1
27967
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
27969
# check single-4 success: 1
27970
SELECT MAX(f_int1) INTO @cur_value FROM t1;
27971
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
27973
# check single-5 success: 1
27974
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
27976
# check single-6 success: 1
27977
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
27978
ERROR HY000: Table has no partition for value 2147483647
27979
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
27980
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
27981
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
27982
f_charbig = '#NULL#';
27984
SET f_int1 = NULL , f_int2 = -@max_row,
27985
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
27986
f_charbig = '#NULL#';
27987
ERROR 23000: Column 'f_int1' cannot be null
27988
# check null success: 1
27990
WHERE f_int1 = 0 AND f_int2 = 0
27991
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
27992
AND f_charbig = '#NULL#';
27994
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
27995
SELECT f_int1, f_int1, '', '', 'was inserted'
27996
FROM t0_template source_tab
27997
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
27999
# check transactions-1 success: 1
28002
# check transactions-2 success: 1
28005
# check transactions-3 success: 1
28006
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28010
# check transactions-4 success: 1
28011
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28012
SELECT f_int1, f_int1, '', '', 'was inserted'
28013
FROM t0_template source_tab
28014
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28016
# check transactions-5 success: 1
28019
# check transactions-6 success: 1
28020
# INFO: Storage engine used for t1 seems to be transactional.
28023
# check transactions-7 success: 1
28024
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28026
SET @@session.sql_mode = 'traditional';
28027
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28028
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28029
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28030
'', '', 'was inserted' FROM t0_template
28031
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28032
ERROR 22012: Division by 0
28035
# check transactions-8 success: 1
28036
# INFO: Storage engine used for t1 seems to be able to revert
28037
# changes made by the failing statement.
28038
SET @@session.sql_mode = '';
28040
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28042
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28044
# check special-1 success: 1
28045
UPDATE t1 SET f_charbig = '';
28047
# check special-2 success: 1
28048
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28049
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28050
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28051
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28052
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28053
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28054
'just inserted' FROM t0_template
28055
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28056
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28058
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28059
f_charbig = 'updated by trigger'
28060
WHERE f_int1 = new.f_int1;
28062
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28063
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28064
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28066
# check trigger-1 success: 1
28067
DROP TRIGGER trg_1;
28068
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28069
f_int2 = CAST(f_char1 AS SIGNED INT),
28070
f_charbig = 'just inserted'
28071
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28073
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28074
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28075
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28076
'just inserted' FROM t0_template
28077
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28078
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28080
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28081
f_charbig = 'updated by trigger'
28082
WHERE f_int1 = new.f_int1;
28084
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28085
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28086
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28088
# check trigger-2 success: 1
28089
DROP TRIGGER trg_1;
28090
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28091
f_int2 = CAST(f_char1 AS SIGNED INT),
28092
f_charbig = 'just inserted'
28093
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28095
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28096
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28097
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28098
'just inserted' FROM t0_template
28099
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28100
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28102
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28103
f_charbig = 'updated by trigger'
28104
WHERE f_int1 = new.f_int1;
28106
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28107
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28109
# check trigger-3 success: 1
28110
DROP TRIGGER trg_1;
28111
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28112
f_int2 = CAST(f_char1 AS SIGNED INT),
28113
f_charbig = 'just inserted'
28114
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28116
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28117
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28118
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28119
'just inserted' FROM t0_template
28120
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28121
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28123
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28124
f_charbig = 'updated by trigger'
28125
WHERE f_int1 = - old.f_int1;
28127
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28128
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28130
# check trigger-4 success: 1
28131
DROP TRIGGER trg_1;
28132
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28133
f_int2 = CAST(f_char1 AS SIGNED INT),
28134
f_charbig = 'just inserted'
28135
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28137
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28138
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28139
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28140
'just inserted' FROM t0_template
28141
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28142
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28144
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28145
f_charbig = 'updated by trigger'
28146
WHERE f_int1 = new.f_int1;
28148
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28149
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28151
# check trigger-5 success: 1
28152
DROP TRIGGER trg_1;
28153
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28154
f_int2 = CAST(f_char1 AS SIGNED INT),
28155
f_charbig = 'just inserted'
28156
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28158
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28159
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28160
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28161
'just inserted' FROM t0_template
28162
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28163
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28165
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28166
f_charbig = 'updated by trigger'
28167
WHERE f_int1 = - old.f_int1;
28169
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28170
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28172
# check trigger-6 success: 1
28173
DROP TRIGGER trg_1;
28174
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28175
f_int2 = CAST(f_char1 AS SIGNED INT),
28176
f_charbig = 'just inserted'
28177
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28179
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28180
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28181
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28182
'just inserted' FROM t0_template
28183
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28184
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28186
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28187
f_charbig = 'updated by trigger'
28188
WHERE f_int1 = - old.f_int1;
28191
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28193
# check trigger-7 success: 1
28194
DROP TRIGGER trg_1;
28195
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28196
f_int2 = CAST(f_char1 AS SIGNED INT),
28197
f_charbig = 'just inserted'
28198
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28200
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28201
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28202
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28203
'just inserted' FROM t0_template
28204
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28205
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28207
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28208
f_charbig = 'updated by trigger'
28209
WHERE f_int1 = - old.f_int1;
28212
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28214
# check trigger-8 success: 1
28215
DROP TRIGGER trg_1;
28216
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28217
f_int2 = CAST(f_char1 AS SIGNED INT),
28218
f_charbig = 'just inserted'
28219
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28221
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28223
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28224
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28226
SET new.f_int1 = old.f_int1 + @max_row,
28227
new.f_int2 = old.f_int2 - @max_row,
28228
new.f_charbig = '####updated per update trigger####';
28231
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28232
f_charbig = '####updated per update statement itself####';
28234
# check trigger-9 success: 1
28235
DROP TRIGGER trg_2;
28236
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28237
f_int2 = CAST(f_char1 AS SIGNED INT),
28238
f_charbig = CONCAT('===',f_char1,'===');
28239
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28241
SET new.f_int1 = new.f_int1 + @max_row,
28242
new.f_int2 = new.f_int2 - @max_row,
28243
new.f_charbig = '####updated per update trigger####';
28246
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28247
f_charbig = '####updated per update statement itself####';
28249
# check trigger-10 success: 1
28250
DROP TRIGGER trg_2;
28251
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28252
f_int2 = CAST(f_char1 AS SIGNED INT),
28253
f_charbig = CONCAT('===',f_char1,'===');
28254
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28256
SET new.f_int1 = @my_max1 + @counter,
28257
new.f_int2 = @my_min2 - @counter,
28258
new.f_charbig = '####updated per insert trigger####';
28259
SET @counter = @counter + 1;
28262
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28263
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28264
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28265
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28266
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28268
DROP TRIGGER trg_3;
28270
# check trigger-11 success: 1
28272
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28273
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28274
AND f_charbig = '####updated per insert trigger####';
28275
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28277
SET new.f_int1 = @my_max1 + @counter,
28278
new.f_int2 = @my_min2 - @counter,
28279
new.f_charbig = '####updated per insert trigger####';
28280
SET @counter = @counter + 1;
28283
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28284
INSERT INTO t1 (f_char1, f_char2, f_charbig)
28285
SELECT CAST(f_int1 AS CHAR),
28286
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28287
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28289
DROP TRIGGER trg_3;
28291
# check trigger-12 success: 1
28293
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28294
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28295
AND f_charbig = '####updated per insert trigger####';
28297
Table Op Msg_type Msg_text
28298
test.t1 analyze status OK
28299
CHECK TABLE t1 EXTENDED;
28300
Table Op Msg_type Msg_text
28301
test.t1 check status OK
28302
CHECKSUM TABLE t1 EXTENDED;
28304
test.t1 <some_value>
28306
Table Op Msg_type Msg_text
28307
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
28308
test.t1 optimize status OK
28309
# check layout success: 1
28310
REPAIR TABLE t1 EXTENDED;
28311
Table Op Msg_type Msg_text
28312
test.t1 repair note The storage engine for the table doesn't support repair
28313
# check layout success: 1
28316
# check TRUNCATE success: 1
28317
# check layout success: 1
28318
# End usability test (inc/partition_check.inc)
28325
f_charbig VARCHAR(1000)
28326
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
28328
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
28329
(PARTITION part1 VALUES IN (0)
28330
(SUBPARTITION sp11, SUBPARTITION sp12),
28331
PARTITION part2 VALUES IN (1)
28332
(SUBPARTITION sp21, SUBPARTITION sp22),
28333
PARTITION part3 VALUES IN (2)
28334
(SUBPARTITION sp31, SUBPARTITION sp32),
28335
PARTITION part4 VALUES IN (NULL)
28336
(SUBPARTITION sp41, SUBPARTITION sp42));
28337
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28338
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28339
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28340
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
28341
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28342
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28343
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28344
# Start usability test (inc/partition_check.inc)
28346
SHOW CREATE TABLE t1;
28348
t1 CREATE TABLE `t1` (
28349
`f_int1` int(11) NOT NULL DEFAULT '0',
28350
`f_int2` int(11) NOT NULL DEFAULT '0',
28351
`f_char1` char(20) DEFAULT NULL,
28352
`f_char2` char(20) DEFAULT NULL,
28353
`f_charbig` varchar(1000) DEFAULT NULL
28354
) ENGINE=InnoDB DEFAULT CHARSET=latin1
28355
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
28356
SUBPARTITION BY HASH (f_int2 + 1)
28357
(PARTITION part1 VALUES IN (0)
28358
(SUBPARTITION sp11 ENGINE = InnoDB,
28359
SUBPARTITION sp12 ENGINE = InnoDB),
28360
PARTITION part2 VALUES IN (1)
28361
(SUBPARTITION sp21 ENGINE = InnoDB,
28362
SUBPARTITION sp22 ENGINE = InnoDB),
28363
PARTITION part3 VALUES IN (2)
28364
(SUBPARTITION sp31 ENGINE = InnoDB,
28365
SUBPARTITION sp32 ENGINE = InnoDB),
28366
PARTITION part4 VALUES IN (NULL)
28367
(SUBPARTITION sp41 ENGINE = InnoDB,
28368
SUBPARTITION sp42 ENGINE = InnoDB)) */
28370
# check prerequisites-1 success: 1
28371
# check COUNT(*) success: 1
28372
# check MIN/MAX(f_int1) success: 1
28373
# check MIN/MAX(f_int2) success: 1
28374
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28375
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28376
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28377
WHERE f_int1 IN (2,3);
28378
# check prerequisites-3 success: 1
28379
DELETE FROM t1 WHERE f_charbig = 'delete me';
28380
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
28381
# check read via f_int1 success: 1
28382
# check read via f_int2 success: 1
28384
# check multiple-1 success: 1
28385
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28387
# check multiple-2 success: 1
28388
INSERT INTO t1 SELECT * FROM t0_template
28389
WHERE MOD(f_int1,3) = 0;
28391
# check multiple-3 success: 1
28392
UPDATE t1 SET f_int1 = f_int1 + @max_row
28393
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28394
AND @max_row_div2 + @max_row_div4;
28396
# check multiple-4 success: 1
28398
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28399
AND @max_row_div2 + @max_row_div4 + @max_row;
28401
# check multiple-5 success: 1
28402
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28404
SET f_int1 = @cur_value , f_int2 = @cur_value,
28405
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28406
f_charbig = '#SINGLE#';
28408
# check single-1 success: 1
28409
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28411
SET f_int1 = @cur_value , f_int2 = @cur_value,
28412
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28413
f_charbig = '#SINGLE#';
28415
# check single-2 success: 1
28416
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28417
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28418
UPDATE t1 SET f_int1 = @cur_value2
28419
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28421
# check single-3 success: 1
28422
SET @cur_value1= -1;
28423
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28424
UPDATE t1 SET f_int1 = @cur_value1
28425
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28427
# check single-4 success: 1
28428
SELECT MAX(f_int1) INTO @cur_value FROM t1;
28429
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28431
# check single-5 success: 1
28432
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28434
# check single-6 success: 1
28435
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28437
# check single-7 success: 1
28438
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28439
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28440
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28441
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28442
f_charbig = '#NULL#';
28444
SET f_int1 = NULL , f_int2 = -@max_row,
28445
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28446
f_charbig = '#NULL#';
28447
ERROR 23000: Column 'f_int1' cannot be null
28448
# check null success: 1
28450
WHERE f_int1 = 0 AND f_int2 = 0
28451
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28452
AND f_charbig = '#NULL#';
28454
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28455
SELECT f_int1, f_int1, '', '', 'was inserted'
28456
FROM t0_template source_tab
28457
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28459
# check transactions-1 success: 1
28462
# check transactions-2 success: 1
28465
# check transactions-3 success: 1
28466
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28470
# check transactions-4 success: 1
28471
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28472
SELECT f_int1, f_int1, '', '', 'was inserted'
28473
FROM t0_template source_tab
28474
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28476
# check transactions-5 success: 1
28479
# check transactions-6 success: 1
28480
# INFO: Storage engine used for t1 seems to be transactional.
28483
# check transactions-7 success: 1
28484
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28486
SET @@session.sql_mode = 'traditional';
28487
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28488
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28489
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28490
'', '', 'was inserted' FROM t0_template
28491
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28492
ERROR 22012: Division by 0
28495
# check transactions-8 success: 1
28496
# INFO: Storage engine used for t1 seems to be able to revert
28497
# changes made by the failing statement.
28498
SET @@session.sql_mode = '';
28500
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28502
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28504
# check special-1 success: 1
28505
UPDATE t1 SET f_charbig = '';
28507
# check special-2 success: 1
28508
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28509
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28510
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28511
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28512
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28513
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28514
'just inserted' FROM t0_template
28515
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28516
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28518
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28519
f_charbig = 'updated by trigger'
28520
WHERE f_int1 = new.f_int1;
28522
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28523
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28524
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28526
# check trigger-1 success: 1
28527
DROP TRIGGER trg_1;
28528
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28529
f_int2 = CAST(f_char1 AS SIGNED INT),
28530
f_charbig = 'just inserted'
28531
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28533
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28534
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28535
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28536
'just inserted' FROM t0_template
28537
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28538
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28540
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28541
f_charbig = 'updated by trigger'
28542
WHERE f_int1 = new.f_int1;
28544
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28545
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28546
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28548
# check trigger-2 success: 1
28549
DROP TRIGGER trg_1;
28550
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28551
f_int2 = CAST(f_char1 AS SIGNED INT),
28552
f_charbig = 'just inserted'
28553
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28555
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28556
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28557
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28558
'just inserted' FROM t0_template
28559
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28560
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28562
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28563
f_charbig = 'updated by trigger'
28564
WHERE f_int1 = new.f_int1;
28566
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28567
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28569
# check trigger-3 success: 1
28570
DROP TRIGGER trg_1;
28571
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28572
f_int2 = CAST(f_char1 AS SIGNED INT),
28573
f_charbig = 'just inserted'
28574
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28576
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28577
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28578
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28579
'just inserted' FROM t0_template
28580
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28581
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
28583
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28584
f_charbig = 'updated by trigger'
28585
WHERE f_int1 = - old.f_int1;
28587
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28588
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28590
# check trigger-4 success: 1
28591
DROP TRIGGER trg_1;
28592
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28593
f_int2 = CAST(f_char1 AS SIGNED INT),
28594
f_charbig = 'just inserted'
28595
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28597
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28598
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28599
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28600
'just inserted' FROM t0_template
28601
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28602
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28604
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28605
f_charbig = 'updated by trigger'
28606
WHERE f_int1 = new.f_int1;
28608
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28609
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28611
# check trigger-5 success: 1
28612
DROP TRIGGER trg_1;
28613
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28614
f_int2 = CAST(f_char1 AS SIGNED INT),
28615
f_charbig = 'just inserted'
28616
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28618
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28619
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28620
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28621
'just inserted' FROM t0_template
28622
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28623
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
28625
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28626
f_charbig = 'updated by trigger'
28627
WHERE f_int1 = - old.f_int1;
28629
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
28630
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28632
# check trigger-6 success: 1
28633
DROP TRIGGER trg_1;
28634
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28635
f_int2 = CAST(f_char1 AS SIGNED INT),
28636
f_charbig = 'just inserted'
28637
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28639
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28640
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28641
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28642
'just inserted' FROM t0_template
28643
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28644
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
28646
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28647
f_charbig = 'updated by trigger'
28648
WHERE f_int1 = - old.f_int1;
28651
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28653
# check trigger-7 success: 1
28654
DROP TRIGGER trg_1;
28655
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28656
f_int2 = CAST(f_char1 AS SIGNED INT),
28657
f_charbig = 'just inserted'
28658
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28660
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28661
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28662
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28663
'just inserted' FROM t0_template
28664
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28665
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
28667
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28668
f_charbig = 'updated by trigger'
28669
WHERE f_int1 = - old.f_int1;
28672
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
28674
# check trigger-8 success: 1
28675
DROP TRIGGER trg_1;
28676
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28677
f_int2 = CAST(f_char1 AS SIGNED INT),
28678
f_charbig = 'just inserted'
28679
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28681
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28683
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28684
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28686
SET new.f_int1 = old.f_int1 + @max_row,
28687
new.f_int2 = old.f_int2 - @max_row,
28688
new.f_charbig = '####updated per update trigger####';
28691
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28692
f_charbig = '####updated per update statement itself####';
28694
# check trigger-9 success: 1
28695
DROP TRIGGER trg_2;
28696
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28697
f_int2 = CAST(f_char1 AS SIGNED INT),
28698
f_charbig = CONCAT('===',f_char1,'===');
28699
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
28701
SET new.f_int1 = new.f_int1 + @max_row,
28702
new.f_int2 = new.f_int2 - @max_row,
28703
new.f_charbig = '####updated per update trigger####';
28706
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
28707
f_charbig = '####updated per update statement itself####';
28709
# check trigger-10 success: 1
28710
DROP TRIGGER trg_2;
28711
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28712
f_int2 = CAST(f_char1 AS SIGNED INT),
28713
f_charbig = CONCAT('===',f_char1,'===');
28714
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28716
SET new.f_int1 = @my_max1 + @counter,
28717
new.f_int2 = @my_min2 - @counter,
28718
new.f_charbig = '####updated per insert trigger####';
28719
SET @counter = @counter + 1;
28722
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28723
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28724
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28725
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28726
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28728
DROP TRIGGER trg_3;
28730
# check trigger-11 success: 1
28732
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28733
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28734
AND f_charbig = '####updated per insert trigger####';
28735
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
28737
SET new.f_int1 = @my_max1 + @counter,
28738
new.f_int2 = @my_min2 - @counter,
28739
new.f_charbig = '####updated per insert trigger####';
28740
SET @counter = @counter + 1;
28743
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
28744
INSERT INTO t1 (f_char1, f_char2, f_charbig)
28745
SELECT CAST(f_int1 AS CHAR),
28746
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
28747
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
28749
DROP TRIGGER trg_3;
28751
# check trigger-12 success: 1
28753
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
28754
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
28755
AND f_charbig = '####updated per insert trigger####';
28757
Table Op Msg_type Msg_text
28758
test.t1 analyze status OK
28759
CHECK TABLE t1 EXTENDED;
28760
Table Op Msg_type Msg_text
28761
test.t1 check status OK
28762
CHECKSUM TABLE t1 EXTENDED;
28764
test.t1 <some_value>
28766
Table Op Msg_type Msg_text
28767
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
28768
test.t1 optimize status OK
28769
# check layout success: 1
28770
REPAIR TABLE t1 EXTENDED;
28771
Table Op Msg_type Msg_text
28772
test.t1 repair note The storage engine for the table doesn't support repair
28773
# check layout success: 1
28776
# check TRUNCATE success: 1
28777
# check layout success: 1
28778
# End usability test (inc/partition_check.inc)
28785
f_charbig VARCHAR(1000)
28786
, UNIQUE INDEX uidx1 (f_int1,f_int2), PRIMARY KEY(f_int2,f_int1)
28788
PARTITION BY LIST(ABS(MOD(f_int1,2)))
28789
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
28790
(PARTITION part1 VALUES IN (0),
28791
PARTITION part2 VALUES IN (1),
28792
PARTITION part3 VALUES IN (NULL));
28793
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28794
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28795
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
28796
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
28797
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28798
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
28799
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
28800
# Start usability test (inc/partition_check.inc)
28802
SHOW CREATE TABLE t1;
28804
t1 CREATE TABLE `t1` (
28805
`f_int1` int(11) NOT NULL DEFAULT '0',
28806
`f_int2` int(11) NOT NULL DEFAULT '0',
28807
`f_char1` char(20) DEFAULT NULL,
28808
`f_char2` char(20) DEFAULT NULL,
28809
`f_charbig` varchar(1000) DEFAULT NULL
28810
) ENGINE=InnoDB DEFAULT CHARSET=latin1
28811
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
28812
SUBPARTITION BY KEY (f_int2)
28814
(PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
28815
PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
28816
PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
28818
# check prerequisites-1 success: 1
28819
# check COUNT(*) success: 1
28820
# check MIN/MAX(f_int1) success: 1
28821
# check MIN/MAX(f_int2) success: 1
28822
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28823
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
28824
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
28825
WHERE f_int1 IN (2,3);
28826
# check prerequisites-3 success: 1
28827
DELETE FROM t1 WHERE f_charbig = 'delete me';
28828
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
28829
# check read via f_int1 success: 1
28830
# check read via f_int2 success: 1
28832
# check multiple-1 success: 1
28833
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
28835
# check multiple-2 success: 1
28836
INSERT INTO t1 SELECT * FROM t0_template
28837
WHERE MOD(f_int1,3) = 0;
28839
# check multiple-3 success: 1
28840
UPDATE t1 SET f_int1 = f_int1 + @max_row
28841
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
28842
AND @max_row_div2 + @max_row_div4;
28844
# check multiple-4 success: 1
28846
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
28847
AND @max_row_div2 + @max_row_div4 + @max_row;
28849
# check multiple-5 success: 1
28850
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
28852
SET f_int1 = @cur_value , f_int2 = @cur_value,
28853
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28854
f_charbig = '#SINGLE#';
28856
# check single-1 success: 1
28857
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
28859
SET f_int1 = @cur_value , f_int2 = @cur_value,
28860
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
28861
f_charbig = '#SINGLE#';
28863
# check single-2 success: 1
28864
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
28865
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
28866
UPDATE t1 SET f_int1 = @cur_value2
28867
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
28869
# check single-3 success: 1
28870
SET @cur_value1= -1;
28871
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
28872
UPDATE t1 SET f_int1 = @cur_value1
28873
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
28875
# check single-4 success: 1
28876
SELECT MAX(f_int1) INTO @cur_value FROM t1;
28877
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
28879
# check single-5 success: 1
28880
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
28882
# check single-6 success: 1
28883
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
28885
# check single-7 success: 1
28886
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
28887
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
28888
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
28889
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
28890
f_charbig = '#NULL#';
28892
SET f_int1 = NULL , f_int2 = -@max_row,
28893
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
28894
f_charbig = '#NULL#';
28895
ERROR 23000: Column 'f_int1' cannot be null
28896
# check null success: 1
28898
WHERE f_int1 = 0 AND f_int2 = 0
28899
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
28900
AND f_charbig = '#NULL#';
28902
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28903
SELECT f_int1, f_int1, '', '', 'was inserted'
28904
FROM t0_template source_tab
28905
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28907
# check transactions-1 success: 1
28910
# check transactions-2 success: 1
28913
# check transactions-3 success: 1
28914
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28918
# check transactions-4 success: 1
28919
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28920
SELECT f_int1, f_int1, '', '', 'was inserted'
28921
FROM t0_template source_tab
28922
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28924
# check transactions-5 success: 1
28927
# check transactions-6 success: 1
28928
# INFO: Storage engine used for t1 seems to be transactional.
28931
# check transactions-7 success: 1
28932
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28934
SET @@session.sql_mode = 'traditional';
28935
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
28936
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
28937
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
28938
'', '', 'was inserted' FROM t0_template
28939
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
28940
ERROR 22012: Division by 0
28943
# check transactions-8 success: 1
28944
# INFO: Storage engine used for t1 seems to be able to revert
28945
# changes made by the failing statement.
28946
SET @@session.sql_mode = '';
28948
DELETE FROM t1 WHERE f_charbig = 'was inserted';
28950
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
28952
# check special-1 success: 1
28953
UPDATE t1 SET f_charbig = '';
28955
# check special-2 success: 1
28956
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
28957
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
28958
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
28959
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28960
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28961
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28962
'just inserted' FROM t0_template
28963
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28964
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
28966
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28967
f_charbig = 'updated by trigger'
28968
WHERE f_int1 = new.f_int1;
28970
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28971
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28972
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28974
# check trigger-1 success: 1
28975
DROP TRIGGER trg_1;
28976
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28977
f_int2 = CAST(f_char1 AS SIGNED INT),
28978
f_charbig = 'just inserted'
28979
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
28981
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28982
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28983
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
28984
'just inserted' FROM t0_template
28985
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28986
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
28988
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
28989
f_charbig = 'updated by trigger'
28990
WHERE f_int1 = new.f_int1;
28992
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
28993
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
28994
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
28996
# check trigger-2 success: 1
28997
DROP TRIGGER trg_1;
28998
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
28999
f_int2 = CAST(f_char1 AS SIGNED INT),
29000
f_charbig = 'just inserted'
29001
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29003
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29004
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29005
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29006
'just inserted' FROM t0_template
29007
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29008
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29010
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29011
f_charbig = 'updated by trigger'
29012
WHERE f_int1 = new.f_int1;
29014
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29015
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29017
# check trigger-3 success: 1
29018
DROP TRIGGER trg_1;
29019
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29020
f_int2 = CAST(f_char1 AS SIGNED INT),
29021
f_charbig = 'just inserted'
29022
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29024
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29025
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29026
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29027
'just inserted' FROM t0_template
29028
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29029
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29031
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29032
f_charbig = 'updated by trigger'
29033
WHERE f_int1 = - old.f_int1;
29035
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29036
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29038
# check trigger-4 success: 1
29039
DROP TRIGGER trg_1;
29040
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29041
f_int2 = CAST(f_char1 AS SIGNED INT),
29042
f_charbig = 'just inserted'
29043
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29045
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29046
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29047
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29048
'just inserted' FROM t0_template
29049
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29050
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29052
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29053
f_charbig = 'updated by trigger'
29054
WHERE f_int1 = new.f_int1;
29056
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29057
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29059
# check trigger-5 success: 1
29060
DROP TRIGGER trg_1;
29061
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29062
f_int2 = CAST(f_char1 AS SIGNED INT),
29063
f_charbig = 'just inserted'
29064
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29066
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29067
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29068
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29069
'just inserted' FROM t0_template
29070
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29071
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29073
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29074
f_charbig = 'updated by trigger'
29075
WHERE f_int1 = - old.f_int1;
29077
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29078
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29080
# check trigger-6 success: 1
29081
DROP TRIGGER trg_1;
29082
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29083
f_int2 = CAST(f_char1 AS SIGNED INT),
29084
f_charbig = 'just inserted'
29085
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29087
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29088
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29089
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29090
'just inserted' FROM t0_template
29091
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29092
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29094
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29095
f_charbig = 'updated by trigger'
29096
WHERE f_int1 = - old.f_int1;
29099
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29101
# check trigger-7 success: 1
29102
DROP TRIGGER trg_1;
29103
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29104
f_int2 = CAST(f_char1 AS SIGNED INT),
29105
f_charbig = 'just inserted'
29106
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29108
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29109
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29110
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29111
'just inserted' FROM t0_template
29112
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29113
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29115
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29116
f_charbig = 'updated by trigger'
29117
WHERE f_int1 = - old.f_int1;
29120
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29122
# check trigger-8 success: 1
29123
DROP TRIGGER trg_1;
29124
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29125
f_int2 = CAST(f_char1 AS SIGNED INT),
29126
f_charbig = 'just inserted'
29127
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29129
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29131
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29132
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29134
SET new.f_int1 = old.f_int1 + @max_row,
29135
new.f_int2 = old.f_int2 - @max_row,
29136
new.f_charbig = '####updated per update trigger####';
29139
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29140
f_charbig = '####updated per update statement itself####';
29142
# check trigger-9 success: 1
29143
DROP TRIGGER trg_2;
29144
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29145
f_int2 = CAST(f_char1 AS SIGNED INT),
29146
f_charbig = CONCAT('===',f_char1,'===');
29147
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29149
SET new.f_int1 = new.f_int1 + @max_row,
29150
new.f_int2 = new.f_int2 - @max_row,
29151
new.f_charbig = '####updated per update trigger####';
29154
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29155
f_charbig = '####updated per update statement itself####';
29157
# check trigger-10 success: 1
29158
DROP TRIGGER trg_2;
29159
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29160
f_int2 = CAST(f_char1 AS SIGNED INT),
29161
f_charbig = CONCAT('===',f_char1,'===');
29162
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29164
SET new.f_int1 = @my_max1 + @counter,
29165
new.f_int2 = @my_min2 - @counter,
29166
new.f_charbig = '####updated per insert trigger####';
29167
SET @counter = @counter + 1;
29170
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29171
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29172
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29173
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29174
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29176
DROP TRIGGER trg_3;
29178
# check trigger-11 success: 1
29180
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29181
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29182
AND f_charbig = '####updated per insert trigger####';
29183
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29185
SET new.f_int1 = @my_max1 + @counter,
29186
new.f_int2 = @my_min2 - @counter,
29187
new.f_charbig = '####updated per insert trigger####';
29188
SET @counter = @counter + 1;
29191
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29192
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29193
SELECT CAST(f_int1 AS CHAR),
29194
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29195
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29197
DROP TRIGGER trg_3;
29199
# check trigger-12 success: 1
29201
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29202
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29203
AND f_charbig = '####updated per insert trigger####';
29205
Table Op Msg_type Msg_text
29206
test.t1 analyze status OK
29207
CHECK TABLE t1 EXTENDED;
29208
Table Op Msg_type Msg_text
29209
test.t1 check status OK
29210
CHECKSUM TABLE t1 EXTENDED;
29212
test.t1 <some_value>
29214
Table Op Msg_type Msg_text
29215
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
29216
test.t1 optimize status OK
29217
# check layout success: 1
29218
REPAIR TABLE t1 EXTENDED;
29219
Table Op Msg_type Msg_text
29220
test.t1 repair note The storage engine for the table doesn't support repair
29221
# check layout success: 1
29224
# check TRUNCATE success: 1
29225
# check layout success: 1
29226
# End usability test (inc/partition_check.inc)
29228
DROP TABLE IF EXISTS t1;
29234
f_charbig VARCHAR(1000)
29235
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
29237
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
29238
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29239
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29240
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29241
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
29242
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29243
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29244
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29245
# Start usability test (inc/partition_check.inc)
29247
SHOW CREATE TABLE t1;
29249
t1 CREATE TABLE `t1` (
29250
`f_int1` int(11) NOT NULL DEFAULT '0',
29251
`f_int2` int(11) NOT NULL DEFAULT '0',
29252
`f_char1` char(20) DEFAULT NULL,
29253
`f_char2` char(20) DEFAULT NULL,
29254
`f_charbig` varchar(1000) DEFAULT NULL
29255
) ENGINE=InnoDB DEFAULT CHARSET=latin1
29256
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
29259
# check prerequisites-1 success: 1
29260
# check COUNT(*) success: 1
29261
# check MIN/MAX(f_int1) success: 1
29262
# check MIN/MAX(f_int2) success: 1
29263
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29264
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29265
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29266
WHERE f_int1 IN (2,3);
29267
# check prerequisites-3 success: 1
29268
DELETE FROM t1 WHERE f_charbig = 'delete me';
29269
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
29270
# check read via f_int1 success: 1
29271
# check read via f_int2 success: 1
29273
# check multiple-1 success: 1
29274
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29276
# check multiple-2 success: 1
29277
INSERT INTO t1 SELECT * FROM t0_template
29278
WHERE MOD(f_int1,3) = 0;
29280
# check multiple-3 success: 1
29281
UPDATE t1 SET f_int1 = f_int1 + @max_row
29282
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29283
AND @max_row_div2 + @max_row_div4;
29285
# check multiple-4 success: 1
29287
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29288
AND @max_row_div2 + @max_row_div4 + @max_row;
29290
# check multiple-5 success: 1
29291
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29293
SET f_int1 = @cur_value , f_int2 = @cur_value,
29294
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29295
f_charbig = '#SINGLE#';
29297
# check single-1 success: 1
29298
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29300
SET f_int1 = @cur_value , f_int2 = @cur_value,
29301
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29302
f_charbig = '#SINGLE#';
29304
# check single-2 success: 1
29305
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29306
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29307
UPDATE t1 SET f_int1 = @cur_value2
29308
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29310
# check single-3 success: 1
29311
SET @cur_value1= -1;
29312
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29313
UPDATE t1 SET f_int1 = @cur_value1
29314
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29316
# check single-4 success: 1
29317
SELECT MAX(f_int1) INTO @cur_value FROM t1;
29318
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29320
# check single-5 success: 1
29321
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29323
# check single-6 success: 1
29324
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29326
# check single-7 success: 1
29327
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
29328
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29329
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29330
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29331
f_charbig = '#NULL#';
29333
SET f_int1 = NULL , f_int2 = -@max_row,
29334
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29335
f_charbig = '#NULL#';
29336
ERROR 23000: Column 'f_int1' cannot be null
29337
# check null success: 1
29339
WHERE f_int1 = 0 AND f_int2 = 0
29340
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29341
AND f_charbig = '#NULL#';
29343
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29344
SELECT f_int1, f_int1, '', '', 'was inserted'
29345
FROM t0_template source_tab
29346
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29348
# check transactions-1 success: 1
29351
# check transactions-2 success: 1
29354
# check transactions-3 success: 1
29355
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29359
# check transactions-4 success: 1
29360
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29361
SELECT f_int1, f_int1, '', '', 'was inserted'
29362
FROM t0_template source_tab
29363
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29365
# check transactions-5 success: 1
29368
# check transactions-6 success: 1
29369
# INFO: Storage engine used for t1 seems to be transactional.
29372
# check transactions-7 success: 1
29373
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29375
SET @@session.sql_mode = 'traditional';
29376
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29377
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29378
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29379
'', '', 'was inserted' FROM t0_template
29380
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29381
ERROR 22012: Division by 0
29384
# check transactions-8 success: 1
29385
# INFO: Storage engine used for t1 seems to be able to revert
29386
# changes made by the failing statement.
29387
SET @@session.sql_mode = '';
29389
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29391
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29393
# check special-1 success: 1
29394
UPDATE t1 SET f_charbig = '';
29396
# check special-2 success: 1
29397
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29398
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29399
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29400
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29401
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29402
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29403
'just inserted' FROM t0_template
29404
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29405
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29407
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29408
f_charbig = 'updated by trigger'
29409
WHERE f_int1 = new.f_int1;
29411
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29412
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29413
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29415
# check trigger-1 success: 1
29416
DROP TRIGGER trg_1;
29417
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29418
f_int2 = CAST(f_char1 AS SIGNED INT),
29419
f_charbig = 'just inserted'
29420
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29422
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29423
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29424
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29425
'just inserted' FROM t0_template
29426
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29427
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29429
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29430
f_charbig = 'updated by trigger'
29431
WHERE f_int1 = new.f_int1;
29433
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29434
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29435
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29437
# check trigger-2 success: 1
29438
DROP TRIGGER trg_1;
29439
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29440
f_int2 = CAST(f_char1 AS SIGNED INT),
29441
f_charbig = 'just inserted'
29442
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29444
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29445
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29446
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29447
'just inserted' FROM t0_template
29448
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29449
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29451
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29452
f_charbig = 'updated by trigger'
29453
WHERE f_int1 = new.f_int1;
29455
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29456
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29458
# check trigger-3 success: 1
29459
DROP TRIGGER trg_1;
29460
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29461
f_int2 = CAST(f_char1 AS SIGNED INT),
29462
f_charbig = 'just inserted'
29463
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29465
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29466
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29467
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29468
'just inserted' FROM t0_template
29469
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29470
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29472
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29473
f_charbig = 'updated by trigger'
29474
WHERE f_int1 = - old.f_int1;
29476
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29477
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29479
# check trigger-4 success: 1
29480
DROP TRIGGER trg_1;
29481
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29482
f_int2 = CAST(f_char1 AS SIGNED INT),
29483
f_charbig = 'just inserted'
29484
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29486
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29487
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29488
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29489
'just inserted' FROM t0_template
29490
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29491
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29493
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29494
f_charbig = 'updated by trigger'
29495
WHERE f_int1 = new.f_int1;
29497
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29498
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29500
# check trigger-5 success: 1
29501
DROP TRIGGER trg_1;
29502
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29503
f_int2 = CAST(f_char1 AS SIGNED INT),
29504
f_charbig = 'just inserted'
29505
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29507
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29508
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29509
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29510
'just inserted' FROM t0_template
29511
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29512
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29514
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29515
f_charbig = 'updated by trigger'
29516
WHERE f_int1 = - old.f_int1;
29518
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29519
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29521
# check trigger-6 success: 1
29522
DROP TRIGGER trg_1;
29523
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29524
f_int2 = CAST(f_char1 AS SIGNED INT),
29525
f_charbig = 'just inserted'
29526
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29528
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29529
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29530
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29531
'just inserted' FROM t0_template
29532
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29533
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29535
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29536
f_charbig = 'updated by trigger'
29537
WHERE f_int1 = - old.f_int1;
29540
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29542
# check trigger-7 success: 1
29543
DROP TRIGGER trg_1;
29544
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29545
f_int2 = CAST(f_char1 AS SIGNED INT),
29546
f_charbig = 'just inserted'
29547
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29549
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29550
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29551
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29552
'just inserted' FROM t0_template
29553
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29554
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29556
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29557
f_charbig = 'updated by trigger'
29558
WHERE f_int1 = - old.f_int1;
29561
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29563
# check trigger-8 success: 1
29564
DROP TRIGGER trg_1;
29565
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29566
f_int2 = CAST(f_char1 AS SIGNED INT),
29567
f_charbig = 'just inserted'
29568
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29570
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29572
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29573
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29575
SET new.f_int1 = old.f_int1 + @max_row,
29576
new.f_int2 = old.f_int2 - @max_row,
29577
new.f_charbig = '####updated per update trigger####';
29580
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29581
f_charbig = '####updated per update statement itself####';
29583
# check trigger-9 success: 1
29584
DROP TRIGGER trg_2;
29585
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29586
f_int2 = CAST(f_char1 AS SIGNED INT),
29587
f_charbig = CONCAT('===',f_char1,'===');
29588
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
29590
SET new.f_int1 = new.f_int1 + @max_row,
29591
new.f_int2 = new.f_int2 - @max_row,
29592
new.f_charbig = '####updated per update trigger####';
29595
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
29596
f_charbig = '####updated per update statement itself####';
29598
# check trigger-10 success: 1
29599
DROP TRIGGER trg_2;
29600
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29601
f_int2 = CAST(f_char1 AS SIGNED INT),
29602
f_charbig = CONCAT('===',f_char1,'===');
29603
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29605
SET new.f_int1 = @my_max1 + @counter,
29606
new.f_int2 = @my_min2 - @counter,
29607
new.f_charbig = '####updated per insert trigger####';
29608
SET @counter = @counter + 1;
29611
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29612
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29613
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29614
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29615
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29617
DROP TRIGGER trg_3;
29619
# check trigger-11 success: 1
29621
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29622
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29623
AND f_charbig = '####updated per insert trigger####';
29624
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
29626
SET new.f_int1 = @my_max1 + @counter,
29627
new.f_int2 = @my_min2 - @counter,
29628
new.f_charbig = '####updated per insert trigger####';
29629
SET @counter = @counter + 1;
29632
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
29633
INSERT INTO t1 (f_char1, f_char2, f_charbig)
29634
SELECT CAST(f_int1 AS CHAR),
29635
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
29636
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
29638
DROP TRIGGER trg_3;
29640
# check trigger-12 success: 1
29642
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
29643
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
29644
AND f_charbig = '####updated per insert trigger####';
29646
Table Op Msg_type Msg_text
29647
test.t1 analyze status OK
29648
CHECK TABLE t1 EXTENDED;
29649
Table Op Msg_type Msg_text
29650
test.t1 check status OK
29651
CHECKSUM TABLE t1 EXTENDED;
29653
test.t1 <some_value>
29655
Table Op Msg_type Msg_text
29656
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
29657
test.t1 optimize status OK
29658
# check layout success: 1
29659
REPAIR TABLE t1 EXTENDED;
29660
Table Op Msg_type Msg_text
29661
test.t1 repair note The storage engine for the table doesn't support repair
29662
# check layout success: 1
29665
# check TRUNCATE success: 1
29666
# check layout success: 1
29667
# End usability test (inc/partition_check.inc)
29674
f_charbig VARCHAR(1000)
29675
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
29677
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
29678
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29679
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29680
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
29681
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
29682
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29683
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
29684
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
29685
# Start usability test (inc/partition_check.inc)
29687
SHOW CREATE TABLE t1;
29689
t1 CREATE TABLE `t1` (
29690
`f_int1` int(11) NOT NULL DEFAULT '0',
29691
`f_int2` int(11) NOT NULL DEFAULT '0',
29692
`f_char1` char(20) DEFAULT NULL,
29693
`f_char2` char(20) DEFAULT NULL,
29694
`f_charbig` varchar(1000) DEFAULT NULL
29695
) ENGINE=InnoDB DEFAULT CHARSET=latin1
29696
/*!50100 PARTITION BY KEY (f_int1,f_int2)
29699
# check prerequisites-1 success: 1
29700
# check COUNT(*) success: 1
29701
# check MIN/MAX(f_int1) success: 1
29702
# check MIN/MAX(f_int2) success: 1
29703
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29704
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
29705
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
29706
WHERE f_int1 IN (2,3);
29707
# check prerequisites-3 success: 1
29708
DELETE FROM t1 WHERE f_charbig = 'delete me';
29709
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
29710
# check read via f_int1 success: 1
29711
# check read via f_int2 success: 1
29713
# check multiple-1 success: 1
29714
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
29716
# check multiple-2 success: 1
29717
INSERT INTO t1 SELECT * FROM t0_template
29718
WHERE MOD(f_int1,3) = 0;
29720
# check multiple-3 success: 1
29721
UPDATE t1 SET f_int1 = f_int1 + @max_row
29722
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
29723
AND @max_row_div2 + @max_row_div4;
29725
# check multiple-4 success: 1
29727
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
29728
AND @max_row_div2 + @max_row_div4 + @max_row;
29730
# check multiple-5 success: 1
29731
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
29733
SET f_int1 = @cur_value , f_int2 = @cur_value,
29734
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29735
f_charbig = '#SINGLE#';
29737
# check single-1 success: 1
29738
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
29740
SET f_int1 = @cur_value , f_int2 = @cur_value,
29741
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
29742
f_charbig = '#SINGLE#';
29744
# check single-2 success: 1
29745
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
29746
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
29747
UPDATE t1 SET f_int1 = @cur_value2
29748
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
29750
# check single-3 success: 1
29751
SET @cur_value1= -1;
29752
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
29753
UPDATE t1 SET f_int1 = @cur_value1
29754
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
29756
# check single-4 success: 1
29757
SELECT MAX(f_int1) INTO @cur_value FROM t1;
29758
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
29760
# check single-5 success: 1
29761
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
29763
# check single-6 success: 1
29764
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
29766
# check single-7 success: 1
29767
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
29768
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
29769
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
29770
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
29771
f_charbig = '#NULL#';
29773
SET f_int1 = NULL , f_int2 = -@max_row,
29774
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
29775
f_charbig = '#NULL#';
29776
ERROR 23000: Column 'f_int1' cannot be null
29777
# check null success: 1
29779
WHERE f_int1 = 0 AND f_int2 = 0
29780
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
29781
AND f_charbig = '#NULL#';
29783
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29784
SELECT f_int1, f_int1, '', '', 'was inserted'
29785
FROM t0_template source_tab
29786
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29788
# check transactions-1 success: 1
29791
# check transactions-2 success: 1
29794
# check transactions-3 success: 1
29795
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29799
# check transactions-4 success: 1
29800
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29801
SELECT f_int1, f_int1, '', '', 'was inserted'
29802
FROM t0_template source_tab
29803
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29805
# check transactions-5 success: 1
29808
# check transactions-6 success: 1
29809
# INFO: Storage engine used for t1 seems to be transactional.
29812
# check transactions-7 success: 1
29813
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29815
SET @@session.sql_mode = 'traditional';
29816
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
29817
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
29818
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
29819
'', '', 'was inserted' FROM t0_template
29820
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
29821
ERROR 22012: Division by 0
29824
# check transactions-8 success: 1
29825
# INFO: Storage engine used for t1 seems to be able to revert
29826
# changes made by the failing statement.
29827
SET @@session.sql_mode = '';
29829
DELETE FROM t1 WHERE f_charbig = 'was inserted';
29831
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
29833
# check special-1 success: 1
29834
UPDATE t1 SET f_charbig = '';
29836
# check special-2 success: 1
29837
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
29838
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
29839
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
29840
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29841
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29842
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29843
'just inserted' FROM t0_template
29844
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29845
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
29847
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29848
f_charbig = 'updated by trigger'
29849
WHERE f_int1 = new.f_int1;
29851
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29852
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29853
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29855
# check trigger-1 success: 1
29856
DROP TRIGGER trg_1;
29857
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29858
f_int2 = CAST(f_char1 AS SIGNED INT),
29859
f_charbig = 'just inserted'
29860
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29862
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29863
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29864
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29865
'just inserted' FROM t0_template
29866
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29867
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
29869
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29870
f_charbig = 'updated by trigger'
29871
WHERE f_int1 = new.f_int1;
29873
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29874
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
29875
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29877
# check trigger-2 success: 1
29878
DROP TRIGGER trg_1;
29879
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29880
f_int2 = CAST(f_char1 AS SIGNED INT),
29881
f_charbig = 'just inserted'
29882
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29884
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29885
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29886
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29887
'just inserted' FROM t0_template
29888
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29889
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29891
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29892
f_charbig = 'updated by trigger'
29893
WHERE f_int1 = new.f_int1;
29895
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29896
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29898
# check trigger-3 success: 1
29899
DROP TRIGGER trg_1;
29900
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29901
f_int2 = CAST(f_char1 AS SIGNED INT),
29902
f_charbig = 'just inserted'
29903
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29905
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29906
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29907
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29908
'just inserted' FROM t0_template
29909
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29910
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
29912
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29913
f_charbig = 'updated by trigger'
29914
WHERE f_int1 = - old.f_int1;
29916
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29917
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29919
# check trigger-4 success: 1
29920
DROP TRIGGER trg_1;
29921
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29922
f_int2 = CAST(f_char1 AS SIGNED INT),
29923
f_charbig = 'just inserted'
29924
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29926
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29927
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29928
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29929
'just inserted' FROM t0_template
29930
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29931
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29933
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29934
f_charbig = 'updated by trigger'
29935
WHERE f_int1 = new.f_int1;
29937
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29938
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29940
# check trigger-5 success: 1
29941
DROP TRIGGER trg_1;
29942
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29943
f_int2 = CAST(f_char1 AS SIGNED INT),
29944
f_charbig = 'just inserted'
29945
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29947
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29948
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29949
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29950
'just inserted' FROM t0_template
29951
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29952
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
29954
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29955
f_charbig = 'updated by trigger'
29956
WHERE f_int1 = - old.f_int1;
29958
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
29959
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29961
# check trigger-6 success: 1
29962
DROP TRIGGER trg_1;
29963
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29964
f_int2 = CAST(f_char1 AS SIGNED INT),
29965
f_charbig = 'just inserted'
29966
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29968
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29969
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29970
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29971
'just inserted' FROM t0_template
29972
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29973
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
29975
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29976
f_charbig = 'updated by trigger'
29977
WHERE f_int1 = - old.f_int1;
29980
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
29982
# check trigger-7 success: 1
29983
DROP TRIGGER trg_1;
29984
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
29985
f_int2 = CAST(f_char1 AS SIGNED INT),
29986
f_charbig = 'just inserted'
29987
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
29989
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29990
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
29991
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
29992
'just inserted' FROM t0_template
29993
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
29994
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
29996
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
29997
f_charbig = 'updated by trigger'
29998
WHERE f_int1 = - old.f_int1;
30001
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30003
# check trigger-8 success: 1
30004
DROP TRIGGER trg_1;
30005
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30006
f_int2 = CAST(f_char1 AS SIGNED INT),
30007
f_charbig = 'just inserted'
30008
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30010
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30012
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30013
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30015
SET new.f_int1 = old.f_int1 + @max_row,
30016
new.f_int2 = old.f_int2 - @max_row,
30017
new.f_charbig = '####updated per update trigger####';
30020
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30021
f_charbig = '####updated per update statement itself####';
30023
# check trigger-9 success: 1
30024
DROP TRIGGER trg_2;
30025
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30026
f_int2 = CAST(f_char1 AS SIGNED INT),
30027
f_charbig = CONCAT('===',f_char1,'===');
30028
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30030
SET new.f_int1 = new.f_int1 + @max_row,
30031
new.f_int2 = new.f_int2 - @max_row,
30032
new.f_charbig = '####updated per update trigger####';
30035
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30036
f_charbig = '####updated per update statement itself####';
30038
# check trigger-10 success: 1
30039
DROP TRIGGER trg_2;
30040
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30041
f_int2 = CAST(f_char1 AS SIGNED INT),
30042
f_charbig = CONCAT('===',f_char1,'===');
30043
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30045
SET new.f_int1 = @my_max1 + @counter,
30046
new.f_int2 = @my_min2 - @counter,
30047
new.f_charbig = '####updated per insert trigger####';
30048
SET @counter = @counter + 1;
30051
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30052
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30053
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30054
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30055
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30057
DROP TRIGGER trg_3;
30059
# check trigger-11 success: 1
30061
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30062
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30063
AND f_charbig = '####updated per insert trigger####';
30064
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30066
SET new.f_int1 = @my_max1 + @counter,
30067
new.f_int2 = @my_min2 - @counter,
30068
new.f_charbig = '####updated per insert trigger####';
30069
SET @counter = @counter + 1;
30072
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30073
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30074
SELECT CAST(f_int1 AS CHAR),
30075
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30076
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30078
DROP TRIGGER trg_3;
30080
# check trigger-12 success: 1
30082
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30083
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30084
AND f_charbig = '####updated per insert trigger####';
30086
Table Op Msg_type Msg_text
30087
test.t1 analyze status OK
30088
CHECK TABLE t1 EXTENDED;
30089
Table Op Msg_type Msg_text
30090
test.t1 check status OK
30091
CHECKSUM TABLE t1 EXTENDED;
30093
test.t1 <some_value>
30095
Table Op Msg_type Msg_text
30096
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
30097
test.t1 optimize status OK
30098
# check layout success: 1
30099
REPAIR TABLE t1 EXTENDED;
30100
Table Op Msg_type Msg_text
30101
test.t1 repair note The storage engine for the table doesn't support repair
30102
# check layout success: 1
30105
# check TRUNCATE success: 1
30106
# check layout success: 1
30107
# End usability test (inc/partition_check.inc)
30114
f_charbig VARCHAR(1000)
30115
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
30117
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
30118
(PARTITION part_3 VALUES IN (-3),
30119
PARTITION part_2 VALUES IN (-2),
30120
PARTITION part_1 VALUES IN (-1),
30121
PARTITION part_N VALUES IN (NULL),
30122
PARTITION part0 VALUES IN (0),
30123
PARTITION part1 VALUES IN (1),
30124
PARTITION part2 VALUES IN (2),
30125
PARTITION part3 VALUES IN (3));
30126
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30127
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30128
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30129
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
30130
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30131
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30132
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30133
# Start usability test (inc/partition_check.inc)
30135
SHOW CREATE TABLE t1;
30137
t1 CREATE TABLE `t1` (
30138
`f_int1` int(11) NOT NULL DEFAULT '0',
30139
`f_int2` int(11) NOT NULL DEFAULT '0',
30140
`f_char1` char(20) DEFAULT NULL,
30141
`f_char2` char(20) DEFAULT NULL,
30142
`f_charbig` varchar(1000) DEFAULT NULL
30143
) ENGINE=InnoDB DEFAULT CHARSET=latin1
30144
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
30145
(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
30146
PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
30147
PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
30148
PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
30149
PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
30150
PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
30151
PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
30152
PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
30154
# check prerequisites-1 success: 1
30155
# check COUNT(*) success: 1
30156
# check MIN/MAX(f_int1) success: 1
30157
# check MIN/MAX(f_int2) success: 1
30158
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30159
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30160
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30161
WHERE f_int1 IN (2,3);
30162
# check prerequisites-3 success: 1
30163
DELETE FROM t1 WHERE f_charbig = 'delete me';
30164
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
30165
# check read via f_int1 success: 1
30166
# check read via f_int2 success: 1
30168
# check multiple-1 success: 1
30169
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30171
# check multiple-2 success: 1
30172
INSERT INTO t1 SELECT * FROM t0_template
30173
WHERE MOD(f_int1,3) = 0;
30175
# check multiple-3 success: 1
30176
UPDATE t1 SET f_int1 = f_int1 + @max_row
30177
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30178
AND @max_row_div2 + @max_row_div4;
30180
# check multiple-4 success: 1
30182
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30183
AND @max_row_div2 + @max_row_div4 + @max_row;
30185
# check multiple-5 success: 1
30186
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30188
SET f_int1 = @cur_value , f_int2 = @cur_value,
30189
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30190
f_charbig = '#SINGLE#';
30192
# check single-1 success: 1
30193
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30195
SET f_int1 = @cur_value , f_int2 = @cur_value,
30196
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30197
f_charbig = '#SINGLE#';
30199
# check single-2 success: 1
30200
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30201
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30202
UPDATE t1 SET f_int1 = @cur_value2
30203
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30205
# check single-3 success: 1
30206
SET @cur_value1= -1;
30207
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30208
UPDATE t1 SET f_int1 = @cur_value1
30209
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30211
# check single-4 success: 1
30212
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30213
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30215
# check single-5 success: 1
30216
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30218
# check single-6 success: 1
30219
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30221
# check single-7 success: 1
30222
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
30223
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30224
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30225
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30226
f_charbig = '#NULL#';
30228
SET f_int1 = NULL , f_int2 = -@max_row,
30229
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30230
f_charbig = '#NULL#';
30231
ERROR 23000: Column 'f_int1' cannot be null
30232
# check null success: 1
30234
WHERE f_int1 = 0 AND f_int2 = 0
30235
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30236
AND f_charbig = '#NULL#';
30238
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30239
SELECT f_int1, f_int1, '', '', 'was inserted'
30240
FROM t0_template source_tab
30241
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30243
# check transactions-1 success: 1
30246
# check transactions-2 success: 1
30249
# check transactions-3 success: 1
30250
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30254
# check transactions-4 success: 1
30255
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30256
SELECT f_int1, f_int1, '', '', 'was inserted'
30257
FROM t0_template source_tab
30258
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30260
# check transactions-5 success: 1
30263
# check transactions-6 success: 1
30264
# INFO: Storage engine used for t1 seems to be transactional.
30267
# check transactions-7 success: 1
30268
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30270
SET @@session.sql_mode = 'traditional';
30271
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30272
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30273
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30274
'', '', 'was inserted' FROM t0_template
30275
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30276
ERROR 22012: Division by 0
30279
# check transactions-8 success: 1
30280
# INFO: Storage engine used for t1 seems to be able to revert
30281
# changes made by the failing statement.
30282
SET @@session.sql_mode = '';
30284
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30286
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30288
# check special-1 success: 1
30289
UPDATE t1 SET f_charbig = '';
30291
# check special-2 success: 1
30292
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30293
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30294
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30295
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30296
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30297
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30298
'just inserted' FROM t0_template
30299
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30300
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30302
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30303
f_charbig = 'updated by trigger'
30304
WHERE f_int1 = new.f_int1;
30306
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30307
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30308
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30310
# check trigger-1 success: 1
30311
DROP TRIGGER trg_1;
30312
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30313
f_int2 = CAST(f_char1 AS SIGNED INT),
30314
f_charbig = 'just inserted'
30315
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30317
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30318
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30319
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30320
'just inserted' FROM t0_template
30321
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30322
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30324
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30325
f_charbig = 'updated by trigger'
30326
WHERE f_int1 = new.f_int1;
30328
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30329
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30330
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30332
# check trigger-2 success: 1
30333
DROP TRIGGER trg_1;
30334
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30335
f_int2 = CAST(f_char1 AS SIGNED INT),
30336
f_charbig = 'just inserted'
30337
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30339
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30340
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30341
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30342
'just inserted' FROM t0_template
30343
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30344
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30346
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30347
f_charbig = 'updated by trigger'
30348
WHERE f_int1 = new.f_int1;
30350
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30351
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30353
# check trigger-3 success: 1
30354
DROP TRIGGER trg_1;
30355
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30356
f_int2 = CAST(f_char1 AS SIGNED INT),
30357
f_charbig = 'just inserted'
30358
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30360
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30361
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30362
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30363
'just inserted' FROM t0_template
30364
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30365
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30367
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30368
f_charbig = 'updated by trigger'
30369
WHERE f_int1 = - old.f_int1;
30371
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30372
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30374
# check trigger-4 success: 1
30375
DROP TRIGGER trg_1;
30376
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30377
f_int2 = CAST(f_char1 AS SIGNED INT),
30378
f_charbig = 'just inserted'
30379
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30381
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30382
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30383
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30384
'just inserted' FROM t0_template
30385
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30386
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30388
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30389
f_charbig = 'updated by trigger'
30390
WHERE f_int1 = new.f_int1;
30392
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30393
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30395
# check trigger-5 success: 1
30396
DROP TRIGGER trg_1;
30397
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30398
f_int2 = CAST(f_char1 AS SIGNED INT),
30399
f_charbig = 'just inserted'
30400
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30402
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30403
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30404
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30405
'just inserted' FROM t0_template
30406
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30407
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30409
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30410
f_charbig = 'updated by trigger'
30411
WHERE f_int1 = - old.f_int1;
30413
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30414
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30416
# check trigger-6 success: 1
30417
DROP TRIGGER trg_1;
30418
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30419
f_int2 = CAST(f_char1 AS SIGNED INT),
30420
f_charbig = 'just inserted'
30421
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30423
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30424
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30425
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30426
'just inserted' FROM t0_template
30427
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30428
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30430
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30431
f_charbig = 'updated by trigger'
30432
WHERE f_int1 = - old.f_int1;
30435
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30437
# check trigger-7 success: 1
30438
DROP TRIGGER trg_1;
30439
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30440
f_int2 = CAST(f_char1 AS SIGNED INT),
30441
f_charbig = 'just inserted'
30442
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30444
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30445
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30446
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30447
'just inserted' FROM t0_template
30448
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30449
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30451
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30452
f_charbig = 'updated by trigger'
30453
WHERE f_int1 = - old.f_int1;
30456
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30458
# check trigger-8 success: 1
30459
DROP TRIGGER trg_1;
30460
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30461
f_int2 = CAST(f_char1 AS SIGNED INT),
30462
f_charbig = 'just inserted'
30463
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30465
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30467
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30468
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30470
SET new.f_int1 = old.f_int1 + @max_row,
30471
new.f_int2 = old.f_int2 - @max_row,
30472
new.f_charbig = '####updated per update trigger####';
30475
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30476
f_charbig = '####updated per update statement itself####';
30478
# check trigger-9 success: 1
30479
DROP TRIGGER trg_2;
30480
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30481
f_int2 = CAST(f_char1 AS SIGNED INT),
30482
f_charbig = CONCAT('===',f_char1,'===');
30483
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30485
SET new.f_int1 = new.f_int1 + @max_row,
30486
new.f_int2 = new.f_int2 - @max_row,
30487
new.f_charbig = '####updated per update trigger####';
30490
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30491
f_charbig = '####updated per update statement itself####';
30493
# check trigger-10 success: 1
30494
DROP TRIGGER trg_2;
30495
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30496
f_int2 = CAST(f_char1 AS SIGNED INT),
30497
f_charbig = CONCAT('===',f_char1,'===');
30498
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30500
SET new.f_int1 = @my_max1 + @counter,
30501
new.f_int2 = @my_min2 - @counter,
30502
new.f_charbig = '####updated per insert trigger####';
30503
SET @counter = @counter + 1;
30506
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30507
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30508
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30509
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30510
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30512
DROP TRIGGER trg_3;
30514
# check trigger-11 success: 1
30516
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30517
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30518
AND f_charbig = '####updated per insert trigger####';
30519
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30521
SET new.f_int1 = @my_max1 + @counter,
30522
new.f_int2 = @my_min2 - @counter,
30523
new.f_charbig = '####updated per insert trigger####';
30524
SET @counter = @counter + 1;
30527
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30528
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30529
SELECT CAST(f_int1 AS CHAR),
30530
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30531
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30533
DROP TRIGGER trg_3;
30535
# check trigger-12 success: 1
30537
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30538
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30539
AND f_charbig = '####updated per insert trigger####';
30541
Table Op Msg_type Msg_text
30542
test.t1 analyze status OK
30543
CHECK TABLE t1 EXTENDED;
30544
Table Op Msg_type Msg_text
30545
test.t1 check status OK
30546
CHECKSUM TABLE t1 EXTENDED;
30548
test.t1 <some_value>
30550
Table Op Msg_type Msg_text
30551
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
30552
test.t1 optimize status OK
30553
# check layout success: 1
30554
REPAIR TABLE t1 EXTENDED;
30555
Table Op Msg_type Msg_text
30556
test.t1 repair note The storage engine for the table doesn't support repair
30557
# check layout success: 1
30560
# check TRUNCATE success: 1
30561
# check layout success: 1
30562
# End usability test (inc/partition_check.inc)
30569
f_charbig VARCHAR(1000)
30570
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
30572
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
30573
(PARTITION parta VALUES LESS THAN (0),
30574
PARTITION partb VALUES LESS THAN (5),
30575
PARTITION partc VALUES LESS THAN (10),
30576
PARTITION partd VALUES LESS THAN (10 + 5),
30577
PARTITION parte VALUES LESS THAN (20),
30578
PARTITION partf VALUES LESS THAN (2147483646));
30579
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30580
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30581
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
30582
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
30583
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30584
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
30585
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
30586
# Start usability test (inc/partition_check.inc)
30588
SHOW CREATE TABLE t1;
30590
t1 CREATE TABLE `t1` (
30591
`f_int1` int(11) NOT NULL DEFAULT '0',
30592
`f_int2` int(11) NOT NULL DEFAULT '0',
30593
`f_char1` char(20) DEFAULT NULL,
30594
`f_char2` char(20) DEFAULT NULL,
30595
`f_charbig` varchar(1000) DEFAULT NULL
30596
) ENGINE=InnoDB DEFAULT CHARSET=latin1
30597
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
30598
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
30599
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
30600
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
30601
PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
30602
PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
30603
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
30605
# check prerequisites-1 success: 1
30606
# check COUNT(*) success: 1
30607
# check MIN/MAX(f_int1) success: 1
30608
# check MIN/MAX(f_int2) success: 1
30609
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30610
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30611
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
30612
WHERE f_int1 IN (2,3);
30613
# check prerequisites-3 success: 1
30614
DELETE FROM t1 WHERE f_charbig = 'delete me';
30615
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
30616
# check read via f_int1 success: 1
30617
# check read via f_int2 success: 1
30619
# check multiple-1 success: 1
30620
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
30622
# check multiple-2 success: 1
30623
INSERT INTO t1 SELECT * FROM t0_template
30624
WHERE MOD(f_int1,3) = 0;
30626
# check multiple-3 success: 1
30627
UPDATE t1 SET f_int1 = f_int1 + @max_row
30628
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
30629
AND @max_row_div2 + @max_row_div4;
30631
# check multiple-4 success: 1
30633
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
30634
AND @max_row_div2 + @max_row_div4 + @max_row;
30636
# check multiple-5 success: 1
30637
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
30639
SET f_int1 = @cur_value , f_int2 = @cur_value,
30640
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30641
f_charbig = '#SINGLE#';
30643
# check single-1 success: 1
30644
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
30646
SET f_int1 = @cur_value , f_int2 = @cur_value,
30647
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
30648
f_charbig = '#SINGLE#';
30650
# check single-2 success: 1
30651
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
30652
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
30653
UPDATE t1 SET f_int1 = @cur_value2
30654
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
30656
# check single-3 success: 1
30657
SET @cur_value1= -1;
30658
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
30659
UPDATE t1 SET f_int1 = @cur_value1
30660
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
30662
# check single-4 success: 1
30663
SELECT MAX(f_int1) INTO @cur_value FROM t1;
30664
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
30666
# check single-5 success: 1
30667
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
30669
# check single-6 success: 1
30670
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
30671
ERROR HY000: Table has no partition for value 2147483647
30672
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
30673
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
30674
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
30675
f_charbig = '#NULL#';
30677
SET f_int1 = NULL , f_int2 = -@max_row,
30678
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
30679
f_charbig = '#NULL#';
30680
ERROR 23000: Column 'f_int1' cannot be null
30681
# check null success: 1
30683
WHERE f_int1 = 0 AND f_int2 = 0
30684
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
30685
AND f_charbig = '#NULL#';
30687
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30688
SELECT f_int1, f_int1, '', '', 'was inserted'
30689
FROM t0_template source_tab
30690
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30692
# check transactions-1 success: 1
30695
# check transactions-2 success: 1
30698
# check transactions-3 success: 1
30699
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30703
# check transactions-4 success: 1
30704
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30705
SELECT f_int1, f_int1, '', '', 'was inserted'
30706
FROM t0_template source_tab
30707
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30709
# check transactions-5 success: 1
30712
# check transactions-6 success: 1
30713
# INFO: Storage engine used for t1 seems to be transactional.
30716
# check transactions-7 success: 1
30717
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30719
SET @@session.sql_mode = 'traditional';
30720
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
30721
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30722
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
30723
'', '', 'was inserted' FROM t0_template
30724
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
30725
ERROR 22012: Division by 0
30728
# check transactions-8 success: 1
30729
# INFO: Storage engine used for t1 seems to be able to revert
30730
# changes made by the failing statement.
30731
SET @@session.sql_mode = '';
30733
DELETE FROM t1 WHERE f_charbig = 'was inserted';
30735
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
30737
# check special-1 success: 1
30738
UPDATE t1 SET f_charbig = '';
30740
# check special-2 success: 1
30741
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
30742
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
30743
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
30744
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30745
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30746
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30747
'just inserted' FROM t0_template
30748
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30749
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
30751
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30752
f_charbig = 'updated by trigger'
30753
WHERE f_int1 = new.f_int1;
30755
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30756
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30757
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30759
# check trigger-1 success: 1
30760
DROP TRIGGER trg_1;
30761
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30762
f_int2 = CAST(f_char1 AS SIGNED INT),
30763
f_charbig = 'just inserted'
30764
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30766
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30767
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30768
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30769
'just inserted' FROM t0_template
30770
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30771
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
30773
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30774
f_charbig = 'updated by trigger'
30775
WHERE f_int1 = new.f_int1;
30777
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30778
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
30779
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30781
# check trigger-2 success: 1
30782
DROP TRIGGER trg_1;
30783
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30784
f_int2 = CAST(f_char1 AS SIGNED INT),
30785
f_charbig = 'just inserted'
30786
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30788
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30789
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30790
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30791
'just inserted' FROM t0_template
30792
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30793
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30795
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30796
f_charbig = 'updated by trigger'
30797
WHERE f_int1 = new.f_int1;
30799
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30800
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30802
# check trigger-3 success: 1
30803
DROP TRIGGER trg_1;
30804
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30805
f_int2 = CAST(f_char1 AS SIGNED INT),
30806
f_charbig = 'just inserted'
30807
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30809
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30810
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30811
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30812
'just inserted' FROM t0_template
30813
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30814
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
30816
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30817
f_charbig = 'updated by trigger'
30818
WHERE f_int1 = - old.f_int1;
30820
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30821
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30823
# check trigger-4 success: 1
30824
DROP TRIGGER trg_1;
30825
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30826
f_int2 = CAST(f_char1 AS SIGNED INT),
30827
f_charbig = 'just inserted'
30828
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30830
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30831
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30832
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30833
'just inserted' FROM t0_template
30834
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30835
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30837
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30838
f_charbig = 'updated by trigger'
30839
WHERE f_int1 = new.f_int1;
30841
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30842
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30844
# check trigger-5 success: 1
30845
DROP TRIGGER trg_1;
30846
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30847
f_int2 = CAST(f_char1 AS SIGNED INT),
30848
f_charbig = 'just inserted'
30849
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30851
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30852
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30853
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30854
'just inserted' FROM t0_template
30855
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30856
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
30858
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30859
f_charbig = 'updated by trigger'
30860
WHERE f_int1 = - old.f_int1;
30862
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
30863
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30865
# check trigger-6 success: 1
30866
DROP TRIGGER trg_1;
30867
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30868
f_int2 = CAST(f_char1 AS SIGNED INT),
30869
f_charbig = 'just inserted'
30870
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30872
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30873
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30874
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30875
'just inserted' FROM t0_template
30876
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30877
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
30879
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30880
f_charbig = 'updated by trigger'
30881
WHERE f_int1 = - old.f_int1;
30884
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30886
# check trigger-7 success: 1
30887
DROP TRIGGER trg_1;
30888
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30889
f_int2 = CAST(f_char1 AS SIGNED INT),
30890
f_charbig = 'just inserted'
30891
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30893
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30894
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
30895
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
30896
'just inserted' FROM t0_template
30897
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30898
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
30900
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
30901
f_charbig = 'updated by trigger'
30902
WHERE f_int1 = - old.f_int1;
30905
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
30907
# check trigger-8 success: 1
30908
DROP TRIGGER trg_1;
30909
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30910
f_int2 = CAST(f_char1 AS SIGNED INT),
30911
f_charbig = 'just inserted'
30912
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
30914
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30916
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
30917
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30919
SET new.f_int1 = old.f_int1 + @max_row,
30920
new.f_int2 = old.f_int2 - @max_row,
30921
new.f_charbig = '####updated per update trigger####';
30924
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30925
f_charbig = '####updated per update statement itself####';
30927
# check trigger-9 success: 1
30928
DROP TRIGGER trg_2;
30929
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30930
f_int2 = CAST(f_char1 AS SIGNED INT),
30931
f_charbig = CONCAT('===',f_char1,'===');
30932
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
30934
SET new.f_int1 = new.f_int1 + @max_row,
30935
new.f_int2 = new.f_int2 - @max_row,
30936
new.f_charbig = '####updated per update trigger####';
30939
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
30940
f_charbig = '####updated per update statement itself####';
30942
# check trigger-10 success: 1
30943
DROP TRIGGER trg_2;
30944
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
30945
f_int2 = CAST(f_char1 AS SIGNED INT),
30946
f_charbig = CONCAT('===',f_char1,'===');
30947
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30949
SET new.f_int1 = @my_max1 + @counter,
30950
new.f_int2 = @my_min2 - @counter,
30951
new.f_charbig = '####updated per insert trigger####';
30952
SET @counter = @counter + 1;
30955
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30956
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
30957
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
30958
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30959
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30961
DROP TRIGGER trg_3;
30963
# check trigger-11 success: 1
30965
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30966
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30967
AND f_charbig = '####updated per insert trigger####';
30968
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
30970
SET new.f_int1 = @my_max1 + @counter,
30971
new.f_int2 = @my_min2 - @counter,
30972
new.f_charbig = '####updated per insert trigger####';
30973
SET @counter = @counter + 1;
30976
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
30977
INSERT INTO t1 (f_char1, f_char2, f_charbig)
30978
SELECT CAST(f_int1 AS CHAR),
30979
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
30980
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
30982
DROP TRIGGER trg_3;
30984
# check trigger-12 success: 1
30986
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
30987
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
30988
AND f_charbig = '####updated per insert trigger####';
30990
Table Op Msg_type Msg_text
30991
test.t1 analyze status OK
30992
CHECK TABLE t1 EXTENDED;
30993
Table Op Msg_type Msg_text
30994
test.t1 check status OK
30995
CHECKSUM TABLE t1 EXTENDED;
30997
test.t1 <some_value>
30999
Table Op Msg_type Msg_text
31000
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
31001
test.t1 optimize status OK
31002
# check layout success: 1
31003
REPAIR TABLE t1 EXTENDED;
31004
Table Op Msg_type Msg_text
31005
test.t1 repair note The storage engine for the table doesn't support repair
31006
# check layout success: 1
31009
# check TRUNCATE success: 1
31010
# check layout success: 1
31011
# End usability test (inc/partition_check.inc)
31018
f_charbig VARCHAR(1000)
31019
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
31021
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
31022
(PARTITION parta VALUES LESS THAN (0),
31023
PARTITION partb VALUES LESS THAN (5),
31024
PARTITION partc VALUES LESS THAN (10),
31025
PARTITION partd VALUES LESS THAN (2147483646));
31026
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31027
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31028
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31029
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
31030
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31031
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31032
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31033
# Start usability test (inc/partition_check.inc)
31035
SHOW CREATE TABLE t1;
31037
t1 CREATE TABLE `t1` (
31038
`f_int1` int(11) NOT NULL DEFAULT '0',
31039
`f_int2` int(11) NOT NULL DEFAULT '0',
31040
`f_char1` char(20) DEFAULT NULL,
31041
`f_char2` char(20) DEFAULT NULL,
31042
`f_charbig` varchar(1000) DEFAULT NULL
31043
) ENGINE=InnoDB DEFAULT CHARSET=latin1
31044
/*!50100 PARTITION BY RANGE (f_int1)
31045
SUBPARTITION BY HASH (f_int2)
31047
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
31048
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
31049
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
31050
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
31052
# check prerequisites-1 success: 1
31053
# check COUNT(*) success: 1
31054
# check MIN/MAX(f_int1) success: 1
31055
# check MIN/MAX(f_int2) success: 1
31056
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31057
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31058
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31059
WHERE f_int1 IN (2,3);
31060
# check prerequisites-3 success: 1
31061
DELETE FROM t1 WHERE f_charbig = 'delete me';
31062
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
31063
# check read via f_int1 success: 1
31064
# check read via f_int2 success: 1
31066
# check multiple-1 success: 1
31067
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31069
# check multiple-2 success: 1
31070
INSERT INTO t1 SELECT * FROM t0_template
31071
WHERE MOD(f_int1,3) = 0;
31073
# check multiple-3 success: 1
31074
UPDATE t1 SET f_int1 = f_int1 + @max_row
31075
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31076
AND @max_row_div2 + @max_row_div4;
31078
# check multiple-4 success: 1
31080
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31081
AND @max_row_div2 + @max_row_div4 + @max_row;
31083
# check multiple-5 success: 1
31084
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31086
SET f_int1 = @cur_value , f_int2 = @cur_value,
31087
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31088
f_charbig = '#SINGLE#';
31090
# check single-1 success: 1
31091
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31093
SET f_int1 = @cur_value , f_int2 = @cur_value,
31094
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31095
f_charbig = '#SINGLE#';
31097
# check single-2 success: 1
31098
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31099
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31100
UPDATE t1 SET f_int1 = @cur_value2
31101
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31103
# check single-3 success: 1
31104
SET @cur_value1= -1;
31105
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31106
UPDATE t1 SET f_int1 = @cur_value1
31107
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31109
# check single-4 success: 1
31110
SELECT MAX(f_int1) INTO @cur_value FROM t1;
31111
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31113
# check single-5 success: 1
31114
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31116
# check single-6 success: 1
31117
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31118
ERROR HY000: Table has no partition for value 2147483647
31119
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31120
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31121
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31122
f_charbig = '#NULL#';
31124
SET f_int1 = NULL , f_int2 = -@max_row,
31125
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31126
f_charbig = '#NULL#';
31127
ERROR 23000: Column 'f_int1' cannot be null
31128
# check null success: 1
31130
WHERE f_int1 = 0 AND f_int2 = 0
31131
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31132
AND f_charbig = '#NULL#';
31134
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31135
SELECT f_int1, f_int1, '', '', 'was inserted'
31136
FROM t0_template source_tab
31137
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31139
# check transactions-1 success: 1
31142
# check transactions-2 success: 1
31145
# check transactions-3 success: 1
31146
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31150
# check transactions-4 success: 1
31151
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31152
SELECT f_int1, f_int1, '', '', 'was inserted'
31153
FROM t0_template source_tab
31154
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31156
# check transactions-5 success: 1
31159
# check transactions-6 success: 1
31160
# INFO: Storage engine used for t1 seems to be transactional.
31163
# check transactions-7 success: 1
31164
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31166
SET @@session.sql_mode = 'traditional';
31167
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31168
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31169
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31170
'', '', 'was inserted' FROM t0_template
31171
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31172
ERROR 22012: Division by 0
31175
# check transactions-8 success: 1
31176
# INFO: Storage engine used for t1 seems to be able to revert
31177
# changes made by the failing statement.
31178
SET @@session.sql_mode = '';
31180
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31182
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31184
# check special-1 success: 1
31185
UPDATE t1 SET f_charbig = '';
31187
# check special-2 success: 1
31188
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31189
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31190
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31191
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31192
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31193
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31194
'just inserted' FROM t0_template
31195
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31196
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31198
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31199
f_charbig = 'updated by trigger'
31200
WHERE f_int1 = new.f_int1;
31202
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31203
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31204
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31206
# check trigger-1 success: 1
31207
DROP TRIGGER trg_1;
31208
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31209
f_int2 = CAST(f_char1 AS SIGNED INT),
31210
f_charbig = 'just inserted'
31211
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31213
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31214
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31215
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31216
'just inserted' FROM t0_template
31217
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31218
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31220
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31221
f_charbig = 'updated by trigger'
31222
WHERE f_int1 = new.f_int1;
31224
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31225
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31226
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31228
# check trigger-2 success: 1
31229
DROP TRIGGER trg_1;
31230
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31231
f_int2 = CAST(f_char1 AS SIGNED INT),
31232
f_charbig = 'just inserted'
31233
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31235
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31236
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31237
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31238
'just inserted' FROM t0_template
31239
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31240
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31242
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31243
f_charbig = 'updated by trigger'
31244
WHERE f_int1 = new.f_int1;
31246
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31247
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31249
# check trigger-3 success: 1
31250
DROP TRIGGER trg_1;
31251
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31252
f_int2 = CAST(f_char1 AS SIGNED INT),
31253
f_charbig = 'just inserted'
31254
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31256
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31257
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31258
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31259
'just inserted' FROM t0_template
31260
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31261
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31263
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31264
f_charbig = 'updated by trigger'
31265
WHERE f_int1 = - old.f_int1;
31267
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31268
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31270
# check trigger-4 success: 1
31271
DROP TRIGGER trg_1;
31272
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31273
f_int2 = CAST(f_char1 AS SIGNED INT),
31274
f_charbig = 'just inserted'
31275
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31277
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31278
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31279
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31280
'just inserted' FROM t0_template
31281
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31282
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31284
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31285
f_charbig = 'updated by trigger'
31286
WHERE f_int1 = new.f_int1;
31288
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31289
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31291
# check trigger-5 success: 1
31292
DROP TRIGGER trg_1;
31293
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31294
f_int2 = CAST(f_char1 AS SIGNED INT),
31295
f_charbig = 'just inserted'
31296
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31298
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31299
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31300
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31301
'just inserted' FROM t0_template
31302
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31303
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31305
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31306
f_charbig = 'updated by trigger'
31307
WHERE f_int1 = - old.f_int1;
31309
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31310
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31312
# check trigger-6 success: 1
31313
DROP TRIGGER trg_1;
31314
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31315
f_int2 = CAST(f_char1 AS SIGNED INT),
31316
f_charbig = 'just inserted'
31317
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31319
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31320
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31321
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31322
'just inserted' FROM t0_template
31323
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31324
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31326
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31327
f_charbig = 'updated by trigger'
31328
WHERE f_int1 = - old.f_int1;
31331
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31333
# check trigger-7 success: 1
31334
DROP TRIGGER trg_1;
31335
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31336
f_int2 = CAST(f_char1 AS SIGNED INT),
31337
f_charbig = 'just inserted'
31338
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31340
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31341
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31342
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31343
'just inserted' FROM t0_template
31344
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31345
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31347
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31348
f_charbig = 'updated by trigger'
31349
WHERE f_int1 = - old.f_int1;
31352
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31354
# check trigger-8 success: 1
31355
DROP TRIGGER trg_1;
31356
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31357
f_int2 = CAST(f_char1 AS SIGNED INT),
31358
f_charbig = 'just inserted'
31359
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31361
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31363
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31364
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31366
SET new.f_int1 = old.f_int1 + @max_row,
31367
new.f_int2 = old.f_int2 - @max_row,
31368
new.f_charbig = '####updated per update trigger####';
31371
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31372
f_charbig = '####updated per update statement itself####';
31374
# check trigger-9 success: 1
31375
DROP TRIGGER trg_2;
31376
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31377
f_int2 = CAST(f_char1 AS SIGNED INT),
31378
f_charbig = CONCAT('===',f_char1,'===');
31379
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31381
SET new.f_int1 = new.f_int1 + @max_row,
31382
new.f_int2 = new.f_int2 - @max_row,
31383
new.f_charbig = '####updated per update trigger####';
31386
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31387
f_charbig = '####updated per update statement itself####';
31389
# check trigger-10 success: 1
31390
DROP TRIGGER trg_2;
31391
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31392
f_int2 = CAST(f_char1 AS SIGNED INT),
31393
f_charbig = CONCAT('===',f_char1,'===');
31394
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31396
SET new.f_int1 = @my_max1 + @counter,
31397
new.f_int2 = @my_min2 - @counter,
31398
new.f_charbig = '####updated per insert trigger####';
31399
SET @counter = @counter + 1;
31402
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31403
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31404
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31405
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31406
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31408
DROP TRIGGER trg_3;
31410
# check trigger-11 success: 1
31412
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31413
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31414
AND f_charbig = '####updated per insert trigger####';
31415
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31417
SET new.f_int1 = @my_max1 + @counter,
31418
new.f_int2 = @my_min2 - @counter,
31419
new.f_charbig = '####updated per insert trigger####';
31420
SET @counter = @counter + 1;
31423
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31424
INSERT INTO t1 (f_char1, f_char2, f_charbig)
31425
SELECT CAST(f_int1 AS CHAR),
31426
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31427
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31429
DROP TRIGGER trg_3;
31431
# check trigger-12 success: 1
31433
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31434
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31435
AND f_charbig = '####updated per insert trigger####';
31437
Table Op Msg_type Msg_text
31438
test.t1 analyze status OK
31439
CHECK TABLE t1 EXTENDED;
31440
Table Op Msg_type Msg_text
31441
test.t1 check status OK
31442
CHECKSUM TABLE t1 EXTENDED;
31444
test.t1 <some_value>
31446
Table Op Msg_type Msg_text
31447
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
31448
test.t1 optimize status OK
31449
# check layout success: 1
31450
REPAIR TABLE t1 EXTENDED;
31451
Table Op Msg_type Msg_text
31452
test.t1 repair note The storage engine for the table doesn't support repair
31453
# check layout success: 1
31456
# check TRUNCATE success: 1
31457
# check layout success: 1
31458
# End usability test (inc/partition_check.inc)
31465
f_charbig VARCHAR(1000)
31466
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
31468
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
31469
(PARTITION part1 VALUES LESS THAN (0)
31470
(SUBPARTITION subpart11, SUBPARTITION subpart12),
31471
PARTITION part2 VALUES LESS THAN (5)
31472
(SUBPARTITION subpart21, SUBPARTITION subpart22),
31473
PARTITION part3 VALUES LESS THAN (10)
31474
(SUBPARTITION subpart31, SUBPARTITION subpart32),
31475
PARTITION part4 VALUES LESS THAN (2147483646)
31476
(SUBPARTITION subpart41, SUBPARTITION subpart42));
31477
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31478
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31479
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31480
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
31481
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31482
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31483
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31484
# Start usability test (inc/partition_check.inc)
31486
SHOW CREATE TABLE t1;
31488
t1 CREATE TABLE `t1` (
31489
`f_int1` int(11) NOT NULL DEFAULT '0',
31490
`f_int2` int(11) NOT NULL DEFAULT '0',
31491
`f_char1` char(20) DEFAULT NULL,
31492
`f_char2` char(20) DEFAULT NULL,
31493
`f_charbig` varchar(1000) DEFAULT NULL
31494
) ENGINE=InnoDB DEFAULT CHARSET=latin1
31495
/*!50100 PARTITION BY RANGE (f_int1)
31496
SUBPARTITION BY KEY (f_int2)
31497
(PARTITION part1 VALUES LESS THAN (0)
31498
(SUBPARTITION subpart11 ENGINE = InnoDB,
31499
SUBPARTITION subpart12 ENGINE = InnoDB),
31500
PARTITION part2 VALUES LESS THAN (5)
31501
(SUBPARTITION subpart21 ENGINE = InnoDB,
31502
SUBPARTITION subpart22 ENGINE = InnoDB),
31503
PARTITION part3 VALUES LESS THAN (10)
31504
(SUBPARTITION subpart31 ENGINE = InnoDB,
31505
SUBPARTITION subpart32 ENGINE = InnoDB),
31506
PARTITION part4 VALUES LESS THAN (2147483646)
31507
(SUBPARTITION subpart41 ENGINE = InnoDB,
31508
SUBPARTITION subpart42 ENGINE = InnoDB)) */
31510
# check prerequisites-1 success: 1
31511
# check COUNT(*) success: 1
31512
# check MIN/MAX(f_int1) success: 1
31513
# check MIN/MAX(f_int2) success: 1
31514
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31515
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31516
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31517
WHERE f_int1 IN (2,3);
31518
# check prerequisites-3 success: 1
31519
DELETE FROM t1 WHERE f_charbig = 'delete me';
31520
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
31521
# check read via f_int1 success: 1
31522
# check read via f_int2 success: 1
31524
# check multiple-1 success: 1
31525
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31527
# check multiple-2 success: 1
31528
INSERT INTO t1 SELECT * FROM t0_template
31529
WHERE MOD(f_int1,3) = 0;
31531
# check multiple-3 success: 1
31532
UPDATE t1 SET f_int1 = f_int1 + @max_row
31533
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31534
AND @max_row_div2 + @max_row_div4;
31536
# check multiple-4 success: 1
31538
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31539
AND @max_row_div2 + @max_row_div4 + @max_row;
31541
# check multiple-5 success: 1
31542
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
31544
SET f_int1 = @cur_value , f_int2 = @cur_value,
31545
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31546
f_charbig = '#SINGLE#';
31548
# check single-1 success: 1
31549
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
31551
SET f_int1 = @cur_value , f_int2 = @cur_value,
31552
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
31553
f_charbig = '#SINGLE#';
31555
# check single-2 success: 1
31556
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
31557
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
31558
UPDATE t1 SET f_int1 = @cur_value2
31559
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
31561
# check single-3 success: 1
31562
SET @cur_value1= -1;
31563
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
31564
UPDATE t1 SET f_int1 = @cur_value1
31565
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
31567
# check single-4 success: 1
31568
SELECT MAX(f_int1) INTO @cur_value FROM t1;
31569
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
31571
# check single-5 success: 1
31572
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
31574
# check single-6 success: 1
31575
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
31576
ERROR HY000: Table has no partition for value 2147483647
31577
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
31578
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
31579
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
31580
f_charbig = '#NULL#';
31582
SET f_int1 = NULL , f_int2 = -@max_row,
31583
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
31584
f_charbig = '#NULL#';
31585
ERROR 23000: Column 'f_int1' cannot be null
31586
# check null success: 1
31588
WHERE f_int1 = 0 AND f_int2 = 0
31589
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
31590
AND f_charbig = '#NULL#';
31592
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31593
SELECT f_int1, f_int1, '', '', 'was inserted'
31594
FROM t0_template source_tab
31595
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31597
# check transactions-1 success: 1
31600
# check transactions-2 success: 1
31603
# check transactions-3 success: 1
31604
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31608
# check transactions-4 success: 1
31609
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31610
SELECT f_int1, f_int1, '', '', 'was inserted'
31611
FROM t0_template source_tab
31612
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31614
# check transactions-5 success: 1
31617
# check transactions-6 success: 1
31618
# INFO: Storage engine used for t1 seems to be transactional.
31621
# check transactions-7 success: 1
31622
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31624
SET @@session.sql_mode = 'traditional';
31625
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
31626
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31627
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
31628
'', '', 'was inserted' FROM t0_template
31629
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
31630
ERROR 22012: Division by 0
31633
# check transactions-8 success: 1
31634
# INFO: Storage engine used for t1 seems to be able to revert
31635
# changes made by the failing statement.
31636
SET @@session.sql_mode = '';
31638
DELETE FROM t1 WHERE f_charbig = 'was inserted';
31640
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
31642
# check special-1 success: 1
31643
UPDATE t1 SET f_charbig = '';
31645
# check special-2 success: 1
31646
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
31647
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31648
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
31649
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31650
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31651
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31652
'just inserted' FROM t0_template
31653
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31654
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
31656
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31657
f_charbig = 'updated by trigger'
31658
WHERE f_int1 = new.f_int1;
31660
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31661
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31662
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31664
# check trigger-1 success: 1
31665
DROP TRIGGER trg_1;
31666
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31667
f_int2 = CAST(f_char1 AS SIGNED INT),
31668
f_charbig = 'just inserted'
31669
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31671
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31672
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31673
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31674
'just inserted' FROM t0_template
31675
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31676
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
31678
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31679
f_charbig = 'updated by trigger'
31680
WHERE f_int1 = new.f_int1;
31682
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31683
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
31684
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31686
# check trigger-2 success: 1
31687
DROP TRIGGER trg_1;
31688
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31689
f_int2 = CAST(f_char1 AS SIGNED INT),
31690
f_charbig = 'just inserted'
31691
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31693
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31694
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31695
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31696
'just inserted' FROM t0_template
31697
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31698
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31700
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31701
f_charbig = 'updated by trigger'
31702
WHERE f_int1 = new.f_int1;
31704
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31705
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31707
# check trigger-3 success: 1
31708
DROP TRIGGER trg_1;
31709
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31710
f_int2 = CAST(f_char1 AS SIGNED INT),
31711
f_charbig = 'just inserted'
31712
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31714
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31715
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31716
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31717
'just inserted' FROM t0_template
31718
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31719
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
31721
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31722
f_charbig = 'updated by trigger'
31723
WHERE f_int1 = - old.f_int1;
31725
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31726
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31728
# check trigger-4 success: 1
31729
DROP TRIGGER trg_1;
31730
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31731
f_int2 = CAST(f_char1 AS SIGNED INT),
31732
f_charbig = 'just inserted'
31733
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31735
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31736
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31737
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31738
'just inserted' FROM t0_template
31739
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31740
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31742
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31743
f_charbig = 'updated by trigger'
31744
WHERE f_int1 = new.f_int1;
31746
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31747
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31749
# check trigger-5 success: 1
31750
DROP TRIGGER trg_1;
31751
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31752
f_int2 = CAST(f_char1 AS SIGNED INT),
31753
f_charbig = 'just inserted'
31754
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31756
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31757
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31758
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31759
'just inserted' FROM t0_template
31760
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31761
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
31763
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31764
f_charbig = 'updated by trigger'
31765
WHERE f_int1 = - old.f_int1;
31767
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
31768
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31770
# check trigger-6 success: 1
31771
DROP TRIGGER trg_1;
31772
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31773
f_int2 = CAST(f_char1 AS SIGNED INT),
31774
f_charbig = 'just inserted'
31775
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31777
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31778
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31779
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31780
'just inserted' FROM t0_template
31781
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31782
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
31784
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31785
f_charbig = 'updated by trigger'
31786
WHERE f_int1 = - old.f_int1;
31789
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31791
# check trigger-7 success: 1
31792
DROP TRIGGER trg_1;
31793
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31794
f_int2 = CAST(f_char1 AS SIGNED INT),
31795
f_charbig = 'just inserted'
31796
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31798
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31799
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
31800
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
31801
'just inserted' FROM t0_template
31802
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31803
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
31805
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
31806
f_charbig = 'updated by trigger'
31807
WHERE f_int1 = - old.f_int1;
31810
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
31812
# check trigger-8 success: 1
31813
DROP TRIGGER trg_1;
31814
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31815
f_int2 = CAST(f_char1 AS SIGNED INT),
31816
f_charbig = 'just inserted'
31817
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
31819
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31821
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
31822
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31824
SET new.f_int1 = old.f_int1 + @max_row,
31825
new.f_int2 = old.f_int2 - @max_row,
31826
new.f_charbig = '####updated per update trigger####';
31829
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31830
f_charbig = '####updated per update statement itself####';
31832
# check trigger-9 success: 1
31833
DROP TRIGGER trg_2;
31834
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31835
f_int2 = CAST(f_char1 AS SIGNED INT),
31836
f_charbig = CONCAT('===',f_char1,'===');
31837
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
31839
SET new.f_int1 = new.f_int1 + @max_row,
31840
new.f_int2 = new.f_int2 - @max_row,
31841
new.f_charbig = '####updated per update trigger####';
31844
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
31845
f_charbig = '####updated per update statement itself####';
31847
# check trigger-10 success: 1
31848
DROP TRIGGER trg_2;
31849
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
31850
f_int2 = CAST(f_char1 AS SIGNED INT),
31851
f_charbig = CONCAT('===',f_char1,'===');
31852
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31854
SET new.f_int1 = @my_max1 + @counter,
31855
new.f_int2 = @my_min2 - @counter,
31856
new.f_charbig = '####updated per insert trigger####';
31857
SET @counter = @counter + 1;
31860
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31861
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31862
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31863
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31864
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31866
DROP TRIGGER trg_3;
31868
# check trigger-11 success: 1
31870
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31871
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31872
AND f_charbig = '####updated per insert trigger####';
31873
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
31875
SET new.f_int1 = @my_max1 + @counter,
31876
new.f_int2 = @my_min2 - @counter,
31877
new.f_charbig = '####updated per insert trigger####';
31878
SET @counter = @counter + 1;
31881
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
31882
INSERT INTO t1 (f_char1, f_char2, f_charbig)
31883
SELECT CAST(f_int1 AS CHAR),
31884
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
31885
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
31887
DROP TRIGGER trg_3;
31889
# check trigger-12 success: 1
31891
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
31892
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
31893
AND f_charbig = '####updated per insert trigger####';
31895
Table Op Msg_type Msg_text
31896
test.t1 analyze status OK
31897
CHECK TABLE t1 EXTENDED;
31898
Table Op Msg_type Msg_text
31899
test.t1 check status OK
31900
CHECKSUM TABLE t1 EXTENDED;
31902
test.t1 <some_value>
31904
Table Op Msg_type Msg_text
31905
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
31906
test.t1 optimize status OK
31907
# check layout success: 1
31908
REPAIR TABLE t1 EXTENDED;
31909
Table Op Msg_type Msg_text
31910
test.t1 repair note The storage engine for the table doesn't support repair
31911
# check layout success: 1
31914
# check TRUNCATE success: 1
31915
# check layout success: 1
31916
# End usability test (inc/partition_check.inc)
31923
f_charbig VARCHAR(1000)
31924
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
31926
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
31927
(PARTITION part1 VALUES IN (0)
31928
(SUBPARTITION sp11, SUBPARTITION sp12),
31929
PARTITION part2 VALUES IN (1)
31930
(SUBPARTITION sp21, SUBPARTITION sp22),
31931
PARTITION part3 VALUES IN (2)
31932
(SUBPARTITION sp31, SUBPARTITION sp32),
31933
PARTITION part4 VALUES IN (NULL)
31934
(SUBPARTITION sp41, SUBPARTITION sp42));
31935
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31936
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31937
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
31938
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
31939
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
31940
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
31941
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
31942
# Start usability test (inc/partition_check.inc)
31944
SHOW CREATE TABLE t1;
31946
t1 CREATE TABLE `t1` (
31947
`f_int1` int(11) NOT NULL DEFAULT '0',
31948
`f_int2` int(11) NOT NULL DEFAULT '0',
31949
`f_char1` char(20) DEFAULT NULL,
31950
`f_char2` char(20) DEFAULT NULL,
31951
`f_charbig` varchar(1000) DEFAULT NULL
31952
) ENGINE=InnoDB DEFAULT CHARSET=latin1
31953
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
31954
SUBPARTITION BY HASH (f_int2 + 1)
31955
(PARTITION part1 VALUES IN (0)
31956
(SUBPARTITION sp11 ENGINE = InnoDB,
31957
SUBPARTITION sp12 ENGINE = InnoDB),
31958
PARTITION part2 VALUES IN (1)
31959
(SUBPARTITION sp21 ENGINE = InnoDB,
31960
SUBPARTITION sp22 ENGINE = InnoDB),
31961
PARTITION part3 VALUES IN (2)
31962
(SUBPARTITION sp31 ENGINE = InnoDB,
31963
SUBPARTITION sp32 ENGINE = InnoDB),
31964
PARTITION part4 VALUES IN (NULL)
31965
(SUBPARTITION sp41 ENGINE = InnoDB,
31966
SUBPARTITION sp42 ENGINE = InnoDB)) */
31968
# check prerequisites-1 success: 1
31969
# check COUNT(*) success: 1
31970
# check MIN/MAX(f_int1) success: 1
31971
# check MIN/MAX(f_int2) success: 1
31972
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
31973
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
31974
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
31975
WHERE f_int1 IN (2,3);
31976
# check prerequisites-3 success: 1
31977
DELETE FROM t1 WHERE f_charbig = 'delete me';
31978
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
31979
# check read via f_int1 success: 1
31980
# check read via f_int2 success: 1
31982
# check multiple-1 success: 1
31983
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
31985
# check multiple-2 success: 1
31986
INSERT INTO t1 SELECT * FROM t0_template
31987
WHERE MOD(f_int1,3) = 0;
31989
# check multiple-3 success: 1
31990
UPDATE t1 SET f_int1 = f_int1 + @max_row
31991
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
31992
AND @max_row_div2 + @max_row_div4;
31994
# check multiple-4 success: 1
31996
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
31997
AND @max_row_div2 + @max_row_div4 + @max_row;
31999
# check multiple-5 success: 1
32000
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32002
SET f_int1 = @cur_value , f_int2 = @cur_value,
32003
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32004
f_charbig = '#SINGLE#';
32006
# check single-1 success: 1
32007
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32009
SET f_int1 = @cur_value , f_int2 = @cur_value,
32010
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32011
f_charbig = '#SINGLE#';
32013
# check single-2 success: 1
32014
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32015
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32016
UPDATE t1 SET f_int1 = @cur_value2
32017
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32019
# check single-3 success: 1
32020
SET @cur_value1= -1;
32021
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32022
UPDATE t1 SET f_int1 = @cur_value1
32023
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32025
# check single-4 success: 1
32026
SELECT MAX(f_int1) INTO @cur_value FROM t1;
32027
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32029
# check single-5 success: 1
32030
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32032
# check single-6 success: 1
32033
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32035
# check single-7 success: 1
32036
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32037
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32038
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32039
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32040
f_charbig = '#NULL#';
32042
SET f_int1 = NULL , f_int2 = -@max_row,
32043
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32044
f_charbig = '#NULL#';
32045
ERROR 23000: Column 'f_int1' cannot be null
32046
# check null success: 1
32048
WHERE f_int1 = 0 AND f_int2 = 0
32049
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32050
AND f_charbig = '#NULL#';
32052
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32053
SELECT f_int1, f_int1, '', '', 'was inserted'
32054
FROM t0_template source_tab
32055
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32057
# check transactions-1 success: 1
32060
# check transactions-2 success: 1
32063
# check transactions-3 success: 1
32064
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32068
# check transactions-4 success: 1
32069
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32070
SELECT f_int1, f_int1, '', '', 'was inserted'
32071
FROM t0_template source_tab
32072
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32074
# check transactions-5 success: 1
32077
# check transactions-6 success: 1
32078
# INFO: Storage engine used for t1 seems to be transactional.
32081
# check transactions-7 success: 1
32082
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32084
SET @@session.sql_mode = 'traditional';
32085
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32086
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32087
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32088
'', '', 'was inserted' FROM t0_template
32089
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32090
ERROR 22012: Division by 0
32093
# check transactions-8 success: 1
32094
# INFO: Storage engine used for t1 seems to be able to revert
32095
# changes made by the failing statement.
32096
SET @@session.sql_mode = '';
32098
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32100
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32102
# check special-1 success: 1
32103
UPDATE t1 SET f_charbig = '';
32105
# check special-2 success: 1
32106
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32107
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32108
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32109
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32110
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32111
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32112
'just inserted' FROM t0_template
32113
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32114
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
32116
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32117
f_charbig = 'updated by trigger'
32118
WHERE f_int1 = new.f_int1;
32120
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32121
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32122
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32124
# check trigger-1 success: 1
32125
DROP TRIGGER trg_1;
32126
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32127
f_int2 = CAST(f_char1 AS SIGNED INT),
32128
f_charbig = 'just inserted'
32129
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32131
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32132
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32133
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32134
'just inserted' FROM t0_template
32135
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32136
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
32138
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32139
f_charbig = 'updated by trigger'
32140
WHERE f_int1 = new.f_int1;
32142
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32143
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32144
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32146
# check trigger-2 success: 1
32147
DROP TRIGGER trg_1;
32148
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32149
f_int2 = CAST(f_char1 AS SIGNED INT),
32150
f_charbig = 'just inserted'
32151
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32153
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32154
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32155
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32156
'just inserted' FROM t0_template
32157
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32158
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32160
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32161
f_charbig = 'updated by trigger'
32162
WHERE f_int1 = new.f_int1;
32164
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32165
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32167
# check trigger-3 success: 1
32168
DROP TRIGGER trg_1;
32169
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32170
f_int2 = CAST(f_char1 AS SIGNED INT),
32171
f_charbig = 'just inserted'
32172
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32174
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32175
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32176
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32177
'just inserted' FROM t0_template
32178
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32179
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32181
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32182
f_charbig = 'updated by trigger'
32183
WHERE f_int1 = - old.f_int1;
32185
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32186
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32188
# check trigger-4 success: 1
32189
DROP TRIGGER trg_1;
32190
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32191
f_int2 = CAST(f_char1 AS SIGNED INT),
32192
f_charbig = 'just inserted'
32193
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32195
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32196
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32197
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32198
'just inserted' FROM t0_template
32199
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32200
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32202
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32203
f_charbig = 'updated by trigger'
32204
WHERE f_int1 = new.f_int1;
32206
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32207
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32209
# check trigger-5 success: 1
32210
DROP TRIGGER trg_1;
32211
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32212
f_int2 = CAST(f_char1 AS SIGNED INT),
32213
f_charbig = 'just inserted'
32214
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32216
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32217
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32218
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32219
'just inserted' FROM t0_template
32220
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32221
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32223
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32224
f_charbig = 'updated by trigger'
32225
WHERE f_int1 = - old.f_int1;
32227
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32228
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32230
# check trigger-6 success: 1
32231
DROP TRIGGER trg_1;
32232
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32233
f_int2 = CAST(f_char1 AS SIGNED INT),
32234
f_charbig = 'just inserted'
32235
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32237
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32238
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32239
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32240
'just inserted' FROM t0_template
32241
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32242
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32244
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32245
f_charbig = 'updated by trigger'
32246
WHERE f_int1 = - old.f_int1;
32249
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32251
# check trigger-7 success: 1
32252
DROP TRIGGER trg_1;
32253
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32254
f_int2 = CAST(f_char1 AS SIGNED INT),
32255
f_charbig = 'just inserted'
32256
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32258
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32259
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32260
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32261
'just inserted' FROM t0_template
32262
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32263
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32265
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32266
f_charbig = 'updated by trigger'
32267
WHERE f_int1 = - old.f_int1;
32270
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32272
# check trigger-8 success: 1
32273
DROP TRIGGER trg_1;
32274
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32275
f_int2 = CAST(f_char1 AS SIGNED INT),
32276
f_charbig = 'just inserted'
32277
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32279
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32281
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32282
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32284
SET new.f_int1 = old.f_int1 + @max_row,
32285
new.f_int2 = old.f_int2 - @max_row,
32286
new.f_charbig = '####updated per update trigger####';
32289
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32290
f_charbig = '####updated per update statement itself####';
32292
# check trigger-9 success: 1
32293
DROP TRIGGER trg_2;
32294
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32295
f_int2 = CAST(f_char1 AS SIGNED INT),
32296
f_charbig = CONCAT('===',f_char1,'===');
32297
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32299
SET new.f_int1 = new.f_int1 + @max_row,
32300
new.f_int2 = new.f_int2 - @max_row,
32301
new.f_charbig = '####updated per update trigger####';
32304
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32305
f_charbig = '####updated per update statement itself####';
32307
# check trigger-10 success: 1
32308
DROP TRIGGER trg_2;
32309
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32310
f_int2 = CAST(f_char1 AS SIGNED INT),
32311
f_charbig = CONCAT('===',f_char1,'===');
32312
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32314
SET new.f_int1 = @my_max1 + @counter,
32315
new.f_int2 = @my_min2 - @counter,
32316
new.f_charbig = '####updated per insert trigger####';
32317
SET @counter = @counter + 1;
32320
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32321
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32322
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32323
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32324
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32326
DROP TRIGGER trg_3;
32328
# check trigger-11 success: 1
32330
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32331
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32332
AND f_charbig = '####updated per insert trigger####';
32333
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32335
SET new.f_int1 = @my_max1 + @counter,
32336
new.f_int2 = @my_min2 - @counter,
32337
new.f_charbig = '####updated per insert trigger####';
32338
SET @counter = @counter + 1;
32341
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32342
INSERT INTO t1 (f_char1, f_char2, f_charbig)
32343
SELECT CAST(f_int1 AS CHAR),
32344
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32345
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32347
DROP TRIGGER trg_3;
32349
# check trigger-12 success: 1
32351
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32352
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32353
AND f_charbig = '####updated per insert trigger####';
32355
Table Op Msg_type Msg_text
32356
test.t1 analyze status OK
32357
CHECK TABLE t1 EXTENDED;
32358
Table Op Msg_type Msg_text
32359
test.t1 check status OK
32360
CHECKSUM TABLE t1 EXTENDED;
32362
test.t1 <some_value>
32364
Table Op Msg_type Msg_text
32365
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
32366
test.t1 optimize status OK
32367
# check layout success: 1
32368
REPAIR TABLE t1 EXTENDED;
32369
Table Op Msg_type Msg_text
32370
test.t1 repair note The storage engine for the table doesn't support repair
32371
# check layout success: 1
32374
# check TRUNCATE success: 1
32375
# check layout success: 1
32376
# End usability test (inc/partition_check.inc)
32383
f_charbig VARCHAR(1000)
32384
, UNIQUE INDEX uidx1 (f_int2,f_int1), PRIMARY KEY(f_int1,f_int2)
32386
PARTITION BY LIST(ABS(MOD(f_int1,2)))
32387
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
32388
(PARTITION part1 VALUES IN (0),
32389
PARTITION part2 VALUES IN (1),
32390
PARTITION part3 VALUES IN (NULL));
32391
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32392
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32393
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
32394
ALTER TABLE t1 DROP PRIMARY KEY, DROP INDEX uidx1;
32395
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32396
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32397
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
32398
# Start usability test (inc/partition_check.inc)
32400
SHOW CREATE TABLE t1;
32402
t1 CREATE TABLE `t1` (
32403
`f_int1` int(11) NOT NULL DEFAULT '0',
32404
`f_int2` int(11) NOT NULL DEFAULT '0',
32405
`f_char1` char(20) DEFAULT NULL,
32406
`f_char2` char(20) DEFAULT NULL,
32407
`f_charbig` varchar(1000) DEFAULT NULL
32408
) ENGINE=InnoDB DEFAULT CHARSET=latin1
32409
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
32410
SUBPARTITION BY KEY (f_int2)
32412
(PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
32413
PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
32414
PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
32416
# check prerequisites-1 success: 1
32417
# check COUNT(*) success: 1
32418
# check MIN/MAX(f_int1) success: 1
32419
# check MIN/MAX(f_int2) success: 1
32420
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32421
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32422
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
32423
WHERE f_int1 IN (2,3);
32424
# check prerequisites-3 success: 1
32425
DELETE FROM t1 WHERE f_charbig = 'delete me';
32426
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
32427
# check read via f_int1 success: 1
32428
# check read via f_int2 success: 1
32430
# check multiple-1 success: 1
32431
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
32433
# check multiple-2 success: 1
32434
INSERT INTO t1 SELECT * FROM t0_template
32435
WHERE MOD(f_int1,3) = 0;
32437
# check multiple-3 success: 1
32438
UPDATE t1 SET f_int1 = f_int1 + @max_row
32439
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
32440
AND @max_row_div2 + @max_row_div4;
32442
# check multiple-4 success: 1
32444
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32445
AND @max_row_div2 + @max_row_div4 + @max_row;
32447
# check multiple-5 success: 1
32448
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32450
SET f_int1 = @cur_value , f_int2 = @cur_value,
32451
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32452
f_charbig = '#SINGLE#';
32454
# check single-1 success: 1
32455
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32457
SET f_int1 = @cur_value , f_int2 = @cur_value,
32458
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32459
f_charbig = '#SINGLE#';
32461
# check single-2 success: 1
32462
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32463
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32464
UPDATE t1 SET f_int1 = @cur_value2
32465
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32467
# check single-3 success: 1
32468
SET @cur_value1= -1;
32469
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32470
UPDATE t1 SET f_int1 = @cur_value1
32471
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32473
# check single-4 success: 1
32474
SELECT MAX(f_int1) INTO @cur_value FROM t1;
32475
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32477
# check single-5 success: 1
32478
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32480
# check single-6 success: 1
32481
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32483
# check single-7 success: 1
32484
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32485
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32486
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32487
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32488
f_charbig = '#NULL#';
32490
SET f_int1 = NULL , f_int2 = -@max_row,
32491
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32492
f_charbig = '#NULL#';
32493
ERROR 23000: Column 'f_int1' cannot be null
32494
# check null success: 1
32496
WHERE f_int1 = 0 AND f_int2 = 0
32497
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32498
AND f_charbig = '#NULL#';
32500
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32501
SELECT f_int1, f_int1, '', '', 'was inserted'
32502
FROM t0_template source_tab
32503
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32505
# check transactions-1 success: 1
32508
# check transactions-2 success: 1
32511
# check transactions-3 success: 1
32512
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32516
# check transactions-4 success: 1
32517
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32518
SELECT f_int1, f_int1, '', '', 'was inserted'
32519
FROM t0_template source_tab
32520
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32522
# check transactions-5 success: 1
32525
# check transactions-6 success: 1
32526
# INFO: Storage engine used for t1 seems to be transactional.
32529
# check transactions-7 success: 1
32530
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32532
SET @@session.sql_mode = 'traditional';
32533
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32534
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32535
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32536
'', '', 'was inserted' FROM t0_template
32537
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32538
ERROR 22012: Division by 0
32541
# check transactions-8 success: 1
32542
# INFO: Storage engine used for t1 seems to be able to revert
32543
# changes made by the failing statement.
32544
SET @@session.sql_mode = '';
32546
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32548
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
32550
# check special-1 success: 1
32551
UPDATE t1 SET f_charbig = '';
32553
# check special-2 success: 1
32554
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
32555
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32556
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
32557
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32558
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32559
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32560
'just inserted' FROM t0_template
32561
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32562
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
32564
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32565
f_charbig = 'updated by trigger'
32566
WHERE f_int1 = new.f_int1;
32568
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32569
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32570
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32572
# check trigger-1 success: 1
32573
DROP TRIGGER trg_1;
32574
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32575
f_int2 = CAST(f_char1 AS SIGNED INT),
32576
f_charbig = 'just inserted'
32577
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32579
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32580
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32581
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32582
'just inserted' FROM t0_template
32583
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32584
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
32586
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32587
f_charbig = 'updated by trigger'
32588
WHERE f_int1 = new.f_int1;
32590
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32591
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
32592
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32594
# check trigger-2 success: 1
32595
DROP TRIGGER trg_1;
32596
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32597
f_int2 = CAST(f_char1 AS SIGNED INT),
32598
f_charbig = 'just inserted'
32599
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32601
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32602
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32603
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32604
'just inserted' FROM t0_template
32605
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32606
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32608
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32609
f_charbig = 'updated by trigger'
32610
WHERE f_int1 = new.f_int1;
32612
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32613
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32615
# check trigger-3 success: 1
32616
DROP TRIGGER trg_1;
32617
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32618
f_int2 = CAST(f_char1 AS SIGNED INT),
32619
f_charbig = 'just inserted'
32620
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32622
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32623
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32624
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32625
'just inserted' FROM t0_template
32626
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32627
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
32629
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32630
f_charbig = 'updated by trigger'
32631
WHERE f_int1 = - old.f_int1;
32633
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32634
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32636
# check trigger-4 success: 1
32637
DROP TRIGGER trg_1;
32638
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32639
f_int2 = CAST(f_char1 AS SIGNED INT),
32640
f_charbig = 'just inserted'
32641
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32643
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32644
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32645
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32646
'just inserted' FROM t0_template
32647
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32648
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32650
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32651
f_charbig = 'updated by trigger'
32652
WHERE f_int1 = new.f_int1;
32654
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32655
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32657
# check trigger-5 success: 1
32658
DROP TRIGGER trg_1;
32659
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32660
f_int2 = CAST(f_char1 AS SIGNED INT),
32661
f_charbig = 'just inserted'
32662
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32664
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32665
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32666
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32667
'just inserted' FROM t0_template
32668
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32669
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
32671
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32672
f_charbig = 'updated by trigger'
32673
WHERE f_int1 = - old.f_int1;
32675
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
32676
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32678
# check trigger-6 success: 1
32679
DROP TRIGGER trg_1;
32680
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32681
f_int2 = CAST(f_char1 AS SIGNED INT),
32682
f_charbig = 'just inserted'
32683
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32685
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32686
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32687
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32688
'just inserted' FROM t0_template
32689
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32690
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
32692
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32693
f_charbig = 'updated by trigger'
32694
WHERE f_int1 = - old.f_int1;
32697
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32699
# check trigger-7 success: 1
32700
DROP TRIGGER trg_1;
32701
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32702
f_int2 = CAST(f_char1 AS SIGNED INT),
32703
f_charbig = 'just inserted'
32704
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32706
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32707
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
32708
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
32709
'just inserted' FROM t0_template
32710
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32711
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
32713
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
32714
f_charbig = 'updated by trigger'
32715
WHERE f_int1 = - old.f_int1;
32718
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
32720
# check trigger-8 success: 1
32721
DROP TRIGGER trg_1;
32722
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32723
f_int2 = CAST(f_char1 AS SIGNED INT),
32724
f_charbig = 'just inserted'
32725
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
32727
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32729
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
32730
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32732
SET new.f_int1 = old.f_int1 + @max_row,
32733
new.f_int2 = old.f_int2 - @max_row,
32734
new.f_charbig = '####updated per update trigger####';
32737
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32738
f_charbig = '####updated per update statement itself####';
32740
# check trigger-9 success: 1
32741
DROP TRIGGER trg_2;
32742
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32743
f_int2 = CAST(f_char1 AS SIGNED INT),
32744
f_charbig = CONCAT('===',f_char1,'===');
32745
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
32747
SET new.f_int1 = new.f_int1 + @max_row,
32748
new.f_int2 = new.f_int2 - @max_row,
32749
new.f_charbig = '####updated per update trigger####';
32752
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
32753
f_charbig = '####updated per update statement itself####';
32755
# check trigger-10 success: 1
32756
DROP TRIGGER trg_2;
32757
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
32758
f_int2 = CAST(f_char1 AS SIGNED INT),
32759
f_charbig = CONCAT('===',f_char1,'===');
32760
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32762
SET new.f_int1 = @my_max1 + @counter,
32763
new.f_int2 = @my_min2 - @counter,
32764
new.f_charbig = '####updated per insert trigger####';
32765
SET @counter = @counter + 1;
32768
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32769
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32770
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32771
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32772
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32774
DROP TRIGGER trg_3;
32776
# check trigger-11 success: 1
32778
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32779
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32780
AND f_charbig = '####updated per insert trigger####';
32781
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
32783
SET new.f_int1 = @my_max1 + @counter,
32784
new.f_int2 = @my_min2 - @counter,
32785
new.f_charbig = '####updated per insert trigger####';
32786
SET @counter = @counter + 1;
32789
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
32790
INSERT INTO t1 (f_char1, f_char2, f_charbig)
32791
SELECT CAST(f_int1 AS CHAR),
32792
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
32793
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
32795
DROP TRIGGER trg_3;
32797
# check trigger-12 success: 1
32799
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
32800
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
32801
AND f_charbig = '####updated per insert trigger####';
32803
Table Op Msg_type Msg_text
32804
test.t1 analyze status OK
32805
CHECK TABLE t1 EXTENDED;
32806
Table Op Msg_type Msg_text
32807
test.t1 check status OK
32808
CHECKSUM TABLE t1 EXTENDED;
32810
test.t1 <some_value>
32812
Table Op Msg_type Msg_text
32813
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
32814
test.t1 optimize status OK
32815
# check layout success: 1
32816
REPAIR TABLE t1 EXTENDED;
32817
Table Op Msg_type Msg_text
32818
test.t1 repair note The storage engine for the table doesn't support repair
32819
# check layout success: 1
32822
# check TRUNCATE success: 1
32823
# check layout success: 1
32824
# End usability test (inc/partition_check.inc)
32826
DROP TABLE IF EXISTS t1;
32832
f_charbig VARCHAR(1000)
32833
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
32835
PARTITION BY HASH(f_int1 + f_int2) PARTITIONS 2;
32836
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32837
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32838
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
32839
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
32840
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
32841
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
32842
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
32843
# Start usability test (inc/partition_check.inc)
32845
SHOW CREATE TABLE t1;
32847
t1 CREATE TABLE `t1` (
32848
`f_int1` int(11) DEFAULT NULL,
32849
`f_int2` int(11) DEFAULT NULL,
32850
`f_char1` char(20) DEFAULT NULL,
32851
`f_char2` char(20) DEFAULT NULL,
32852
`f_charbig` varchar(1000) DEFAULT NULL
32853
) ENGINE=InnoDB DEFAULT CHARSET=latin1
32854
/*!50100 PARTITION BY HASH (f_int1 + f_int2)
32857
# check prerequisites-1 success: 1
32858
# check COUNT(*) success: 1
32859
# check MIN/MAX(f_int1) success: 1
32860
# check MIN/MAX(f_int2) success: 1
32861
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32862
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
32863
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
32864
WHERE f_int1 IN (2,3);
32865
# check prerequisites-3 success: 1
32866
DELETE FROM t1 WHERE f_charbig = 'delete me';
32867
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
32868
# check read via f_int1 success: 1
32869
# check read via f_int2 success: 1
32871
# check multiple-1 success: 1
32872
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
32874
# check multiple-2 success: 1
32875
INSERT INTO t1 SELECT * FROM t0_template
32876
WHERE MOD(f_int1,3) = 0;
32878
# check multiple-3 success: 1
32879
UPDATE t1 SET f_int1 = f_int1 + @max_row
32880
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
32881
AND @max_row_div2 + @max_row_div4;
32883
# check multiple-4 success: 1
32885
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
32886
AND @max_row_div2 + @max_row_div4 + @max_row;
32888
# check multiple-5 success: 1
32889
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
32891
SET f_int1 = @cur_value , f_int2 = @cur_value,
32892
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32893
f_charbig = '#SINGLE#';
32895
# check single-1 success: 1
32896
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
32898
SET f_int1 = @cur_value , f_int2 = @cur_value,
32899
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
32900
f_charbig = '#SINGLE#';
32902
# check single-2 success: 1
32903
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
32904
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
32905
UPDATE t1 SET f_int1 = @cur_value2
32906
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
32908
# check single-3 success: 1
32909
SET @cur_value1= -1;
32910
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
32911
UPDATE t1 SET f_int1 = @cur_value1
32912
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
32914
# check single-4 success: 1
32915
SELECT MAX(f_int1) INTO @cur_value FROM t1;
32916
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
32918
# check single-5 success: 1
32919
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
32921
# check single-6 success: 1
32922
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
32924
# check single-7 success: 1
32925
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
32926
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
32927
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
32928
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
32929
f_charbig = '#NULL#';
32931
SET f_int1 = NULL , f_int2 = -@max_row,
32932
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
32933
f_charbig = '#NULL#';
32934
# check null success: 1
32936
# check null-1 success: 1
32937
UPDATE t1 SET f_int1 = -@max_row
32938
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32939
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32941
# check null-2 success: 1
32942
UPDATE t1 SET f_int1 = NULL
32943
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32944
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32946
# check null-3 success: 1
32948
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
32949
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
32951
# check null-4 success: 1
32953
WHERE f_int1 = 0 AND f_int2 = 0
32954
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
32955
AND f_charbig = '#NULL#';
32957
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32958
SELECT f_int1, f_int1, '', '', 'was inserted'
32959
FROM t0_template source_tab
32960
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32962
# check transactions-1 success: 1
32965
# check transactions-2 success: 1
32968
# check transactions-3 success: 1
32969
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32973
# check transactions-4 success: 1
32974
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32975
SELECT f_int1, f_int1, '', '', 'was inserted'
32976
FROM t0_template source_tab
32977
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32979
# check transactions-5 success: 1
32982
# check transactions-6 success: 1
32983
# INFO: Storage engine used for t1 seems to be transactional.
32986
# check transactions-7 success: 1
32987
DELETE FROM t1 WHERE f_charbig = 'was inserted';
32989
SET @@session.sql_mode = 'traditional';
32990
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
32991
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
32992
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
32993
'', '', 'was inserted' FROM t0_template
32994
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
32995
ERROR 22012: Division by 0
32998
# check transactions-8 success: 1
32999
# INFO: Storage engine used for t1 seems to be able to revert
33000
# changes made by the failing statement.
33001
SET @@session.sql_mode = '';
33003
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33005
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33007
# check special-1 success: 1
33008
UPDATE t1 SET f_charbig = '';
33010
# check special-2 success: 1
33011
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33012
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33013
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33014
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33015
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33016
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33017
'just inserted' FROM t0_template
33018
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33019
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
33021
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33022
f_charbig = 'updated by trigger'
33023
WHERE f_int1 = new.f_int1;
33025
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33026
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33027
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33029
# check trigger-1 success: 1
33030
DROP TRIGGER trg_1;
33031
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33032
f_int2 = CAST(f_char1 AS SIGNED INT),
33033
f_charbig = 'just inserted'
33034
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33036
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33037
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33038
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33039
'just inserted' FROM t0_template
33040
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33041
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
33043
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33044
f_charbig = 'updated by trigger'
33045
WHERE f_int1 = new.f_int1;
33047
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33048
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33049
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33051
# check trigger-2 success: 1
33052
DROP TRIGGER trg_1;
33053
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33054
f_int2 = CAST(f_char1 AS SIGNED INT),
33055
f_charbig = 'just inserted'
33056
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33058
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33059
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33060
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33061
'just inserted' FROM t0_template
33062
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33063
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33065
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33066
f_charbig = 'updated by trigger'
33067
WHERE f_int1 = new.f_int1;
33069
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33070
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33072
# check trigger-3 success: 1
33073
DROP TRIGGER trg_1;
33074
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33075
f_int2 = CAST(f_char1 AS SIGNED INT),
33076
f_charbig = 'just inserted'
33077
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33079
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33080
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33081
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33082
'just inserted' FROM t0_template
33083
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33084
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33086
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33087
f_charbig = 'updated by trigger'
33088
WHERE f_int1 = - old.f_int1;
33090
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33091
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33093
# check trigger-4 success: 1
33094
DROP TRIGGER trg_1;
33095
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33096
f_int2 = CAST(f_char1 AS SIGNED INT),
33097
f_charbig = 'just inserted'
33098
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33100
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33101
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33102
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33103
'just inserted' FROM t0_template
33104
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33105
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33107
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33108
f_charbig = 'updated by trigger'
33109
WHERE f_int1 = new.f_int1;
33111
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33112
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33114
# check trigger-5 success: 1
33115
DROP TRIGGER trg_1;
33116
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33117
f_int2 = CAST(f_char1 AS SIGNED INT),
33118
f_charbig = 'just inserted'
33119
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33121
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33122
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33123
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33124
'just inserted' FROM t0_template
33125
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33126
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33128
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33129
f_charbig = 'updated by trigger'
33130
WHERE f_int1 = - old.f_int1;
33132
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33133
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33135
# check trigger-6 success: 1
33136
DROP TRIGGER trg_1;
33137
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33138
f_int2 = CAST(f_char1 AS SIGNED INT),
33139
f_charbig = 'just inserted'
33140
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33142
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33143
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33144
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33145
'just inserted' FROM t0_template
33146
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33147
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
33149
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33150
f_charbig = 'updated by trigger'
33151
WHERE f_int1 = - old.f_int1;
33154
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33156
# check trigger-7 success: 1
33157
DROP TRIGGER trg_1;
33158
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33159
f_int2 = CAST(f_char1 AS SIGNED INT),
33160
f_charbig = 'just inserted'
33161
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33163
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33164
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33165
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33166
'just inserted' FROM t0_template
33167
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33168
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33170
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33171
f_charbig = 'updated by trigger'
33172
WHERE f_int1 = - old.f_int1;
33175
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33177
# check trigger-8 success: 1
33178
DROP TRIGGER trg_1;
33179
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33180
f_int2 = CAST(f_char1 AS SIGNED INT),
33181
f_charbig = 'just inserted'
33182
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33184
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33186
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33187
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33189
SET new.f_int1 = old.f_int1 + @max_row,
33190
new.f_int2 = old.f_int2 - @max_row,
33191
new.f_charbig = '####updated per update trigger####';
33194
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33195
f_charbig = '####updated per update statement itself####';
33197
# check trigger-9 success: 1
33198
DROP TRIGGER trg_2;
33199
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33200
f_int2 = CAST(f_char1 AS SIGNED INT),
33201
f_charbig = CONCAT('===',f_char1,'===');
33202
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33204
SET new.f_int1 = new.f_int1 + @max_row,
33205
new.f_int2 = new.f_int2 - @max_row,
33206
new.f_charbig = '####updated per update trigger####';
33209
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33210
f_charbig = '####updated per update statement itself####';
33212
# check trigger-10 success: 1
33213
DROP TRIGGER trg_2;
33214
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33215
f_int2 = CAST(f_char1 AS SIGNED INT),
33216
f_charbig = CONCAT('===',f_char1,'===');
33217
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33219
SET new.f_int1 = @my_max1 + @counter,
33220
new.f_int2 = @my_min2 - @counter,
33221
new.f_charbig = '####updated per insert trigger####';
33222
SET @counter = @counter + 1;
33225
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33226
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33227
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33228
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33229
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33231
DROP TRIGGER trg_3;
33233
# check trigger-11 success: 1
33235
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33236
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33237
AND f_charbig = '####updated per insert trigger####';
33238
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33240
SET new.f_int1 = @my_max1 + @counter,
33241
new.f_int2 = @my_min2 - @counter,
33242
new.f_charbig = '####updated per insert trigger####';
33243
SET @counter = @counter + 1;
33246
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33247
INSERT INTO t1 (f_char1, f_char2, f_charbig)
33248
SELECT CAST(f_int1 AS CHAR),
33249
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33250
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33252
DROP TRIGGER trg_3;
33254
# check trigger-12 success: 1
33256
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33257
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33258
AND f_charbig = '####updated per insert trigger####';
33260
Table Op Msg_type Msg_text
33261
test.t1 analyze status OK
33262
CHECK TABLE t1 EXTENDED;
33263
Table Op Msg_type Msg_text
33264
test.t1 check status OK
33265
CHECKSUM TABLE t1 EXTENDED;
33267
test.t1 <some_value>
33269
Table Op Msg_type Msg_text
33270
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
33271
test.t1 optimize status OK
33272
# check layout success: 1
33273
REPAIR TABLE t1 EXTENDED;
33274
Table Op Msg_type Msg_text
33275
test.t1 repair note The storage engine for the table doesn't support repair
33276
# check layout success: 1
33279
# check TRUNCATE success: 1
33280
# check layout success: 1
33281
# End usability test (inc/partition_check.inc)
33288
f_charbig VARCHAR(1000)
33289
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
33291
PARTITION BY KEY(f_int1,f_int2) PARTITIONS 5;
33292
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33293
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33294
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
33295
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
33296
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33297
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33298
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
33299
# Start usability test (inc/partition_check.inc)
33301
SHOW CREATE TABLE t1;
33303
t1 CREATE TABLE `t1` (
33304
`f_int1` int(11) DEFAULT NULL,
33305
`f_int2` int(11) DEFAULT NULL,
33306
`f_char1` char(20) DEFAULT NULL,
33307
`f_char2` char(20) DEFAULT NULL,
33308
`f_charbig` varchar(1000) DEFAULT NULL
33309
) ENGINE=InnoDB DEFAULT CHARSET=latin1
33310
/*!50100 PARTITION BY KEY (f_int1,f_int2)
33313
# check prerequisites-1 success: 1
33314
# check COUNT(*) success: 1
33315
# check MIN/MAX(f_int1) success: 1
33316
# check MIN/MAX(f_int2) success: 1
33317
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33318
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33319
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
33320
WHERE f_int1 IN (2,3);
33321
# check prerequisites-3 success: 1
33322
DELETE FROM t1 WHERE f_charbig = 'delete me';
33323
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
33324
# check read via f_int1 success: 1
33325
# check read via f_int2 success: 1
33327
# check multiple-1 success: 1
33328
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
33330
# check multiple-2 success: 1
33331
INSERT INTO t1 SELECT * FROM t0_template
33332
WHERE MOD(f_int1,3) = 0;
33334
# check multiple-3 success: 1
33335
UPDATE t1 SET f_int1 = f_int1 + @max_row
33336
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
33337
AND @max_row_div2 + @max_row_div4;
33339
# check multiple-4 success: 1
33341
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
33342
AND @max_row_div2 + @max_row_div4 + @max_row;
33344
# check multiple-5 success: 1
33345
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
33347
SET f_int1 = @cur_value , f_int2 = @cur_value,
33348
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33349
f_charbig = '#SINGLE#';
33351
# check single-1 success: 1
33352
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
33354
SET f_int1 = @cur_value , f_int2 = @cur_value,
33355
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33356
f_charbig = '#SINGLE#';
33358
# check single-2 success: 1
33359
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
33360
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
33361
UPDATE t1 SET f_int1 = @cur_value2
33362
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
33364
# check single-3 success: 1
33365
SET @cur_value1= -1;
33366
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
33367
UPDATE t1 SET f_int1 = @cur_value1
33368
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
33370
# check single-4 success: 1
33371
SELECT MAX(f_int1) INTO @cur_value FROM t1;
33372
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
33374
# check single-5 success: 1
33375
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
33377
# check single-6 success: 1
33378
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
33380
# check single-7 success: 1
33381
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
33382
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
33383
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
33384
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
33385
f_charbig = '#NULL#';
33387
SET f_int1 = NULL , f_int2 = -@max_row,
33388
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
33389
f_charbig = '#NULL#';
33390
# check null success: 1
33392
# check null-1 success: 1
33393
UPDATE t1 SET f_int1 = -@max_row
33394
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33395
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33397
# check null-2 success: 1
33398
UPDATE t1 SET f_int1 = NULL
33399
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33400
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33402
# check null-3 success: 1
33404
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33405
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33407
# check null-4 success: 1
33409
WHERE f_int1 = 0 AND f_int2 = 0
33410
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
33411
AND f_charbig = '#NULL#';
33413
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33414
SELECT f_int1, f_int1, '', '', 'was inserted'
33415
FROM t0_template source_tab
33416
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33418
# check transactions-1 success: 1
33421
# check transactions-2 success: 1
33424
# check transactions-3 success: 1
33425
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33429
# check transactions-4 success: 1
33430
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33431
SELECT f_int1, f_int1, '', '', 'was inserted'
33432
FROM t0_template source_tab
33433
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33435
# check transactions-5 success: 1
33438
# check transactions-6 success: 1
33439
# INFO: Storage engine used for t1 seems to be transactional.
33442
# check transactions-7 success: 1
33443
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33445
SET @@session.sql_mode = 'traditional';
33446
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
33447
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33448
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
33449
'', '', 'was inserted' FROM t0_template
33450
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33451
ERROR 22012: Division by 0
33454
# check transactions-8 success: 1
33455
# INFO: Storage engine used for t1 seems to be able to revert
33456
# changes made by the failing statement.
33457
SET @@session.sql_mode = '';
33459
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33461
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33463
# check special-1 success: 1
33464
UPDATE t1 SET f_charbig = '';
33466
# check special-2 success: 1
33467
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33468
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33469
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33470
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33471
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33472
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33473
'just inserted' FROM t0_template
33474
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33475
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
33477
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33478
f_charbig = 'updated by trigger'
33479
WHERE f_int1 = new.f_int1;
33481
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33482
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33483
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33485
# check trigger-1 success: 1
33486
DROP TRIGGER trg_1;
33487
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33488
f_int2 = CAST(f_char1 AS SIGNED INT),
33489
f_charbig = 'just inserted'
33490
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33492
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33493
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33494
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33495
'just inserted' FROM t0_template
33496
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33497
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
33499
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33500
f_charbig = 'updated by trigger'
33501
WHERE f_int1 = new.f_int1;
33503
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33504
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33505
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33507
# check trigger-2 success: 1
33508
DROP TRIGGER trg_1;
33509
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33510
f_int2 = CAST(f_char1 AS SIGNED INT),
33511
f_charbig = 'just inserted'
33512
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33514
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33515
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33516
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33517
'just inserted' FROM t0_template
33518
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33519
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33521
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33522
f_charbig = 'updated by trigger'
33523
WHERE f_int1 = new.f_int1;
33525
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33526
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33528
# check trigger-3 success: 1
33529
DROP TRIGGER trg_1;
33530
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33531
f_int2 = CAST(f_char1 AS SIGNED INT),
33532
f_charbig = 'just inserted'
33533
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33535
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33536
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33537
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33538
'just inserted' FROM t0_template
33539
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33540
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33542
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33543
f_charbig = 'updated by trigger'
33544
WHERE f_int1 = - old.f_int1;
33546
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33547
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33549
# check trigger-4 success: 1
33550
DROP TRIGGER trg_1;
33551
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33552
f_int2 = CAST(f_char1 AS SIGNED INT),
33553
f_charbig = 'just inserted'
33554
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33556
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33557
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33558
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33559
'just inserted' FROM t0_template
33560
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33561
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33563
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33564
f_charbig = 'updated by trigger'
33565
WHERE f_int1 = new.f_int1;
33567
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33568
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33570
# check trigger-5 success: 1
33571
DROP TRIGGER trg_1;
33572
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33573
f_int2 = CAST(f_char1 AS SIGNED INT),
33574
f_charbig = 'just inserted'
33575
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33577
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33578
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33579
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33580
'just inserted' FROM t0_template
33581
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33582
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
33584
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33585
f_charbig = 'updated by trigger'
33586
WHERE f_int1 = - old.f_int1;
33588
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33589
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33591
# check trigger-6 success: 1
33592
DROP TRIGGER trg_1;
33593
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33594
f_int2 = CAST(f_char1 AS SIGNED INT),
33595
f_charbig = 'just inserted'
33596
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33598
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33599
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33600
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33601
'just inserted' FROM t0_template
33602
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33603
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
33605
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33606
f_charbig = 'updated by trigger'
33607
WHERE f_int1 = - old.f_int1;
33610
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33612
# check trigger-7 success: 1
33613
DROP TRIGGER trg_1;
33614
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33615
f_int2 = CAST(f_char1 AS SIGNED INT),
33616
f_charbig = 'just inserted'
33617
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33619
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33620
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33621
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33622
'just inserted' FROM t0_template
33623
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33624
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
33626
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33627
f_charbig = 'updated by trigger'
33628
WHERE f_int1 = - old.f_int1;
33631
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33633
# check trigger-8 success: 1
33634
DROP TRIGGER trg_1;
33635
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33636
f_int2 = CAST(f_char1 AS SIGNED INT),
33637
f_charbig = 'just inserted'
33638
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33640
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33642
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33643
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33645
SET new.f_int1 = old.f_int1 + @max_row,
33646
new.f_int2 = old.f_int2 - @max_row,
33647
new.f_charbig = '####updated per update trigger####';
33650
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33651
f_charbig = '####updated per update statement itself####';
33653
# check trigger-9 success: 1
33654
DROP TRIGGER trg_2;
33655
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33656
f_int2 = CAST(f_char1 AS SIGNED INT),
33657
f_charbig = CONCAT('===',f_char1,'===');
33658
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
33660
SET new.f_int1 = new.f_int1 + @max_row,
33661
new.f_int2 = new.f_int2 - @max_row,
33662
new.f_charbig = '####updated per update trigger####';
33665
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
33666
f_charbig = '####updated per update statement itself####';
33668
# check trigger-10 success: 1
33669
DROP TRIGGER trg_2;
33670
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33671
f_int2 = CAST(f_char1 AS SIGNED INT),
33672
f_charbig = CONCAT('===',f_char1,'===');
33673
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33675
SET new.f_int1 = @my_max1 + @counter,
33676
new.f_int2 = @my_min2 - @counter,
33677
new.f_charbig = '####updated per insert trigger####';
33678
SET @counter = @counter + 1;
33681
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33682
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33683
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33684
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33685
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33687
DROP TRIGGER trg_3;
33689
# check trigger-11 success: 1
33691
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33692
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33693
AND f_charbig = '####updated per insert trigger####';
33694
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
33696
SET new.f_int1 = @my_max1 + @counter,
33697
new.f_int2 = @my_min2 - @counter,
33698
new.f_charbig = '####updated per insert trigger####';
33699
SET @counter = @counter + 1;
33702
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
33703
INSERT INTO t1 (f_char1, f_char2, f_charbig)
33704
SELECT CAST(f_int1 AS CHAR),
33705
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
33706
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
33708
DROP TRIGGER trg_3;
33710
# check trigger-12 success: 1
33712
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
33713
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
33714
AND f_charbig = '####updated per insert trigger####';
33716
Table Op Msg_type Msg_text
33717
test.t1 analyze status OK
33718
CHECK TABLE t1 EXTENDED;
33719
Table Op Msg_type Msg_text
33720
test.t1 check status OK
33721
CHECKSUM TABLE t1 EXTENDED;
33723
test.t1 <some_value>
33725
Table Op Msg_type Msg_text
33726
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
33727
test.t1 optimize status OK
33728
# check layout success: 1
33729
REPAIR TABLE t1 EXTENDED;
33730
Table Op Msg_type Msg_text
33731
test.t1 repair note The storage engine for the table doesn't support repair
33732
# check layout success: 1
33735
# check TRUNCATE success: 1
33736
# check layout success: 1
33737
# End usability test (inc/partition_check.inc)
33744
f_charbig VARCHAR(1000)
33745
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
33747
PARTITION BY LIST(MOD(f_int1 + f_int2,4))
33748
(PARTITION part_3 VALUES IN (-3),
33749
PARTITION part_2 VALUES IN (-2),
33750
PARTITION part_1 VALUES IN (-1),
33751
PARTITION part_N VALUES IN (NULL),
33752
PARTITION part0 VALUES IN (0),
33753
PARTITION part1 VALUES IN (1),
33754
PARTITION part2 VALUES IN (2),
33755
PARTITION part3 VALUES IN (3));
33756
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33757
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33758
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
33759
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
33760
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33761
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
33762
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
33763
# Start usability test (inc/partition_check.inc)
33765
SHOW CREATE TABLE t1;
33767
t1 CREATE TABLE `t1` (
33768
`f_int1` int(11) DEFAULT NULL,
33769
`f_int2` int(11) DEFAULT NULL,
33770
`f_char1` char(20) DEFAULT NULL,
33771
`f_char2` char(20) DEFAULT NULL,
33772
`f_charbig` varchar(1000) DEFAULT NULL
33773
) ENGINE=InnoDB DEFAULT CHARSET=latin1
33774
/*!50100 PARTITION BY LIST (MOD(f_int1 + f_int2,4))
33775
(PARTITION part_3 VALUES IN (-3) ENGINE = InnoDB,
33776
PARTITION part_2 VALUES IN (-2) ENGINE = InnoDB,
33777
PARTITION part_1 VALUES IN (-1) ENGINE = InnoDB,
33778
PARTITION part_N VALUES IN (NULL) ENGINE = InnoDB,
33779
PARTITION part0 VALUES IN (0) ENGINE = InnoDB,
33780
PARTITION part1 VALUES IN (1) ENGINE = InnoDB,
33781
PARTITION part2 VALUES IN (2) ENGINE = InnoDB,
33782
PARTITION part3 VALUES IN (3) ENGINE = InnoDB) */
33784
# check prerequisites-1 success: 1
33785
# check COUNT(*) success: 1
33786
# check MIN/MAX(f_int1) success: 1
33787
# check MIN/MAX(f_int2) success: 1
33788
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33789
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
33790
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
33791
WHERE f_int1 IN (2,3);
33792
# check prerequisites-3 success: 1
33793
DELETE FROM t1 WHERE f_charbig = 'delete me';
33794
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
33795
# check read via f_int1 success: 1
33796
# check read via f_int2 success: 1
33798
# check multiple-1 success: 1
33799
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
33801
# check multiple-2 success: 1
33802
INSERT INTO t1 SELECT * FROM t0_template
33803
WHERE MOD(f_int1,3) = 0;
33805
# check multiple-3 success: 1
33806
UPDATE t1 SET f_int1 = f_int1 + @max_row
33807
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
33808
AND @max_row_div2 + @max_row_div4;
33810
# check multiple-4 success: 1
33812
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
33813
AND @max_row_div2 + @max_row_div4 + @max_row;
33815
# check multiple-5 success: 1
33816
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
33818
SET f_int1 = @cur_value , f_int2 = @cur_value,
33819
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33820
f_charbig = '#SINGLE#';
33822
# check single-1 success: 1
33823
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
33825
SET f_int1 = @cur_value , f_int2 = @cur_value,
33826
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
33827
f_charbig = '#SINGLE#';
33829
# check single-2 success: 1
33830
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
33831
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
33832
UPDATE t1 SET f_int1 = @cur_value2
33833
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
33835
# check single-3 success: 1
33836
SET @cur_value1= -1;
33837
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
33838
UPDATE t1 SET f_int1 = @cur_value1
33839
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
33841
# check single-4 success: 1
33842
SELECT MAX(f_int1) INTO @cur_value FROM t1;
33843
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
33845
# check single-5 success: 1
33846
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
33848
# check single-6 success: 1
33849
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
33851
# check single-7 success: 1
33852
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
33853
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
33854
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
33855
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
33856
f_charbig = '#NULL#';
33858
SET f_int1 = NULL , f_int2 = -@max_row,
33859
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
33860
f_charbig = '#NULL#';
33861
# check null success: 1
33863
# check null-1 success: 1
33864
UPDATE t1 SET f_int1 = -@max_row
33865
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33866
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33868
# check null-2 success: 1
33869
UPDATE t1 SET f_int1 = NULL
33870
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33871
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33873
# check null-3 success: 1
33875
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
33876
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
33878
# check null-4 success: 1
33880
WHERE f_int1 = 0 AND f_int2 = 0
33881
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
33882
AND f_charbig = '#NULL#';
33884
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33885
SELECT f_int1, f_int1, '', '', 'was inserted'
33886
FROM t0_template source_tab
33887
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33889
# check transactions-1 success: 1
33892
# check transactions-2 success: 1
33895
# check transactions-3 success: 1
33896
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33900
# check transactions-4 success: 1
33901
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33902
SELECT f_int1, f_int1, '', '', 'was inserted'
33903
FROM t0_template source_tab
33904
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33906
# check transactions-5 success: 1
33909
# check transactions-6 success: 1
33910
# INFO: Storage engine used for t1 seems to be transactional.
33913
# check transactions-7 success: 1
33914
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33916
SET @@session.sql_mode = 'traditional';
33917
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
33918
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
33919
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
33920
'', '', 'was inserted' FROM t0_template
33921
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
33922
ERROR 22012: Division by 0
33925
# check transactions-8 success: 1
33926
# INFO: Storage engine used for t1 seems to be able to revert
33927
# changes made by the failing statement.
33928
SET @@session.sql_mode = '';
33930
DELETE FROM t1 WHERE f_charbig = 'was inserted';
33932
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
33934
# check special-1 success: 1
33935
UPDATE t1 SET f_charbig = '';
33937
# check special-2 success: 1
33938
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
33939
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
33940
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
33941
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33942
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33943
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33944
'just inserted' FROM t0_template
33945
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33946
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
33948
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33949
f_charbig = 'updated by trigger'
33950
WHERE f_int1 = new.f_int1;
33952
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33953
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33954
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33956
# check trigger-1 success: 1
33957
DROP TRIGGER trg_1;
33958
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33959
f_int2 = CAST(f_char1 AS SIGNED INT),
33960
f_charbig = 'just inserted'
33961
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33963
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33964
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33965
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33966
'just inserted' FROM t0_template
33967
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33968
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
33970
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33971
f_charbig = 'updated by trigger'
33972
WHERE f_int1 = new.f_int1;
33974
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33975
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
33976
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33978
# check trigger-2 success: 1
33979
DROP TRIGGER trg_1;
33980
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
33981
f_int2 = CAST(f_char1 AS SIGNED INT),
33982
f_charbig = 'just inserted'
33983
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
33985
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33986
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
33987
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
33988
'just inserted' FROM t0_template
33989
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
33990
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
33992
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
33993
f_charbig = 'updated by trigger'
33994
WHERE f_int1 = new.f_int1;
33996
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
33997
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
33999
# check trigger-3 success: 1
34000
DROP TRIGGER trg_1;
34001
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34002
f_int2 = CAST(f_char1 AS SIGNED INT),
34003
f_charbig = 'just inserted'
34004
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34006
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34007
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34008
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34009
'just inserted' FROM t0_template
34010
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34011
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34013
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34014
f_charbig = 'updated by trigger'
34015
WHERE f_int1 = - old.f_int1;
34017
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34018
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34020
# check trigger-4 success: 1
34021
DROP TRIGGER trg_1;
34022
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34023
f_int2 = CAST(f_char1 AS SIGNED INT),
34024
f_charbig = 'just inserted'
34025
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34027
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34028
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34029
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34030
'just inserted' FROM t0_template
34031
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34032
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34034
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34035
f_charbig = 'updated by trigger'
34036
WHERE f_int1 = new.f_int1;
34038
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34039
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34041
# check trigger-5 success: 1
34042
DROP TRIGGER trg_1;
34043
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34044
f_int2 = CAST(f_char1 AS SIGNED INT),
34045
f_charbig = 'just inserted'
34046
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34048
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34049
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34050
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34051
'just inserted' FROM t0_template
34052
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34053
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34055
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34056
f_charbig = 'updated by trigger'
34057
WHERE f_int1 = - old.f_int1;
34059
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34060
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34062
# check trigger-6 success: 1
34063
DROP TRIGGER trg_1;
34064
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34065
f_int2 = CAST(f_char1 AS SIGNED INT),
34066
f_charbig = 'just inserted'
34067
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34069
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34070
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34071
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34072
'just inserted' FROM t0_template
34073
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34074
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34076
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34077
f_charbig = 'updated by trigger'
34078
WHERE f_int1 = - old.f_int1;
34081
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34083
# check trigger-7 success: 1
34084
DROP TRIGGER trg_1;
34085
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34086
f_int2 = CAST(f_char1 AS SIGNED INT),
34087
f_charbig = 'just inserted'
34088
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34090
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34091
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34092
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34093
'just inserted' FROM t0_template
34094
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34095
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
34097
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34098
f_charbig = 'updated by trigger'
34099
WHERE f_int1 = - old.f_int1;
34102
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34104
# check trigger-8 success: 1
34105
DROP TRIGGER trg_1;
34106
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34107
f_int2 = CAST(f_char1 AS SIGNED INT),
34108
f_charbig = 'just inserted'
34109
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34111
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34113
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34114
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34116
SET new.f_int1 = old.f_int1 + @max_row,
34117
new.f_int2 = old.f_int2 - @max_row,
34118
new.f_charbig = '####updated per update trigger####';
34121
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34122
f_charbig = '####updated per update statement itself####';
34124
# check trigger-9 success: 1
34125
DROP TRIGGER trg_2;
34126
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34127
f_int2 = CAST(f_char1 AS SIGNED INT),
34128
f_charbig = CONCAT('===',f_char1,'===');
34129
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34131
SET new.f_int1 = new.f_int1 + @max_row,
34132
new.f_int2 = new.f_int2 - @max_row,
34133
new.f_charbig = '####updated per update trigger####';
34136
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34137
f_charbig = '####updated per update statement itself####';
34139
# check trigger-10 success: 1
34140
DROP TRIGGER trg_2;
34141
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34142
f_int2 = CAST(f_char1 AS SIGNED INT),
34143
f_charbig = CONCAT('===',f_char1,'===');
34144
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34146
SET new.f_int1 = @my_max1 + @counter,
34147
new.f_int2 = @my_min2 - @counter,
34148
new.f_charbig = '####updated per insert trigger####';
34149
SET @counter = @counter + 1;
34152
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34153
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34154
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34155
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34156
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34158
DROP TRIGGER trg_3;
34160
# check trigger-11 success: 1
34162
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34163
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34164
AND f_charbig = '####updated per insert trigger####';
34165
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34167
SET new.f_int1 = @my_max1 + @counter,
34168
new.f_int2 = @my_min2 - @counter,
34169
new.f_charbig = '####updated per insert trigger####';
34170
SET @counter = @counter + 1;
34173
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34174
INSERT INTO t1 (f_char1, f_char2, f_charbig)
34175
SELECT CAST(f_int1 AS CHAR),
34176
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34177
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34179
DROP TRIGGER trg_3;
34181
# check trigger-12 success: 1
34183
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34184
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34185
AND f_charbig = '####updated per insert trigger####';
34187
Table Op Msg_type Msg_text
34188
test.t1 analyze status OK
34189
CHECK TABLE t1 EXTENDED;
34190
Table Op Msg_type Msg_text
34191
test.t1 check status OK
34192
CHECKSUM TABLE t1 EXTENDED;
34194
test.t1 <some_value>
34196
Table Op Msg_type Msg_text
34197
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
34198
test.t1 optimize status OK
34199
# check layout success: 1
34200
REPAIR TABLE t1 EXTENDED;
34201
Table Op Msg_type Msg_text
34202
test.t1 repair note The storage engine for the table doesn't support repair
34203
# check layout success: 1
34206
# check TRUNCATE success: 1
34207
# check layout success: 1
34208
# End usability test (inc/partition_check.inc)
34215
f_charbig VARCHAR(1000)
34216
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
34218
PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
34219
(PARTITION parta VALUES LESS THAN (0),
34220
PARTITION partb VALUES LESS THAN (5),
34221
PARTITION partc VALUES LESS THAN (10),
34222
PARTITION partd VALUES LESS THAN (10 + 5),
34223
PARTITION parte VALUES LESS THAN (20),
34224
PARTITION partf VALUES LESS THAN (2147483646));
34225
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34226
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34227
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34228
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
34229
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34230
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34231
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34232
# Start usability test (inc/partition_check.inc)
34234
SHOW CREATE TABLE t1;
34236
t1 CREATE TABLE `t1` (
34237
`f_int1` int(11) DEFAULT NULL,
34238
`f_int2` int(11) DEFAULT NULL,
34239
`f_char1` char(20) DEFAULT NULL,
34240
`f_char2` char(20) DEFAULT NULL,
34241
`f_charbig` varchar(1000) DEFAULT NULL
34242
) ENGINE=InnoDB DEFAULT CHARSET=latin1
34243
/*!50100 PARTITION BY RANGE ((f_int1 + f_int2) DIV 2)
34244
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
34245
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
34246
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
34247
PARTITION partd VALUES LESS THAN (15) ENGINE = InnoDB,
34248
PARTITION parte VALUES LESS THAN (20) ENGINE = InnoDB,
34249
PARTITION partf VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
34251
# check prerequisites-1 success: 1
34252
# check COUNT(*) success: 1
34253
# check MIN/MAX(f_int1) success: 1
34254
# check MIN/MAX(f_int2) success: 1
34255
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34256
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34257
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34258
WHERE f_int1 IN (2,3);
34259
# check prerequisites-3 success: 1
34260
DELETE FROM t1 WHERE f_charbig = 'delete me';
34261
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
34262
# check read via f_int1 success: 1
34263
# check read via f_int2 success: 1
34265
# check multiple-1 success: 1
34266
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34268
# check multiple-2 success: 1
34269
INSERT INTO t1 SELECT * FROM t0_template
34270
WHERE MOD(f_int1,3) = 0;
34272
# check multiple-3 success: 1
34273
UPDATE t1 SET f_int1 = f_int1 + @max_row
34274
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
34275
AND @max_row_div2 + @max_row_div4;
34277
# check multiple-4 success: 1
34279
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
34280
AND @max_row_div2 + @max_row_div4 + @max_row;
34282
# check multiple-5 success: 1
34283
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
34285
SET f_int1 = @cur_value , f_int2 = @cur_value,
34286
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34287
f_charbig = '#SINGLE#';
34289
# check single-1 success: 1
34290
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
34292
SET f_int1 = @cur_value , f_int2 = @cur_value,
34293
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34294
f_charbig = '#SINGLE#';
34296
# check single-2 success: 1
34297
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
34298
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
34299
UPDATE t1 SET f_int1 = @cur_value2
34300
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
34302
# check single-3 success: 1
34303
SET @cur_value1= -1;
34304
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
34305
UPDATE t1 SET f_int1 = @cur_value1
34306
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
34308
# check single-4 success: 1
34309
SELECT MAX(f_int1) INTO @cur_value FROM t1;
34310
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
34312
# check single-5 success: 1
34313
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
34315
# check single-6 success: 1
34316
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
34317
ERROR HY000: Table has no partition for value 2147483647
34318
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
34319
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
34320
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
34321
f_charbig = '#NULL#';
34323
SET f_int1 = NULL , f_int2 = -@max_row,
34324
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
34325
f_charbig = '#NULL#';
34326
# check null success: 1
34328
# check null-1 success: 1
34329
UPDATE t1 SET f_int1 = -@max_row
34330
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34331
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34333
# check null-2 success: 1
34334
UPDATE t1 SET f_int1 = NULL
34335
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34336
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34338
# check null-3 success: 1
34340
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34341
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34343
# check null-4 success: 1
34345
WHERE f_int1 = 0 AND f_int2 = 0
34346
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
34347
AND f_charbig = '#NULL#';
34349
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34350
SELECT f_int1, f_int1, '', '', 'was inserted'
34351
FROM t0_template source_tab
34352
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34354
# check transactions-1 success: 1
34357
# check transactions-2 success: 1
34360
# check transactions-3 success: 1
34361
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34365
# check transactions-4 success: 1
34366
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34367
SELECT f_int1, f_int1, '', '', 'was inserted'
34368
FROM t0_template source_tab
34369
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34371
# check transactions-5 success: 1
34374
# check transactions-6 success: 1
34375
# INFO: Storage engine used for t1 seems to be transactional.
34378
# check transactions-7 success: 1
34379
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34381
SET @@session.sql_mode = 'traditional';
34382
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
34383
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34384
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
34385
'', '', 'was inserted' FROM t0_template
34386
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34387
ERROR 22012: Division by 0
34390
# check transactions-8 success: 1
34391
# INFO: Storage engine used for t1 seems to be able to revert
34392
# changes made by the failing statement.
34393
SET @@session.sql_mode = '';
34395
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34397
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
34399
# check special-1 success: 1
34400
UPDATE t1 SET f_charbig = '';
34402
# check special-2 success: 1
34403
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
34404
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34405
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
34406
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34407
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34408
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34409
'just inserted' FROM t0_template
34410
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34411
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
34413
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34414
f_charbig = 'updated by trigger'
34415
WHERE f_int1 = new.f_int1;
34417
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34418
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34419
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34421
# check trigger-1 success: 1
34422
DROP TRIGGER trg_1;
34423
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34424
f_int2 = CAST(f_char1 AS SIGNED INT),
34425
f_charbig = 'just inserted'
34426
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34428
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34429
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34430
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34431
'just inserted' FROM t0_template
34432
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34433
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
34435
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34436
f_charbig = 'updated by trigger'
34437
WHERE f_int1 = new.f_int1;
34439
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34440
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34441
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34443
# check trigger-2 success: 1
34444
DROP TRIGGER trg_1;
34445
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34446
f_int2 = CAST(f_char1 AS SIGNED INT),
34447
f_charbig = 'just inserted'
34448
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34450
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34451
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34452
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34453
'just inserted' FROM t0_template
34454
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34455
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34457
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34458
f_charbig = 'updated by trigger'
34459
WHERE f_int1 = new.f_int1;
34461
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34462
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34464
# check trigger-3 success: 1
34465
DROP TRIGGER trg_1;
34466
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34467
f_int2 = CAST(f_char1 AS SIGNED INT),
34468
f_charbig = 'just inserted'
34469
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34471
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34472
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34473
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34474
'just inserted' FROM t0_template
34475
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34476
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34478
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34479
f_charbig = 'updated by trigger'
34480
WHERE f_int1 = - old.f_int1;
34482
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34483
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34485
# check trigger-4 success: 1
34486
DROP TRIGGER trg_1;
34487
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34488
f_int2 = CAST(f_char1 AS SIGNED INT),
34489
f_charbig = 'just inserted'
34490
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34492
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34493
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34494
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34495
'just inserted' FROM t0_template
34496
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34497
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34499
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34500
f_charbig = 'updated by trigger'
34501
WHERE f_int1 = new.f_int1;
34503
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34504
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34506
# check trigger-5 success: 1
34507
DROP TRIGGER trg_1;
34508
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34509
f_int2 = CAST(f_char1 AS SIGNED INT),
34510
f_charbig = 'just inserted'
34511
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34513
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34514
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34515
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34516
'just inserted' FROM t0_template
34517
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34518
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34520
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34521
f_charbig = 'updated by trigger'
34522
WHERE f_int1 = - old.f_int1;
34524
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34525
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34527
# check trigger-6 success: 1
34528
DROP TRIGGER trg_1;
34529
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34530
f_int2 = CAST(f_char1 AS SIGNED INT),
34531
f_charbig = 'just inserted'
34532
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34534
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34535
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34536
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34537
'just inserted' FROM t0_template
34538
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34539
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
34541
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34542
f_charbig = 'updated by trigger'
34543
WHERE f_int1 = - old.f_int1;
34546
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34548
# check trigger-7 success: 1
34549
DROP TRIGGER trg_1;
34550
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34551
f_int2 = CAST(f_char1 AS SIGNED INT),
34552
f_charbig = 'just inserted'
34553
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34555
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34556
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34557
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34558
'just inserted' FROM t0_template
34559
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34560
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
34562
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34563
f_charbig = 'updated by trigger'
34564
WHERE f_int1 = - old.f_int1;
34567
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34569
# check trigger-8 success: 1
34570
DROP TRIGGER trg_1;
34571
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34572
f_int2 = CAST(f_char1 AS SIGNED INT),
34573
f_charbig = 'just inserted'
34574
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34576
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34578
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34579
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34581
SET new.f_int1 = old.f_int1 + @max_row,
34582
new.f_int2 = old.f_int2 - @max_row,
34583
new.f_charbig = '####updated per update trigger####';
34586
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34587
f_charbig = '####updated per update statement itself####';
34589
# check trigger-9 success: 1
34590
DROP TRIGGER trg_2;
34591
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34592
f_int2 = CAST(f_char1 AS SIGNED INT),
34593
f_charbig = CONCAT('===',f_char1,'===');
34594
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
34596
SET new.f_int1 = new.f_int1 + @max_row,
34597
new.f_int2 = new.f_int2 - @max_row,
34598
new.f_charbig = '####updated per update trigger####';
34601
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
34602
f_charbig = '####updated per update statement itself####';
34604
# check trigger-10 success: 1
34605
DROP TRIGGER trg_2;
34606
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34607
f_int2 = CAST(f_char1 AS SIGNED INT),
34608
f_charbig = CONCAT('===',f_char1,'===');
34609
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34611
SET new.f_int1 = @my_max1 + @counter,
34612
new.f_int2 = @my_min2 - @counter,
34613
new.f_charbig = '####updated per insert trigger####';
34614
SET @counter = @counter + 1;
34617
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34618
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34619
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34620
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34621
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34623
DROP TRIGGER trg_3;
34625
# check trigger-11 success: 1
34627
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34628
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34629
AND f_charbig = '####updated per insert trigger####';
34630
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
34632
SET new.f_int1 = @my_max1 + @counter,
34633
new.f_int2 = @my_min2 - @counter,
34634
new.f_charbig = '####updated per insert trigger####';
34635
SET @counter = @counter + 1;
34638
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
34639
INSERT INTO t1 (f_char1, f_char2, f_charbig)
34640
SELECT CAST(f_int1 AS CHAR),
34641
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
34642
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
34644
DROP TRIGGER trg_3;
34646
# check trigger-12 success: 1
34648
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
34649
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
34650
AND f_charbig = '####updated per insert trigger####';
34652
Table Op Msg_type Msg_text
34653
test.t1 analyze status OK
34654
CHECK TABLE t1 EXTENDED;
34655
Table Op Msg_type Msg_text
34656
test.t1 check status OK
34657
CHECKSUM TABLE t1 EXTENDED;
34659
test.t1 <some_value>
34661
Table Op Msg_type Msg_text
34662
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
34663
test.t1 optimize status OK
34664
# check layout success: 1
34665
REPAIR TABLE t1 EXTENDED;
34666
Table Op Msg_type Msg_text
34667
test.t1 repair note The storage engine for the table doesn't support repair
34668
# check layout success: 1
34671
# check TRUNCATE success: 1
34672
# check layout success: 1
34673
# End usability test (inc/partition_check.inc)
34680
f_charbig VARCHAR(1000)
34681
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
34683
PARTITION BY RANGE(f_int1) SUBPARTITION BY HASH(f_int2) SUBPARTITIONS 2
34684
(PARTITION parta VALUES LESS THAN (0),
34685
PARTITION partb VALUES LESS THAN (5),
34686
PARTITION partc VALUES LESS THAN (10),
34687
PARTITION partd VALUES LESS THAN (2147483646));
34688
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34689
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34690
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
34691
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
34692
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34693
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
34694
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
34695
# Start usability test (inc/partition_check.inc)
34697
SHOW CREATE TABLE t1;
34699
t1 CREATE TABLE `t1` (
34700
`f_int1` int(11) DEFAULT NULL,
34701
`f_int2` int(11) DEFAULT NULL,
34702
`f_char1` char(20) DEFAULT NULL,
34703
`f_char2` char(20) DEFAULT NULL,
34704
`f_charbig` varchar(1000) DEFAULT NULL
34705
) ENGINE=InnoDB DEFAULT CHARSET=latin1
34706
/*!50100 PARTITION BY RANGE (f_int1)
34707
SUBPARTITION BY HASH (f_int2)
34709
(PARTITION parta VALUES LESS THAN (0) ENGINE = InnoDB,
34710
PARTITION partb VALUES LESS THAN (5) ENGINE = InnoDB,
34711
PARTITION partc VALUES LESS THAN (10) ENGINE = InnoDB,
34712
PARTITION partd VALUES LESS THAN (2147483646) ENGINE = InnoDB) */
34714
# check prerequisites-1 success: 1
34715
# check COUNT(*) success: 1
34716
# check MIN/MAX(f_int1) success: 1
34717
# check MIN/MAX(f_int2) success: 1
34718
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34719
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
34720
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
34721
WHERE f_int1 IN (2,3);
34722
# check prerequisites-3 success: 1
34723
DELETE FROM t1 WHERE f_charbig = 'delete me';
34724
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
34725
# check read via f_int1 success: 1
34726
# check read via f_int2 success: 1
34728
# check multiple-1 success: 1
34729
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
34731
# check multiple-2 success: 1
34732
INSERT INTO t1 SELECT * FROM t0_template
34733
WHERE MOD(f_int1,3) = 0;
34735
# check multiple-3 success: 1
34736
UPDATE t1 SET f_int1 = f_int1 + @max_row
34737
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
34738
AND @max_row_div2 + @max_row_div4;
34740
# check multiple-4 success: 1
34742
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
34743
AND @max_row_div2 + @max_row_div4 + @max_row;
34745
# check multiple-5 success: 1
34746
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
34748
SET f_int1 = @cur_value , f_int2 = @cur_value,
34749
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34750
f_charbig = '#SINGLE#';
34752
# check single-1 success: 1
34753
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
34755
SET f_int1 = @cur_value , f_int2 = @cur_value,
34756
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
34757
f_charbig = '#SINGLE#';
34759
# check single-2 success: 1
34760
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
34761
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
34762
UPDATE t1 SET f_int1 = @cur_value2
34763
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
34765
# check single-3 success: 1
34766
SET @cur_value1= -1;
34767
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
34768
UPDATE t1 SET f_int1 = @cur_value1
34769
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
34771
# check single-4 success: 1
34772
SELECT MAX(f_int1) INTO @cur_value FROM t1;
34773
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
34775
# check single-5 success: 1
34776
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
34778
# check single-6 success: 1
34779
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
34780
ERROR HY000: Table has no partition for value 2147483647
34781
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
34782
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
34783
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
34784
f_charbig = '#NULL#';
34786
SET f_int1 = NULL , f_int2 = -@max_row,
34787
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
34788
f_charbig = '#NULL#';
34789
# check null success: 1
34791
# check null-1 success: 1
34792
UPDATE t1 SET f_int1 = -@max_row
34793
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34794
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34796
# check null-2 success: 1
34797
UPDATE t1 SET f_int1 = NULL
34798
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34799
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34801
# check null-3 success: 1
34803
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
34804
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
34806
# check null-4 success: 1
34808
WHERE f_int1 = 0 AND f_int2 = 0
34809
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
34810
AND f_charbig = '#NULL#';
34812
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34813
SELECT f_int1, f_int1, '', '', 'was inserted'
34814
FROM t0_template source_tab
34815
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34817
# check transactions-1 success: 1
34820
# check transactions-2 success: 1
34823
# check transactions-3 success: 1
34824
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34828
# check transactions-4 success: 1
34829
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34830
SELECT f_int1, f_int1, '', '', 'was inserted'
34831
FROM t0_template source_tab
34832
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34834
# check transactions-5 success: 1
34837
# check transactions-6 success: 1
34838
# INFO: Storage engine used for t1 seems to be transactional.
34841
# check transactions-7 success: 1
34842
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34844
SET @@session.sql_mode = 'traditional';
34845
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
34846
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
34847
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
34848
'', '', 'was inserted' FROM t0_template
34849
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
34850
ERROR 22012: Division by 0
34853
# check transactions-8 success: 1
34854
# INFO: Storage engine used for t1 seems to be able to revert
34855
# changes made by the failing statement.
34856
SET @@session.sql_mode = '';
34858
DELETE FROM t1 WHERE f_charbig = 'was inserted';
34860
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
34862
# check special-1 success: 1
34863
UPDATE t1 SET f_charbig = '';
34865
# check special-2 success: 1
34866
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
34867
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
34868
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
34869
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34870
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34871
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34872
'just inserted' FROM t0_template
34873
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34874
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
34876
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34877
f_charbig = 'updated by trigger'
34878
WHERE f_int1 = new.f_int1;
34880
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34881
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34882
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34884
# check trigger-1 success: 1
34885
DROP TRIGGER trg_1;
34886
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34887
f_int2 = CAST(f_char1 AS SIGNED INT),
34888
f_charbig = 'just inserted'
34889
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34891
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34892
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34893
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34894
'just inserted' FROM t0_template
34895
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34896
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
34898
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34899
f_charbig = 'updated by trigger'
34900
WHERE f_int1 = new.f_int1;
34902
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34903
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
34904
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34906
# check trigger-2 success: 1
34907
DROP TRIGGER trg_1;
34908
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34909
f_int2 = CAST(f_char1 AS SIGNED INT),
34910
f_charbig = 'just inserted'
34911
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34913
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34914
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34915
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34916
'just inserted' FROM t0_template
34917
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34918
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34920
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34921
f_charbig = 'updated by trigger'
34922
WHERE f_int1 = new.f_int1;
34924
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34925
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34927
# check trigger-3 success: 1
34928
DROP TRIGGER trg_1;
34929
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34930
f_int2 = CAST(f_char1 AS SIGNED INT),
34931
f_charbig = 'just inserted'
34932
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34934
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34935
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34936
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34937
'just inserted' FROM t0_template
34938
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34939
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
34941
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34942
f_charbig = 'updated by trigger'
34943
WHERE f_int1 = - old.f_int1;
34945
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34946
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34948
# check trigger-4 success: 1
34949
DROP TRIGGER trg_1;
34950
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34951
f_int2 = CAST(f_char1 AS SIGNED INT),
34952
f_charbig = 'just inserted'
34953
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34955
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34956
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34957
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34958
'just inserted' FROM t0_template
34959
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34960
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34962
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34963
f_charbig = 'updated by trigger'
34964
WHERE f_int1 = new.f_int1;
34966
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34967
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34969
# check trigger-5 success: 1
34970
DROP TRIGGER trg_1;
34971
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34972
f_int2 = CAST(f_char1 AS SIGNED INT),
34973
f_charbig = 'just inserted'
34974
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34976
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34977
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34978
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
34979
'just inserted' FROM t0_template
34980
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34981
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
34983
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
34984
f_charbig = 'updated by trigger'
34985
WHERE f_int1 = - old.f_int1;
34987
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
34988
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
34990
# check trigger-6 success: 1
34991
DROP TRIGGER trg_1;
34992
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
34993
f_int2 = CAST(f_char1 AS SIGNED INT),
34994
f_charbig = 'just inserted'
34995
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
34997
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
34998
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
34999
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35000
'just inserted' FROM t0_template
35001
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35002
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
35004
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35005
f_charbig = 'updated by trigger'
35006
WHERE f_int1 = - old.f_int1;
35009
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35011
# check trigger-7 success: 1
35012
DROP TRIGGER trg_1;
35013
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35014
f_int2 = CAST(f_char1 AS SIGNED INT),
35015
f_charbig = 'just inserted'
35016
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35018
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35019
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35020
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35021
'just inserted' FROM t0_template
35022
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35023
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
35025
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35026
f_charbig = 'updated by trigger'
35027
WHERE f_int1 = - old.f_int1;
35030
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35032
# check trigger-8 success: 1
35033
DROP TRIGGER trg_1;
35034
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35035
f_int2 = CAST(f_char1 AS SIGNED INT),
35036
f_charbig = 'just inserted'
35037
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35039
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35041
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35042
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35044
SET new.f_int1 = old.f_int1 + @max_row,
35045
new.f_int2 = old.f_int2 - @max_row,
35046
new.f_charbig = '####updated per update trigger####';
35049
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35050
f_charbig = '####updated per update statement itself####';
35052
# check trigger-9 success: 1
35053
DROP TRIGGER trg_2;
35054
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35055
f_int2 = CAST(f_char1 AS SIGNED INT),
35056
f_charbig = CONCAT('===',f_char1,'===');
35057
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35059
SET new.f_int1 = new.f_int1 + @max_row,
35060
new.f_int2 = new.f_int2 - @max_row,
35061
new.f_charbig = '####updated per update trigger####';
35064
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35065
f_charbig = '####updated per update statement itself####';
35067
# check trigger-10 success: 1
35068
DROP TRIGGER trg_2;
35069
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35070
f_int2 = CAST(f_char1 AS SIGNED INT),
35071
f_charbig = CONCAT('===',f_char1,'===');
35072
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35074
SET new.f_int1 = @my_max1 + @counter,
35075
new.f_int2 = @my_min2 - @counter,
35076
new.f_charbig = '####updated per insert trigger####';
35077
SET @counter = @counter + 1;
35080
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35081
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35082
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35083
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35084
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35086
DROP TRIGGER trg_3;
35088
# check trigger-11 success: 1
35090
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35091
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35092
AND f_charbig = '####updated per insert trigger####';
35093
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35095
SET new.f_int1 = @my_max1 + @counter,
35096
new.f_int2 = @my_min2 - @counter,
35097
new.f_charbig = '####updated per insert trigger####';
35098
SET @counter = @counter + 1;
35101
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35102
INSERT INTO t1 (f_char1, f_char2, f_charbig)
35103
SELECT CAST(f_int1 AS CHAR),
35104
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35105
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35107
DROP TRIGGER trg_3;
35109
# check trigger-12 success: 1
35111
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35112
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35113
AND f_charbig = '####updated per insert trigger####';
35115
Table Op Msg_type Msg_text
35116
test.t1 analyze status OK
35117
CHECK TABLE t1 EXTENDED;
35118
Table Op Msg_type Msg_text
35119
test.t1 check status OK
35120
CHECKSUM TABLE t1 EXTENDED;
35122
test.t1 <some_value>
35124
Table Op Msg_type Msg_text
35125
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
35126
test.t1 optimize status OK
35127
# check layout success: 1
35128
REPAIR TABLE t1 EXTENDED;
35129
Table Op Msg_type Msg_text
35130
test.t1 repair note The storage engine for the table doesn't support repair
35131
# check layout success: 1
35134
# check TRUNCATE success: 1
35135
# check layout success: 1
35136
# End usability test (inc/partition_check.inc)
35143
f_charbig VARCHAR(1000)
35144
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
35146
PARTITION BY RANGE(f_int1) SUBPARTITION BY KEY(f_int2)
35147
(PARTITION part1 VALUES LESS THAN (0)
35148
(SUBPARTITION subpart11, SUBPARTITION subpart12),
35149
PARTITION part2 VALUES LESS THAN (5)
35150
(SUBPARTITION subpart21, SUBPARTITION subpart22),
35151
PARTITION part3 VALUES LESS THAN (10)
35152
(SUBPARTITION subpart31, SUBPARTITION subpart32),
35153
PARTITION part4 VALUES LESS THAN (2147483646)
35154
(SUBPARTITION subpart41, SUBPARTITION subpart42));
35155
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35156
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35157
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
35158
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
35159
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35160
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35161
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
35162
# Start usability test (inc/partition_check.inc)
35164
SHOW CREATE TABLE t1;
35166
t1 CREATE TABLE `t1` (
35167
`f_int1` int(11) DEFAULT NULL,
35168
`f_int2` int(11) DEFAULT NULL,
35169
`f_char1` char(20) DEFAULT NULL,
35170
`f_char2` char(20) DEFAULT NULL,
35171
`f_charbig` varchar(1000) DEFAULT NULL
35172
) ENGINE=InnoDB DEFAULT CHARSET=latin1
35173
/*!50100 PARTITION BY RANGE (f_int1)
35174
SUBPARTITION BY KEY (f_int2)
35175
(PARTITION part1 VALUES LESS THAN (0)
35176
(SUBPARTITION subpart11 ENGINE = InnoDB,
35177
SUBPARTITION subpart12 ENGINE = InnoDB),
35178
PARTITION part2 VALUES LESS THAN (5)
35179
(SUBPARTITION subpart21 ENGINE = InnoDB,
35180
SUBPARTITION subpart22 ENGINE = InnoDB),
35181
PARTITION part3 VALUES LESS THAN (10)
35182
(SUBPARTITION subpart31 ENGINE = InnoDB,
35183
SUBPARTITION subpart32 ENGINE = InnoDB),
35184
PARTITION part4 VALUES LESS THAN (2147483646)
35185
(SUBPARTITION subpart41 ENGINE = InnoDB,
35186
SUBPARTITION subpart42 ENGINE = InnoDB)) */
35188
# check prerequisites-1 success: 1
35189
# check COUNT(*) success: 1
35190
# check MIN/MAX(f_int1) success: 1
35191
# check MIN/MAX(f_int2) success: 1
35192
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35193
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35194
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
35195
WHERE f_int1 IN (2,3);
35196
# check prerequisites-3 success: 1
35197
DELETE FROM t1 WHERE f_charbig = 'delete me';
35198
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
35199
# check read via f_int1 success: 1
35200
# check read via f_int2 success: 1
35202
# check multiple-1 success: 1
35203
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
35205
# check multiple-2 success: 1
35206
INSERT INTO t1 SELECT * FROM t0_template
35207
WHERE MOD(f_int1,3) = 0;
35209
# check multiple-3 success: 1
35210
UPDATE t1 SET f_int1 = f_int1 + @max_row
35211
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
35212
AND @max_row_div2 + @max_row_div4;
35214
# check multiple-4 success: 1
35216
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
35217
AND @max_row_div2 + @max_row_div4 + @max_row;
35219
# check multiple-5 success: 1
35220
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
35222
SET f_int1 = @cur_value , f_int2 = @cur_value,
35223
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35224
f_charbig = '#SINGLE#';
35226
# check single-1 success: 1
35227
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
35229
SET f_int1 = @cur_value , f_int2 = @cur_value,
35230
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35231
f_charbig = '#SINGLE#';
35233
# check single-2 success: 1
35234
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
35235
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
35236
UPDATE t1 SET f_int1 = @cur_value2
35237
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
35239
# check single-3 success: 1
35240
SET @cur_value1= -1;
35241
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
35242
UPDATE t1 SET f_int1 = @cur_value1
35243
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
35245
# check single-4 success: 1
35246
SELECT MAX(f_int1) INTO @cur_value FROM t1;
35247
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
35249
# check single-5 success: 1
35250
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
35252
# check single-6 success: 1
35253
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
35254
ERROR HY000: Table has no partition for value 2147483647
35255
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
35256
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
35257
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
35258
f_charbig = '#NULL#';
35260
SET f_int1 = NULL , f_int2 = -@max_row,
35261
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
35262
f_charbig = '#NULL#';
35263
# check null success: 1
35265
# check null-1 success: 1
35266
UPDATE t1 SET f_int1 = -@max_row
35267
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35268
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35270
# check null-2 success: 1
35271
UPDATE t1 SET f_int1 = NULL
35272
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35273
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35275
# check null-3 success: 1
35277
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35278
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35280
# check null-4 success: 1
35282
WHERE f_int1 = 0 AND f_int2 = 0
35283
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
35284
AND f_charbig = '#NULL#';
35286
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35287
SELECT f_int1, f_int1, '', '', 'was inserted'
35288
FROM t0_template source_tab
35289
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35291
# check transactions-1 success: 1
35294
# check transactions-2 success: 1
35297
# check transactions-3 success: 1
35298
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35302
# check transactions-4 success: 1
35303
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35304
SELECT f_int1, f_int1, '', '', 'was inserted'
35305
FROM t0_template source_tab
35306
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35308
# check transactions-5 success: 1
35311
# check transactions-6 success: 1
35312
# INFO: Storage engine used for t1 seems to be transactional.
35315
# check transactions-7 success: 1
35316
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35318
SET @@session.sql_mode = 'traditional';
35319
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
35320
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35321
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
35322
'', '', 'was inserted' FROM t0_template
35323
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35324
ERROR 22012: Division by 0
35327
# check transactions-8 success: 1
35328
# INFO: Storage engine used for t1 seems to be able to revert
35329
# changes made by the failing statement.
35330
SET @@session.sql_mode = '';
35332
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35334
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
35336
# check special-1 success: 1
35337
UPDATE t1 SET f_charbig = '';
35339
# check special-2 success: 1
35340
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
35341
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35342
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
35343
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35344
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35345
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35346
'just inserted' FROM t0_template
35347
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35348
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
35350
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35351
f_charbig = 'updated by trigger'
35352
WHERE f_int1 = new.f_int1;
35354
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35355
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35356
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35358
# check trigger-1 success: 1
35359
DROP TRIGGER trg_1;
35360
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35361
f_int2 = CAST(f_char1 AS SIGNED INT),
35362
f_charbig = 'just inserted'
35363
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35365
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35366
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35367
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35368
'just inserted' FROM t0_template
35369
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35370
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
35372
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35373
f_charbig = 'updated by trigger'
35374
WHERE f_int1 = new.f_int1;
35376
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35377
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35378
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35380
# check trigger-2 success: 1
35381
DROP TRIGGER trg_1;
35382
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35383
f_int2 = CAST(f_char1 AS SIGNED INT),
35384
f_charbig = 'just inserted'
35385
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35387
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35388
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35389
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35390
'just inserted' FROM t0_template
35391
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35392
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35394
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35395
f_charbig = 'updated by trigger'
35396
WHERE f_int1 = new.f_int1;
35398
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35399
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35401
# check trigger-3 success: 1
35402
DROP TRIGGER trg_1;
35403
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35404
f_int2 = CAST(f_char1 AS SIGNED INT),
35405
f_charbig = 'just inserted'
35406
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35408
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35409
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35410
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35411
'just inserted' FROM t0_template
35412
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35413
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35415
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35416
f_charbig = 'updated by trigger'
35417
WHERE f_int1 = - old.f_int1;
35419
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35420
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35422
# check trigger-4 success: 1
35423
DROP TRIGGER trg_1;
35424
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35425
f_int2 = CAST(f_char1 AS SIGNED INT),
35426
f_charbig = 'just inserted'
35427
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35429
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35430
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35431
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35432
'just inserted' FROM t0_template
35433
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35434
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35436
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35437
f_charbig = 'updated by trigger'
35438
WHERE f_int1 = new.f_int1;
35440
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35441
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35443
# check trigger-5 success: 1
35444
DROP TRIGGER trg_1;
35445
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35446
f_int2 = CAST(f_char1 AS SIGNED INT),
35447
f_charbig = 'just inserted'
35448
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35450
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35451
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35452
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35453
'just inserted' FROM t0_template
35454
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35455
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35457
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35458
f_charbig = 'updated by trigger'
35459
WHERE f_int1 = - old.f_int1;
35461
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35462
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35464
# check trigger-6 success: 1
35465
DROP TRIGGER trg_1;
35466
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35467
f_int2 = CAST(f_char1 AS SIGNED INT),
35468
f_charbig = 'just inserted'
35469
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35471
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35472
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35473
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35474
'just inserted' FROM t0_template
35475
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35476
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
35478
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35479
f_charbig = 'updated by trigger'
35480
WHERE f_int1 = - old.f_int1;
35483
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35485
# check trigger-7 success: 1
35486
DROP TRIGGER trg_1;
35487
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35488
f_int2 = CAST(f_char1 AS SIGNED INT),
35489
f_charbig = 'just inserted'
35490
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35492
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35493
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35494
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35495
'just inserted' FROM t0_template
35496
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35497
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
35499
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35500
f_charbig = 'updated by trigger'
35501
WHERE f_int1 = - old.f_int1;
35504
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35506
# check trigger-8 success: 1
35507
DROP TRIGGER trg_1;
35508
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35509
f_int2 = CAST(f_char1 AS SIGNED INT),
35510
f_charbig = 'just inserted'
35511
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35513
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35515
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35516
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35518
SET new.f_int1 = old.f_int1 + @max_row,
35519
new.f_int2 = old.f_int2 - @max_row,
35520
new.f_charbig = '####updated per update trigger####';
35523
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35524
f_charbig = '####updated per update statement itself####';
35526
# check trigger-9 success: 1
35527
DROP TRIGGER trg_2;
35528
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35529
f_int2 = CAST(f_char1 AS SIGNED INT),
35530
f_charbig = CONCAT('===',f_char1,'===');
35531
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35533
SET new.f_int1 = new.f_int1 + @max_row,
35534
new.f_int2 = new.f_int2 - @max_row,
35535
new.f_charbig = '####updated per update trigger####';
35538
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
35539
f_charbig = '####updated per update statement itself####';
35541
# check trigger-10 success: 1
35542
DROP TRIGGER trg_2;
35543
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35544
f_int2 = CAST(f_char1 AS SIGNED INT),
35545
f_charbig = CONCAT('===',f_char1,'===');
35546
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35548
SET new.f_int1 = @my_max1 + @counter,
35549
new.f_int2 = @my_min2 - @counter,
35550
new.f_charbig = '####updated per insert trigger####';
35551
SET @counter = @counter + 1;
35554
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35555
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35556
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35557
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35558
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35560
DROP TRIGGER trg_3;
35562
# check trigger-11 success: 1
35564
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35565
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35566
AND f_charbig = '####updated per insert trigger####';
35567
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
35569
SET new.f_int1 = @my_max1 + @counter,
35570
new.f_int2 = @my_min2 - @counter,
35571
new.f_charbig = '####updated per insert trigger####';
35572
SET @counter = @counter + 1;
35575
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
35576
INSERT INTO t1 (f_char1, f_char2, f_charbig)
35577
SELECT CAST(f_int1 AS CHAR),
35578
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
35579
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
35581
DROP TRIGGER trg_3;
35583
# check trigger-12 success: 1
35585
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
35586
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
35587
AND f_charbig = '####updated per insert trigger####';
35589
Table Op Msg_type Msg_text
35590
test.t1 analyze status OK
35591
CHECK TABLE t1 EXTENDED;
35592
Table Op Msg_type Msg_text
35593
test.t1 check status OK
35594
CHECKSUM TABLE t1 EXTENDED;
35596
test.t1 <some_value>
35598
Table Op Msg_type Msg_text
35599
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
35600
test.t1 optimize status OK
35601
# check layout success: 1
35602
REPAIR TABLE t1 EXTENDED;
35603
Table Op Msg_type Msg_text
35604
test.t1 repair note The storage engine for the table doesn't support repair
35605
# check layout success: 1
35608
# check TRUNCATE success: 1
35609
# check layout success: 1
35610
# End usability test (inc/partition_check.inc)
35617
f_charbig VARCHAR(1000)
35618
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
35620
PARTITION BY LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY HASH(f_int2 + 1)
35621
(PARTITION part1 VALUES IN (0)
35622
(SUBPARTITION sp11, SUBPARTITION sp12),
35623
PARTITION part2 VALUES IN (1)
35624
(SUBPARTITION sp21, SUBPARTITION sp22),
35625
PARTITION part3 VALUES IN (2)
35626
(SUBPARTITION sp31, SUBPARTITION sp32),
35627
PARTITION part4 VALUES IN (NULL)
35628
(SUBPARTITION sp41, SUBPARTITION sp42));
35629
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35630
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35631
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
35632
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
35633
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35634
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
35635
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
35636
# Start usability test (inc/partition_check.inc)
35638
SHOW CREATE TABLE t1;
35640
t1 CREATE TABLE `t1` (
35641
`f_int1` int(11) DEFAULT NULL,
35642
`f_int2` int(11) DEFAULT NULL,
35643
`f_char1` char(20) DEFAULT NULL,
35644
`f_char2` char(20) DEFAULT NULL,
35645
`f_charbig` varchar(1000) DEFAULT NULL
35646
) ENGINE=InnoDB DEFAULT CHARSET=latin1
35647
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,3)))
35648
SUBPARTITION BY HASH (f_int2 + 1)
35649
(PARTITION part1 VALUES IN (0)
35650
(SUBPARTITION sp11 ENGINE = InnoDB,
35651
SUBPARTITION sp12 ENGINE = InnoDB),
35652
PARTITION part2 VALUES IN (1)
35653
(SUBPARTITION sp21 ENGINE = InnoDB,
35654
SUBPARTITION sp22 ENGINE = InnoDB),
35655
PARTITION part3 VALUES IN (2)
35656
(SUBPARTITION sp31 ENGINE = InnoDB,
35657
SUBPARTITION sp32 ENGINE = InnoDB),
35658
PARTITION part4 VALUES IN (NULL)
35659
(SUBPARTITION sp41 ENGINE = InnoDB,
35660
SUBPARTITION sp42 ENGINE = InnoDB)) */
35662
# check prerequisites-1 success: 1
35663
# check COUNT(*) success: 1
35664
# check MIN/MAX(f_int1) success: 1
35665
# check MIN/MAX(f_int2) success: 1
35666
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35667
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
35668
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
35669
WHERE f_int1 IN (2,3);
35670
# check prerequisites-3 success: 1
35671
DELETE FROM t1 WHERE f_charbig = 'delete me';
35672
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
35673
# check read via f_int1 success: 1
35674
# check read via f_int2 success: 1
35676
# check multiple-1 success: 1
35677
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
35679
# check multiple-2 success: 1
35680
INSERT INTO t1 SELECT * FROM t0_template
35681
WHERE MOD(f_int1,3) = 0;
35683
# check multiple-3 success: 1
35684
UPDATE t1 SET f_int1 = f_int1 + @max_row
35685
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
35686
AND @max_row_div2 + @max_row_div4;
35688
# check multiple-4 success: 1
35690
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
35691
AND @max_row_div2 + @max_row_div4 + @max_row;
35693
# check multiple-5 success: 1
35694
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
35696
SET f_int1 = @cur_value , f_int2 = @cur_value,
35697
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35698
f_charbig = '#SINGLE#';
35700
# check single-1 success: 1
35701
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
35703
SET f_int1 = @cur_value , f_int2 = @cur_value,
35704
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
35705
f_charbig = '#SINGLE#';
35707
# check single-2 success: 1
35708
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
35709
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
35710
UPDATE t1 SET f_int1 = @cur_value2
35711
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
35713
# check single-3 success: 1
35714
SET @cur_value1= -1;
35715
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
35716
UPDATE t1 SET f_int1 = @cur_value1
35717
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
35719
# check single-4 success: 1
35720
SELECT MAX(f_int1) INTO @cur_value FROM t1;
35721
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
35723
# check single-5 success: 1
35724
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
35726
# check single-6 success: 1
35727
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
35729
# check single-7 success: 1
35730
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
35731
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
35732
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
35733
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
35734
f_charbig = '#NULL#';
35736
SET f_int1 = NULL , f_int2 = -@max_row,
35737
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
35738
f_charbig = '#NULL#';
35739
# check null success: 1
35741
# check null-1 success: 1
35742
UPDATE t1 SET f_int1 = -@max_row
35743
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35744
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35746
# check null-2 success: 1
35747
UPDATE t1 SET f_int1 = NULL
35748
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35749
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35751
# check null-3 success: 1
35753
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
35754
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
35756
# check null-4 success: 1
35758
WHERE f_int1 = 0 AND f_int2 = 0
35759
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
35760
AND f_charbig = '#NULL#';
35762
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35763
SELECT f_int1, f_int1, '', '', 'was inserted'
35764
FROM t0_template source_tab
35765
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35767
# check transactions-1 success: 1
35770
# check transactions-2 success: 1
35773
# check transactions-3 success: 1
35774
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35778
# check transactions-4 success: 1
35779
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35780
SELECT f_int1, f_int1, '', '', 'was inserted'
35781
FROM t0_template source_tab
35782
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35784
# check transactions-5 success: 1
35787
# check transactions-6 success: 1
35788
# INFO: Storage engine used for t1 seems to be transactional.
35791
# check transactions-7 success: 1
35792
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35794
SET @@session.sql_mode = 'traditional';
35795
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
35796
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
35797
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
35798
'', '', 'was inserted' FROM t0_template
35799
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
35800
ERROR 22012: Division by 0
35803
# check transactions-8 success: 1
35804
# INFO: Storage engine used for t1 seems to be able to revert
35805
# changes made by the failing statement.
35806
SET @@session.sql_mode = '';
35808
DELETE FROM t1 WHERE f_charbig = 'was inserted';
35810
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
35812
# check special-1 success: 1
35813
UPDATE t1 SET f_charbig = '';
35815
# check special-2 success: 1
35816
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
35817
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
35818
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
35819
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35820
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35821
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35822
'just inserted' FROM t0_template
35823
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35824
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
35826
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35827
f_charbig = 'updated by trigger'
35828
WHERE f_int1 = new.f_int1;
35830
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35831
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35832
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35834
# check trigger-1 success: 1
35835
DROP TRIGGER trg_1;
35836
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35837
f_int2 = CAST(f_char1 AS SIGNED INT),
35838
f_charbig = 'just inserted'
35839
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35841
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35842
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35843
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35844
'just inserted' FROM t0_template
35845
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35846
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
35848
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35849
f_charbig = 'updated by trigger'
35850
WHERE f_int1 = new.f_int1;
35852
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35853
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
35854
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35856
# check trigger-2 success: 1
35857
DROP TRIGGER trg_1;
35858
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35859
f_int2 = CAST(f_char1 AS SIGNED INT),
35860
f_charbig = 'just inserted'
35861
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35863
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35864
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35865
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35866
'just inserted' FROM t0_template
35867
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35868
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35870
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35871
f_charbig = 'updated by trigger'
35872
WHERE f_int1 = new.f_int1;
35874
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35875
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35877
# check trigger-3 success: 1
35878
DROP TRIGGER trg_1;
35879
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35880
f_int2 = CAST(f_char1 AS SIGNED INT),
35881
f_charbig = 'just inserted'
35882
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35884
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35885
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35886
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35887
'just inserted' FROM t0_template
35888
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35889
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
35891
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35892
f_charbig = 'updated by trigger'
35893
WHERE f_int1 = - old.f_int1;
35895
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35896
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35898
# check trigger-4 success: 1
35899
DROP TRIGGER trg_1;
35900
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35901
f_int2 = CAST(f_char1 AS SIGNED INT),
35902
f_charbig = 'just inserted'
35903
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35905
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35906
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35907
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35908
'just inserted' FROM t0_template
35909
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35910
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35912
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35913
f_charbig = 'updated by trigger'
35914
WHERE f_int1 = new.f_int1;
35916
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35917
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35919
# check trigger-5 success: 1
35920
DROP TRIGGER trg_1;
35921
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35922
f_int2 = CAST(f_char1 AS SIGNED INT),
35923
f_charbig = 'just inserted'
35924
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35926
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35927
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35928
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35929
'just inserted' FROM t0_template
35930
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35931
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
35933
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35934
f_charbig = 'updated by trigger'
35935
WHERE f_int1 = - old.f_int1;
35937
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
35938
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35940
# check trigger-6 success: 1
35941
DROP TRIGGER trg_1;
35942
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35943
f_int2 = CAST(f_char1 AS SIGNED INT),
35944
f_charbig = 'just inserted'
35945
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35947
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35948
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35949
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35950
'just inserted' FROM t0_template
35951
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35952
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
35954
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35955
f_charbig = 'updated by trigger'
35956
WHERE f_int1 = - old.f_int1;
35959
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35961
# check trigger-7 success: 1
35962
DROP TRIGGER trg_1;
35963
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35964
f_int2 = CAST(f_char1 AS SIGNED INT),
35965
f_charbig = 'just inserted'
35966
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35968
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35969
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
35970
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
35971
'just inserted' FROM t0_template
35972
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35973
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
35975
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
35976
f_charbig = 'updated by trigger'
35977
WHERE f_int1 = - old.f_int1;
35980
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
35982
# check trigger-8 success: 1
35983
DROP TRIGGER trg_1;
35984
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
35985
f_int2 = CAST(f_char1 AS SIGNED INT),
35986
f_charbig = 'just inserted'
35987
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
35989
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35991
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
35992
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
35994
SET new.f_int1 = old.f_int1 + @max_row,
35995
new.f_int2 = old.f_int2 - @max_row,
35996
new.f_charbig = '####updated per update trigger####';
35999
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36000
f_charbig = '####updated per update statement itself####';
36002
# check trigger-9 success: 1
36003
DROP TRIGGER trg_2;
36004
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36005
f_int2 = CAST(f_char1 AS SIGNED INT),
36006
f_charbig = CONCAT('===',f_char1,'===');
36007
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36009
SET new.f_int1 = new.f_int1 + @max_row,
36010
new.f_int2 = new.f_int2 - @max_row,
36011
new.f_charbig = '####updated per update trigger####';
36014
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36015
f_charbig = '####updated per update statement itself####';
36017
# check trigger-10 success: 1
36018
DROP TRIGGER trg_2;
36019
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36020
f_int2 = CAST(f_char1 AS SIGNED INT),
36021
f_charbig = CONCAT('===',f_char1,'===');
36022
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36024
SET new.f_int1 = @my_max1 + @counter,
36025
new.f_int2 = @my_min2 - @counter,
36026
new.f_charbig = '####updated per insert trigger####';
36027
SET @counter = @counter + 1;
36030
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36031
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36032
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36033
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36034
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36036
DROP TRIGGER trg_3;
36038
# check trigger-11 success: 1
36040
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36041
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36042
AND f_charbig = '####updated per insert trigger####';
36043
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36045
SET new.f_int1 = @my_max1 + @counter,
36046
new.f_int2 = @my_min2 - @counter,
36047
new.f_charbig = '####updated per insert trigger####';
36048
SET @counter = @counter + 1;
36051
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36052
INSERT INTO t1 (f_char1, f_char2, f_charbig)
36053
SELECT CAST(f_int1 AS CHAR),
36054
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36055
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36057
DROP TRIGGER trg_3;
36059
# check trigger-12 success: 1
36061
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36062
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36063
AND f_charbig = '####updated per insert trigger####';
36065
Table Op Msg_type Msg_text
36066
test.t1 analyze status OK
36067
CHECK TABLE t1 EXTENDED;
36068
Table Op Msg_type Msg_text
36069
test.t1 check status OK
36070
CHECKSUM TABLE t1 EXTENDED;
36072
test.t1 <some_value>
36074
Table Op Msg_type Msg_text
36075
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
36076
test.t1 optimize status OK
36077
# check layout success: 1
36078
REPAIR TABLE t1 EXTENDED;
36079
Table Op Msg_type Msg_text
36080
test.t1 repair note The storage engine for the table doesn't support repair
36081
# check layout success: 1
36084
# check TRUNCATE success: 1
36085
# check layout success: 1
36086
# End usability test (inc/partition_check.inc)
36093
f_charbig VARCHAR(1000)
36094
, UNIQUE INDEX uidx1 (f_int1,f_int2), UNIQUE INDEX uidx2 (f_int2,f_int1)
36096
PARTITION BY LIST(ABS(MOD(f_int1,2)))
36097
SUBPARTITION BY KEY(f_int2) SUBPARTITIONS 3
36098
(PARTITION part1 VALUES IN (0),
36099
PARTITION part2 VALUES IN (1),
36100
PARTITION part3 VALUES IN (NULL));
36101
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36102
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36103
WHERE f_int1 BETWEEN 1 AND @max_row_div2 - 1;
36104
ALTER TABLE t1 DROP INDEX uidx1, DROP INDEX uidx2;
36105
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36106
SELECT f_int1,f_int2,f_char1,f_char2,f_charbig FROM t0_template
36107
WHERE f_int1 BETWEEN @max_row_div2 AND @max_row;
36108
# Start usability test (inc/partition_check.inc)
36110
SHOW CREATE TABLE t1;
36112
t1 CREATE TABLE `t1` (
36113
`f_int1` int(11) DEFAULT NULL,
36114
`f_int2` int(11) DEFAULT NULL,
36115
`f_char1` char(20) DEFAULT NULL,
36116
`f_char2` char(20) DEFAULT NULL,
36117
`f_charbig` varchar(1000) DEFAULT NULL
36118
) ENGINE=InnoDB DEFAULT CHARSET=latin1
36119
/*!50100 PARTITION BY LIST (ABS(MOD(f_int1,2)))
36120
SUBPARTITION BY KEY (f_int2)
36122
(PARTITION part1 VALUES IN (0) ENGINE = InnoDB,
36123
PARTITION part2 VALUES IN (1) ENGINE = InnoDB,
36124
PARTITION part3 VALUES IN (NULL) ENGINE = InnoDB) */
36126
# check prerequisites-1 success: 1
36127
# check COUNT(*) success: 1
36128
# check MIN/MAX(f_int1) success: 1
36129
# check MIN/MAX(f_int2) success: 1
36130
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36131
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36132
CAST(f_int1 AS CHAR), 'delete me' FROM t0_template
36133
WHERE f_int1 IN (2,3);
36134
# check prerequisites-3 success: 1
36135
DELETE FROM t1 WHERE f_charbig = 'delete me';
36136
# INFO: Neither f_int1 nor f_int2 nor (f_int1,f_int2) is UNIQUE
36137
# check read via f_int1 success: 1
36138
# check read via f_int2 success: 1
36140
# check multiple-1 success: 1
36141
DELETE FROM t1 WHERE MOD(f_int1,3) = 0;
36143
# check multiple-2 success: 1
36144
INSERT INTO t1 SELECT * FROM t0_template
36145
WHERE MOD(f_int1,3) = 0;
36147
# check multiple-3 success: 1
36148
UPDATE t1 SET f_int1 = f_int1 + @max_row
36149
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4
36150
AND @max_row_div2 + @max_row_div4;
36152
# check multiple-4 success: 1
36154
WHERE f_int1 BETWEEN @max_row_div2 - @max_row_div4 + @max_row
36155
AND @max_row_div2 + @max_row_div4 + @max_row;
36157
# check multiple-5 success: 1
36158
SELECT MIN(f_int1) - 1 INTO @cur_value FROM t1;
36160
SET f_int1 = @cur_value , f_int2 = @cur_value,
36161
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
36162
f_charbig = '#SINGLE#';
36164
# check single-1 success: 1
36165
SELECT MAX(f_int1) + 1 INTO @cur_value FROM t1;
36167
SET f_int1 = @cur_value , f_int2 = @cur_value,
36168
f_char1 = CAST(@cur_value AS CHAR), f_char2 = CAST(@cur_value AS CHAR),
36169
f_charbig = '#SINGLE#';
36171
# check single-2 success: 1
36172
SELECT MIN(f_int1) INTO @cur_value1 FROM t1;
36173
SELECT MAX(f_int1) + 1 INTO @cur_value2 FROM t1;
36174
UPDATE t1 SET f_int1 = @cur_value2
36175
WHERE f_int1 = @cur_value1 AND f_charbig = '#SINGLE#';
36177
# check single-3 success: 1
36178
SET @cur_value1= -1;
36179
SELECT MAX(f_int1) INTO @cur_value2 FROM t1;
36180
UPDATE t1 SET f_int1 = @cur_value1
36181
WHERE f_int1 = @cur_value2 AND f_charbig = '#SINGLE#';
36183
# check single-4 success: 1
36184
SELECT MAX(f_int1) INTO @cur_value FROM t1;
36185
DELETE FROM t1 WHERE f_int1 = @cur_value AND f_charbig = '#SINGLE#';
36187
# check single-5 success: 1
36188
DELETE FROM t1 WHERE f_int1 = -1 AND f_charbig = '#SINGLE#';
36190
# check single-6 success: 1
36191
INSERT INTO t1 SET f_int1 = @max_int_4 , f_int2 = @max_int_4, f_charbig = '#2147483647##';
36193
# check single-7 success: 1
36194
DELETE FROM t1 WHERE f_charbig = '#2147483647##';
36195
DELETE FROM t1 WHERE f_int1 IS NULL OR f_int1 = 0;
36196
INSERT t1 SET f_int1 = 0 , f_int2 = 0,
36197
f_char1 = CAST(0 AS CHAR), f_char2 = CAST(0 AS CHAR),
36198
f_charbig = '#NULL#';
36200
SET f_int1 = NULL , f_int2 = -@max_row,
36201
f_char1 = CAST(-@max_row AS CHAR), f_char2 = CAST(-@max_row AS CHAR),
36202
f_charbig = '#NULL#';
36203
# check null success: 1
36205
# check null-1 success: 1
36206
UPDATE t1 SET f_int1 = -@max_row
36207
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
36208
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
36210
# check null-2 success: 1
36211
UPDATE t1 SET f_int1 = NULL
36212
WHERE f_int1 = -@max_row AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
36213
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
36215
# check null-3 success: 1
36217
WHERE f_int1 IS NULL AND f_int2 = -@max_row AND f_char1 = CAST(-@max_row AS CHAR)
36218
AND f_char2 = CAST(-@max_row AS CHAR) AND f_charbig = '#NULL#';
36220
# check null-4 success: 1
36222
WHERE f_int1 = 0 AND f_int2 = 0
36223
AND f_char1 = CAST(0 AS CHAR) AND f_char2 = CAST(0 AS CHAR)
36224
AND f_charbig = '#NULL#';
36226
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36227
SELECT f_int1, f_int1, '', '', 'was inserted'
36228
FROM t0_template source_tab
36229
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36231
# check transactions-1 success: 1
36234
# check transactions-2 success: 1
36237
# check transactions-3 success: 1
36238
DELETE FROM t1 WHERE f_charbig = 'was inserted';
36242
# check transactions-4 success: 1
36243
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36244
SELECT f_int1, f_int1, '', '', 'was inserted'
36245
FROM t0_template source_tab
36246
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36248
# check transactions-5 success: 1
36251
# check transactions-6 success: 1
36252
# INFO: Storage engine used for t1 seems to be transactional.
36255
# check transactions-7 success: 1
36256
DELETE FROM t1 WHERE f_charbig = 'was inserted';
36258
SET @@session.sql_mode = 'traditional';
36259
SELECT @max_row_div2 + @max_row_div4 - @max_row_div4 + 1 INTO @exp_inserted_rows;
36260
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36261
SELECT IF(f_int1 = @max_row_div2,f_int1 / 0,f_int1),f_int1,
36262
'', '', 'was inserted' FROM t0_template
36263
WHERE f_int1 BETWEEN @max_row_div4 AND @max_row_div2 + @max_row_div4;
36264
ERROR 22012: Division by 0
36267
# check transactions-8 success: 1
36268
# INFO: Storage engine used for t1 seems to be able to revert
36269
# changes made by the failing statement.
36270
SET @@session.sql_mode = '';
36272
DELETE FROM t1 WHERE f_charbig = 'was inserted';
36274
UPDATE t1 SET f_charbig = REPEAT('b', 1000);
36276
# check special-1 success: 1
36277
UPDATE t1 SET f_charbig = '';
36279
# check special-2 success: 1
36280
UPDATE t1 SET f_charbig = CONCAT('===',CAST(f_int1 AS CHAR),'===');
36281
INSERT INTO t1(f_int1,f_int2,f_char1,f_char2,f_charbig)
36282
SELECT f_int1,f_int2,f_char1,f_char2,'just inserted' FROM t0_template
36283
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36284
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36285
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36286
'just inserted' FROM t0_template
36287
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36288
CREATE TRIGGER trg_1 BEFORE INSERT ON t0_aux FOR EACH ROW
36290
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36291
f_charbig = 'updated by trigger'
36292
WHERE f_int1 = new.f_int1;
36294
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36295
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36296
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36298
# check trigger-1 success: 1
36299
DROP TRIGGER trg_1;
36300
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36301
f_int2 = CAST(f_char1 AS SIGNED INT),
36302
f_charbig = 'just inserted'
36303
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36305
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36306
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36307
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36308
'just inserted' FROM t0_template
36309
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36310
CREATE TRIGGER trg_1 AFTER INSERT ON t0_aux FOR EACH ROW
36312
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36313
f_charbig = 'updated by trigger'
36314
WHERE f_int1 = new.f_int1;
36316
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36317
SELECT f_int1,f_int2,f_char1,f_char2,NULL FROM t0_template
36318
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36320
# check trigger-2 success: 1
36321
DROP TRIGGER trg_1;
36322
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36323
f_int2 = CAST(f_char1 AS SIGNED INT),
36324
f_charbig = 'just inserted'
36325
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36327
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36328
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36329
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36330
'just inserted' FROM t0_template
36331
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36332
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36334
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36335
f_charbig = 'updated by trigger'
36336
WHERE f_int1 = new.f_int1;
36338
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36339
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36341
# check trigger-3 success: 1
36342
DROP TRIGGER trg_1;
36343
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36344
f_int2 = CAST(f_char1 AS SIGNED INT),
36345
f_charbig = 'just inserted'
36346
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36348
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36349
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36350
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36351
'just inserted' FROM t0_template
36352
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36353
CREATE TRIGGER trg_1 BEFORE UPDATE ON t0_aux FOR EACH ROW
36355
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36356
f_charbig = 'updated by trigger'
36357
WHERE f_int1 = - old.f_int1;
36359
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36360
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36362
# check trigger-4 success: 1
36363
DROP TRIGGER trg_1;
36364
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36365
f_int2 = CAST(f_char1 AS SIGNED INT),
36366
f_charbig = 'just inserted'
36367
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36369
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36370
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36371
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36372
'just inserted' FROM t0_template
36373
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36374
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36376
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36377
f_charbig = 'updated by trigger'
36378
WHERE f_int1 = new.f_int1;
36380
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36381
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36383
# check trigger-5 success: 1
36384
DROP TRIGGER trg_1;
36385
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36386
f_int2 = CAST(f_char1 AS SIGNED INT),
36387
f_charbig = 'just inserted'
36388
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36390
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36391
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36392
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36393
'just inserted' FROM t0_template
36394
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36395
CREATE TRIGGER trg_1 AFTER UPDATE ON t0_aux FOR EACH ROW
36397
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36398
f_charbig = 'updated by trigger'
36399
WHERE f_int1 = - old.f_int1;
36401
UPDATE t0_aux SET f_int1 = - f_int1, f_int2 = - f_int2
36402
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36404
# check trigger-6 success: 1
36405
DROP TRIGGER trg_1;
36406
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36407
f_int2 = CAST(f_char1 AS SIGNED INT),
36408
f_charbig = 'just inserted'
36409
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36411
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36412
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36413
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36414
'just inserted' FROM t0_template
36415
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36416
CREATE TRIGGER trg_1 BEFORE DELETE ON t0_aux FOR EACH ROW
36418
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36419
f_charbig = 'updated by trigger'
36420
WHERE f_int1 = - old.f_int1;
36423
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36425
# check trigger-7 success: 1
36426
DROP TRIGGER trg_1;
36427
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36428
f_int2 = CAST(f_char1 AS SIGNED INT),
36429
f_charbig = 'just inserted'
36430
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36432
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36433
INSERT INTO t0_aux(f_int1,f_int2,f_char1,f_char2,f_charbig)
36434
SELECT -f_int1,-f_int1,CAST(-f_int1 AS CHAR),CAST(-f_int1 AS CHAR),
36435
'just inserted' FROM t0_template
36436
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36437
CREATE TRIGGER trg_1 AFTER DELETE ON t0_aux FOR EACH ROW
36439
UPDATE t1 SET f_int1 = -f_int1, f_int2 = -f_int2,
36440
f_charbig = 'updated by trigger'
36441
WHERE f_int1 = - old.f_int1;
36444
WHERE f_int1 IN (- (@max_row_div2 - 1),- @max_row_div2,- (@max_row_div2 + 1));
36446
# check trigger-8 success: 1
36447
DROP TRIGGER trg_1;
36448
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36449
f_int2 = CAST(f_char1 AS SIGNED INT),
36450
f_charbig = 'just inserted'
36451
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT);
36453
WHERE ABS(f_int1) BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36455
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1;
36456
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36458
SET new.f_int1 = old.f_int1 + @max_row,
36459
new.f_int2 = old.f_int2 - @max_row,
36460
new.f_charbig = '####updated per update trigger####';
36463
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36464
f_charbig = '####updated per update statement itself####';
36466
# check trigger-9 success: 1
36467
DROP TRIGGER trg_2;
36468
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36469
f_int2 = CAST(f_char1 AS SIGNED INT),
36470
f_charbig = CONCAT('===',f_char1,'===');
36471
CREATE TRIGGER trg_2 BEFORE UPDATE ON t1 FOR EACH ROW
36473
SET new.f_int1 = new.f_int1 + @max_row,
36474
new.f_int2 = new.f_int2 - @max_row,
36475
new.f_charbig = '####updated per update trigger####';
36478
SET f_int1 = f_int1 + @max_row, f_int2 = f_int2 - @max_row,
36479
f_charbig = '####updated per update statement itself####';
36481
# check trigger-10 success: 1
36482
DROP TRIGGER trg_2;
36483
UPDATE t1 SET f_int1 = CAST(f_char1 AS SIGNED INT),
36484
f_int2 = CAST(f_char1 AS SIGNED INT),
36485
f_charbig = CONCAT('===',f_char1,'===');
36486
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36488
SET new.f_int1 = @my_max1 + @counter,
36489
new.f_int2 = @my_min2 - @counter,
36490
new.f_charbig = '####updated per insert trigger####';
36491
SET @counter = @counter + 1;
36494
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36495
INSERT INTO t1 (f_int1, f_int2, f_char1, f_char2, f_charbig)
36496
SELECT f_int1, f_int1, CAST(f_int1 AS CHAR),
36497
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36498
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36500
DROP TRIGGER trg_3;
36502
# check trigger-11 success: 1
36504
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36505
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36506
AND f_charbig = '####updated per insert trigger####';
36507
CREATE TRIGGER trg_3 BEFORE INSERT ON t1 FOR EACH ROW
36509
SET new.f_int1 = @my_max1 + @counter,
36510
new.f_int2 = @my_min2 - @counter,
36511
new.f_charbig = '####updated per insert trigger####';
36512
SET @counter = @counter + 1;
36515
SELECT MAX(f_int1), MIN(f_int2) INTO @my_max1,@my_min2 FROM t1;
36516
INSERT INTO t1 (f_char1, f_char2, f_charbig)
36517
SELECT CAST(f_int1 AS CHAR),
36518
CAST(f_int1 AS CHAR), 'just inserted' FROM t0_template
36519
WHERE f_int1 BETWEEN @max_row_div2 - 1 AND @max_row_div2 + 1
36521
DROP TRIGGER trg_3;
36523
# check trigger-12 success: 1
36525
WHERE f_int1 <> CAST(f_char1 AS SIGNED INT)
36526
AND f_int2 <> CAST(f_char1 AS SIGNED INT)
36527
AND f_charbig = '####updated per insert trigger####';
36529
Table Op Msg_type Msg_text
36530
test.t1 analyze status OK
36531
CHECK TABLE t1 EXTENDED;
36532
Table Op Msg_type Msg_text
36533
test.t1 check status OK
36534
CHECKSUM TABLE t1 EXTENDED;
36536
test.t1 <some_value>
36538
Table Op Msg_type Msg_text
36539
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
36540
test.t1 optimize status OK
36541
# check layout success: 1
36542
REPAIR TABLE t1 EXTENDED;
36543
Table Op Msg_type Msg_text
36544
test.t1 repair note The storage engine for the table doesn't support repair
36545
# check layout success: 1
36548
# check TRUNCATE success: 1
36549
# check layout success: 1
36550
# End usability test (inc/partition_check.inc)
36552
DROP VIEW IF EXISTS v1;
36553
DROP TABLE IF EXISTS t1;
36554
DROP TABLE IF EXISTS t0_aux;
36555
DROP TABLE IF EXISTS t0_definition;
36556
DROP TABLE IF EXISTS t0_template;